@khoavu882/doflow 2.0.0 → 2.0.1

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 (113) 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/settings/settings.json +8 -9
  9. package/core/harnesses/codex/hooks/hooks.json +0 -10
  10. package/core/harnesses/codex/hooks/mcp-tool-guard.sh +4 -1
  11. package/core/harnesses/codex/hooks/pre-implement-gate.sh +4 -1
  12. package/core/harnesses/copilot/hooks/doflow-lib.sh +4 -3
  13. package/core/harnesses/copilot/hooks/doflow.json +0 -6
  14. package/core/harnesses/kiro/agents/doflow.json +0 -10
  15. package/core/harnesses/kiro/hooks/doflow.json +0 -10
  16. package/core/harnesses/kiro/hooks/mcp-tool-guard.sh +7 -3
  17. package/core/harnesses/kiro/hooks/pre-implement-gate.sh +7 -3
  18. package/core/harnesses/pi/extensions/doflow-guard.js +3 -2
  19. package/core/harnesses/shared/hooks/ENVELOPE_MIGRATION.md +1 -1
  20. package/core/harnesses/shared/hooks/adapters/antigravity.js +1 -1
  21. package/core/harnesses/shared/hooks/bridge/bridge.sh +35 -25
  22. package/core/harnesses/shared/hooks/bridge/envelope.jq +1 -1
  23. package/core/harnesses/shared/hooks/bridge/respond.sh +6 -0
  24. package/core/harnesses/shared/hooks/policies/capture-failure.sh +1 -1
  25. package/core/harnesses/shared/hooks/policies/deny-json.sh +23 -1
  26. package/core/harnesses/shared/hooks/policies/mcp-policy.conf +1 -1
  27. package/core/harnesses/shared/hooks/policies/mcp-tool-guard.sh +4 -6
  28. package/core/harnesses/shared/hooks/policies/pre-implementation-gate.sh +20 -21
  29. package/core/harnesses/shared/hooks/policies/stop-check.sh +7 -6
  30. package/core/harnesses/shared/hooks/policies/subagent-audit.sh +1 -1
  31. package/core/harnesses/shared/hooks/stream-hook-runner.js +11 -12
  32. package/core/registry/contracts.json +1 -1
  33. package/core/registry/contribution-points.json +5 -2
  34. package/core/registry/gates.json +5 -5
  35. package/core/registry/harnesses.json +9 -9
  36. package/core/registry/intake.json +53 -0
  37. package/core/registry/lifecycle.json +133 -711
  38. package/core/registry/package-templates/intake-category/files/category.json +8 -0
  39. package/core/registry/package-templates/intake-category/template.json +4 -0
  40. package/core/registry/packages/doflow/doflow-package.json +2 -2
  41. package/core/registry/rules.json +8 -8
  42. package/core/registry/settings.json +0 -4
  43. package/core/registry/storage.json +8 -0
  44. package/core/registry/telemetry.json +1 -1
  45. package/core/registry/verification.json +0 -5
  46. package/core/shared/guidance/references/DOFLOW_CHAIN.md +4 -4
  47. package/core/shared/guidance/references/ORCHESTRATION.md +2 -0
  48. package/core/shared/guidance/references/WORKFLOW_HANDOFF.md +19 -1
  49. package/core/shared/guidance/rules/RULES.md +2 -2
  50. package/core/shared/scripts/doflow/bash/validate-artifacts.sh +1 -1
  51. package/core/shared/scripts/doflow/bin/doflow-run +5 -2
  52. package/core/shared/skills/do/SKILL.md +3 -3
  53. package/core/shared/skills/do-brainstorm/SKILL.md +26 -24
  54. package/core/shared/skills/do-brainstorm/references/handoff_branches.md +2 -1
  55. package/core/shared/skills/do-code-review/SKILL.md +7 -4
  56. package/core/shared/skills/do-design/SKILL.md +5 -3
  57. package/core/shared/skills/do-diagnose/SKILL.md +4 -2
  58. package/core/shared/skills/do-document/SKILL.md +1 -0
  59. package/core/shared/skills/do-document/references/embedded-research.md +1 -1
  60. package/core/shared/skills/do-execute-plan/SKILL.md +4 -2
  61. package/core/shared/skills/do-execute-plan/references/run_position.md +3 -1
  62. package/core/shared/skills/do-execute-plan/references/scaffold.md +1 -1
  63. package/core/shared/skills/do-flow/SKILL.md +4 -4
  64. package/core/shared/skills/do-flow/references/task_classes.md +5 -5
  65. package/core/shared/skills/do-implement/SKILL.md +9 -7
  66. package/core/shared/skills/do-plan/SKILL.md +9 -6
  67. package/core/shared/workflows/do-flow-chain.md +2 -0
  68. package/package.json +1 -1
  69. package/src/adapters/claude/index.js +23 -2
  70. package/src/adapters/codex/hooks.js +39 -3
  71. package/src/adapters/codex/index.js +13 -0
  72. package/src/adapters/copy-tree.js +1 -2
  73. package/src/cli/commands/status.js +1 -1
  74. package/src/cli/index.js +20 -8
  75. package/src/cli/runtime-commands.js +12 -4
  76. package/src/lifecycle/coverage.js +1 -30
  77. package/src/lifecycle/hook-tier.js +2 -2
  78. package/src/release/docs-blocks.js +32 -52
  79. package/src/runtime/context/pointer.js +67 -12
  80. package/src/runtime/context-pack.js +4 -1
  81. package/src/runtime/evidence-ledger.js +18 -0
  82. package/src/runtime/health.js +59 -1
  83. package/src/runtime/implementation-gate.js +4 -4
  84. package/src/runtime/intake/engine.js +677 -0
  85. package/src/runtime/intake/index.js +136 -0
  86. package/src/runtime/intake/manifest.js +140 -0
  87. package/src/runtime/intake/taxonomy.js +206 -0
  88. package/src/runtime/lifecycle/cli.js +73 -5
  89. package/src/runtime/lifecycle/followup.js +32 -6
  90. package/src/runtime/lifecycle/overview.js +2 -1
  91. package/src/runtime/packages/points.js +10 -0
  92. package/src/runtime/roadmap/attendance.js +137 -0
  93. package/src/runtime/roadmap/gates.js +6 -3
  94. package/src/runtime/roadmap/loop.js +113 -30
  95. package/src/runtime/roadmap/merge.js +17 -8
  96. package/src/runtime/roadmap/rows.js +13 -4
  97. package/src/runtime/roadmap/seed.js +153 -41
  98. package/src/runtime/roadmap/worktree-cleanup.js +147 -0
  99. package/src/runtime/settings/registry.js +1 -1
  100. package/src/runtime/slots.js +1 -1
  101. package/src/runtime/task-classifier.js +39 -4
  102. package/src/runtime/task-state.js +2 -3
  103. package/src/runtime/verb-view.js +267 -0
  104. package/src/runtime/verification/engine.js +0 -45
  105. package/src/runtime/worker/launch.js +5 -37
  106. package/src/runtime/worker/readiness.js +2 -2
  107. package/src/runtime/workflow-orchestrator.js +33 -5
  108. package/core/harnesses/claude/hooks/pre-bash-guard.sh +0 -10
  109. package/core/harnesses/codex/hooks/pre-bash-guard.sh +0 -10
  110. package/core/harnesses/copilot/hooks/doflow-pre-bash-guard.sh +0 -9
  111. package/core/harnesses/kiro/hooks/pre-bash-guard.sh +0 -25
  112. package/core/harnesses/shared/hooks/policies/blocked-patterns.conf +0 -105
  113. package/core/harnesses/shared/hooks/policies/pre-bash-guard.sh +0 -579
@@ -42,47 +42,6 @@
42
42
  }
43
43
  }
44
44
  },
45
- {
46
- "id": "pre-bash-guard",
47
- "intent": "block-destructive-commands",
48
- "tier": "enhanced",
49
- "requires": [
50
- "hooks"
51
- ],
52
- "mappings": {
53
- "claude": {
54
- "event": "PreToolUse",
55
- "status": "supported"
56
- },
57
- "codex": {
58
- "event": "PreToolUse",
59
- "status": "different",
60
- "prerequisites": [
61
- "hook-review"
62
- ]
63
- },
64
- "opencode": {
65
- "status": "unavailable",
66
- "fallback": "guidance"
67
- },
68
- "pi": {
69
- "event": "tool_call",
70
- "status": "different"
71
- },
72
- "copilot": {
73
- "event": "PreToolUse",
74
- "status": "supported"
75
- },
76
- "kiro": {
77
- "event": "PreToolUse",
78
- "status": "supported"
79
- },
80
- "antigravity": {
81
- "status": "unavailable",
82
- "fallback": "guidance"
83
- }
84
- }
85
- },
86
45
  {
87
46
  "id": "session-context",
88
47
  "intent": "capture-session-context",
@@ -236,11 +195,11 @@
236
195
  "timing": "pre-tool",
237
196
  "profile": "any",
238
197
  "wired": true,
239
- "configSource": "core/harnesses/claude/settings/settings.json:89",
198
+ "configSource": "core/harnesses/claude/settings/settings.json:97",
240
199
  "harnessVersion": {
241
200
  "tested": "2.1.287 (Claude Code)"
242
201
  },
243
- "class": "blocking",
202
+ "class": "advisory",
244
203
  "verification": "verified",
245
204
  "prerequisites": [],
246
205
  "covers": [],
@@ -272,7 +231,7 @@
272
231
  "harnessVersion": {
273
232
  "tested": "codex-cli 0.162.1"
274
233
  },
275
- "class": "blocking",
234
+ "class": "advisory",
276
235
  "verification": "verified",
277
236
  "prerequisites": [
278
237
  "hook-review"
@@ -329,11 +288,11 @@
329
288
  "timing": "pre-tool",
330
289
  "profile": "cli-extension",
331
290
  "wired": true,
332
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
291
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
333
292
  "harnessVersion": {
334
293
  "tested": "1.1.0"
335
294
  },
336
- "class": "blocking",
295
+ "class": "advisory",
337
296
  "verification": "verified",
338
297
  "prerequisites": [],
339
298
  "covers": [],
@@ -403,7 +362,7 @@
403
362
  "timing": "pre-tool",
404
363
  "profile": "user-headless",
405
364
  "wired": true,
406
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
365
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
407
366
  "harnessVersion": {
408
367
  "tested": "1.1.0"
409
368
  },
@@ -443,7 +402,7 @@
443
402
  "timing": "pre-tool",
444
403
  "profile": "project-headless",
445
404
  "wired": true,
446
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
405
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
447
406
  "harnessVersion": {
448
407
  "tested": "1.1.0"
449
408
  },
@@ -519,187 +478,6 @@
519
478
  }
520
479
  ]
521
480
  },
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
481
  {
704
482
  "policy": "session-context",
705
483
  "harness": "pi",
@@ -735,7 +513,7 @@
735
513
  "timing": "pre-tool",
736
514
  "profile": "cli-extension",
737
515
  "wired": true,
738
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
516
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
739
517
  "harnessVersion": {
740
518
  "tested": "1.1.0"
741
519
  },
@@ -799,7 +577,7 @@
799
577
  "timing": "pre-tool",
800
578
  "profile": "user-headless",
801
579
  "wired": true,
802
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
580
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
803
581
  "harnessVersion": {
804
582
  "tested": "1.1.0"
805
583
  },
@@ -837,7 +615,7 @@
837
615
  "timing": "pre-tool",
838
616
  "profile": "project-headless",
839
617
  "wired": true,
840
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
618
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
841
619
  "harnessVersion": {
842
620
  "tested": "1.1.0"
843
621
  },
@@ -899,352 +677,107 @@
899
677
  },
900
678
  {
901
679
  "kind": "doc",
902
- "locator": "@earendil-works/pi-coding-agent@1.1.0 docs/extensions.md:169",
903
- "date": "2026-10-14"
904
- },
905
- {
906
- "kind": "fixture",
907
- "locator": "test/fixtures/hooks/pi/tool_call/nested-mcp-deny.json",
908
- "date": "2026-10-14"
909
- }
910
- ]
911
- },
912
- {
913
- "policy": "stop-check",
914
- "harness": "pi",
915
- "event": "*",
916
- "timing": "stop",
917
- "profile": "any",
918
- "wired": false,
919
- "configSource": null,
920
- "harnessVersion": {
921
- "tested": "1.1.0"
922
- },
923
- "class": "unsupported",
924
- "verification": "unverified",
925
- "prerequisites": [],
926
- "covers": [],
927
- "doesNotCover": [],
928
- "caveats": [
929
- "not wired for this harness mapping",
930
- "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"
931
- ],
932
- "provenance": [
933
- {
934
- "kind": "doc",
935
- "locator": "core/registry/lifecycle.json: policy stop-check mapping for pi",
936
- "date": "2026-10-14"
937
- }
938
- ]
939
- },
940
- {
941
- "policy": "pre-implementation-gate",
942
- "harness": "copilot",
943
- "event": "PreToolUse",
944
- "timing": "pre-tool",
945
- "profile": "any",
946
- "wired": true,
947
- "configSource": "core/harnesses/copilot/hooks/doflow.json:12",
948
- "harnessVersion": {
949
- "tested": "GitHub Copilot CLI 1.0.103"
950
- },
951
- "class": "blocking",
952
- "verification": "verified",
953
- "prerequisites": [],
954
- "covers": [],
955
- "doesNotCover": [
956
- "writes via shell commands"
957
- ],
958
- "caveats": [
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."
961
- ],
962
- "provenance": [
963
- {
964
- "kind": "doc",
965
- "locator": "https://docs.github.com/en/copilot/reference/hooks-reference",
966
- "date": "2026-10-27"
967
- },
968
- {
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"
982
- }
983
- ]
984
- },
985
- {
986
- "policy": "pre-implementation-gate",
987
- "harness": "kiro",
988
- "event": "PreToolUse",
989
- "timing": "pre-tool",
990
- "profile": "ide",
991
- "wired": true,
992
- "configSource": "core/harnesses/kiro/hooks/doflow.json:15",
993
- "harnessVersion": {
994
- "tested": "kiro-cli 2.29.1"
995
- },
996
- "class": "blocking",
997
- "verification": "verified",
998
- "prerequisites": [],
999
- "covers": [],
1000
- "doesNotCover": [
1001
- "writes via shell commands"
1002
- ],
1003
- "caveats": [],
1004
- "provenance": [
1005
- {
1006
- "kind": "doc",
1007
- "locator": "https://kiro.dev/docs/hooks/types/",
1008
- "date": "2026-10-12"
1009
- },
1010
- {
1011
- "kind": "fixture",
1012
- "locator": "test/fixtures/hooks/kiro/pre-implement-gate/deny.json",
1013
- "date": "2026-10-14"
1014
- }
1015
- ]
1016
- },
1017
- {
1018
- "policy": "pre-implementation-gate",
1019
- "harness": "kiro",
1020
- "event": "PreToolUse",
1021
- "timing": "pre-tool",
1022
- "profile": "cli-v3",
1023
- "wired": true,
1024
- "configSource": "core/harnesses/kiro/hooks/doflow.json:15",
1025
- "harnessVersion": {
1026
- "tested": "kiro-cli 2.29.1"
1027
- },
1028
- "class": "blocking",
1029
- "verification": "verified",
1030
- "prerequisites": [],
1031
- "covers": [],
1032
- "doesNotCover": [
1033
- "writes via shell commands"
1034
- ],
1035
- "caveats": [],
1036
- "provenance": [
1037
- {
1038
- "kind": "doc",
1039
- "locator": "https://kiro.dev/docs/hooks/types/",
1040
- "date": "2026-10-12"
1041
- },
1042
- {
1043
- "kind": "fixture",
1044
- "locator": "test/fixtures/hooks/kiro/pre-implement-gate/deny.json",
1045
- "date": "2026-10-14"
1046
- }
1047
- ]
1048
- },
1049
- {
1050
- "policy": "pre-implementation-gate",
1051
- "harness": "kiro",
1052
- "event": "PreToolUse",
1053
- "timing": "pre-tool",
1054
- "profile": "cli-v3-agent",
1055
- "wired": true,
1056
- "configSource": "core/harnesses/kiro/agents/doflow.json:11",
1057
- "harnessVersion": {
1058
- "tested": "kiro-cli 2.29.1"
1059
- },
1060
- "class": "blocking",
1061
- "verification": "verified",
1062
- "prerequisites": [],
1063
- "covers": [],
1064
- "doesNotCover": [
1065
- "writes via shell commands"
1066
- ],
1067
- "caveats": [],
1068
- "provenance": [
1069
- {
1070
- "kind": "doc",
1071
- "locator": "https://kiro.dev/docs/hooks/types/",
1072
- "date": "2026-10-12"
1073
- },
1074
- {
1075
- "kind": "fixture",
1076
- "locator": "test/fixtures/hooks/kiro/pre-implement-gate/agent-deny.json",
1077
- "date": "2026-10-14"
1078
- }
1079
- ]
1080
- },
1081
- {
1082
- "policy": "pre-implementation-gate",
1083
- "harness": "kiro",
1084
- "event": "PreToolUse",
1085
- "timing": "pre-tool",
1086
- "profile": "cli-2x-agent",
1087
- "wired": true,
1088
- "configSource": "core/harnesses/kiro/hooks/doflow.json:15",
1089
- "harnessVersion": {
1090
- "tested": "kiro-cli 2.29.1"
1091
- },
1092
- "class": "blocking",
1093
- "verification": "verified",
1094
- "prerequisites": [],
1095
- "covers": [],
1096
- "doesNotCover": [
1097
- "writes via shell commands"
1098
- ],
1099
- "caveats": [],
1100
- "provenance": [
1101
- {
1102
- "kind": "doc",
1103
- "locator": "https://kiro.dev/docs/hooks/types/",
1104
- "date": "2026-10-12"
1105
- },
1106
- {
1107
- "kind": "fixture",
1108
- "locator": "test/fixtures/hooks/kiro/pre-implement-gate/agent-deny.json",
1109
- "date": "2026-10-14"
1110
- }
1111
- ]
1112
- },
1113
- {
1114
- "policy": "pre-implementation-gate",
1115
- "harness": "antigravity",
1116
- "event": "PreToolUse",
1117
- "timing": "pre-tool",
1118
- "profile": "any",
1119
- "wired": true,
1120
- "configSource": "src/adapters/antigravity/index.js:60",
1121
- "harnessVersion": {
1122
- "tested": "1.3.3"
1123
- },
1124
- "class": "blocking",
1125
- "verification": "verified",
1126
- "prerequisites": [],
1127
- "covers": [],
1128
- "doesNotCover": [
1129
- "writes via shell commands"
1130
- ],
1131
- "caveats": [],
1132
- "provenance": [
1133
- {
1134
- "kind": "doc",
1135
- "locator": "https://antigravity.google/docs/hooks/",
1136
- "date": "2026-10-12"
1137
- },
1138
- {
1139
- "kind": "fixture",
1140
- "locator": "test/fixtures/hooks/antigravity/pre-implement-gate/deny-missing-design.json",
1141
- "date": "2026-10-14"
1142
- }
1143
- ]
1144
- },
1145
- {
1146
- "policy": "pre-bash-guard",
1147
- "harness": "claude",
1148
- "event": "PreToolUse",
1149
- "timing": "pre-tool",
1150
- "profile": "any",
1151
- "wired": true,
1152
- "configSource": "core/harnesses/claude/settings/settings.json:89",
1153
- "harnessVersion": {
1154
- "tested": "2.1.287 (Claude Code)"
1155
- },
1156
- "class": "blocking",
1157
- "verification": "verified",
1158
- "prerequisites": [],
1159
- "covers": [],
1160
- "doesNotCover": [],
1161
- "caveats": [],
1162
- "provenance": [
1163
- {
1164
- "kind": "doc",
1165
- "locator": "https://code.claude.com/docs/en/hooks",
1166
- "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
- }
1173
- ]
1174
- },
1175
- {
1176
- "policy": "pre-bash-guard",
1177
- "harness": "codex",
1178
- "event": "PreToolUse",
1179
- "timing": "pre-tool",
1180
- "profile": "any",
1181
- "wired": true,
1182
- "configSource": "core/harnesses/codex/hooks/hooks.json:45",
1183
- "harnessVersion": {
1184
- "tested": "codex-cli 0.162.1"
1185
- },
1186
- "class": "blocking",
1187
- "verification": "verified",
1188
- "prerequisites": [
1189
- "hook-review"
1190
- ],
1191
- "covers": [],
1192
- "doesNotCover": [],
1193
- "caveats": [],
1194
- "provenance": [
1195
- {
1196
- "kind": "doc",
1197
- "locator": "https://learn.chatgpt.com/docs/hooks",
1198
- "date": "2026-10-12"
680
+ "locator": "@earendil-works/pi-coding-agent@1.1.0 docs/extensions.md:169",
681
+ "date": "2026-10-14"
1199
682
  },
1200
683
  {
1201
684
  "kind": "fixture",
1202
- "locator": "test/fixtures/hooks/codex/pre-bash-guard/deny.json",
685
+ "locator": "test/fixtures/hooks/pi/tool_call/nested-mcp-deny.json",
1203
686
  "date": "2026-10-14"
1204
687
  }
1205
688
  ]
1206
689
  },
1207
690
  {
1208
- "policy": "pre-bash-guard",
1209
- "harness": "opencode",
691
+ "policy": "stop-check",
692
+ "harness": "pi",
1210
693
  "event": "*",
1211
- "timing": "pre-tool",
694
+ "timing": "stop",
1212
695
  "profile": "any",
1213
696
  "wired": false,
1214
697
  "configSource": null,
1215
698
  "harnessVersion": {
1216
- "tested": "1.18.30"
699
+ "tested": "1.1.0"
1217
700
  },
1218
701
  "class": "unsupported",
1219
702
  "verification": "unverified",
1220
703
  "prerequisites": [],
1221
704
  "covers": [],
1222
705
  "doesNotCover": [],
1223
- "caveats": [],
706
+ "caveats": [
707
+ "not wired for this harness mapping",
708
+ "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"
709
+ ],
1224
710
  "provenance": [
1225
711
  {
1226
712
  "kind": "doc",
1227
- "locator": "core/registry/harnesses.json: opencode harness; core/registry/contracts.json: unavailable hook mapping",
1228
- "date": "2026-10-12"
713
+ "locator": "core/registry/lifecycle.json: policy stop-check mapping for pi",
714
+ "date": "2026-10-14"
715
+ }
716
+ ]
717
+ },
718
+ {
719
+ "policy": "pre-implementation-gate",
720
+ "harness": "copilot",
721
+ "event": "PreToolUse",
722
+ "timing": "pre-tool",
723
+ "profile": "any",
724
+ "wired": true,
725
+ "configSource": "core/harnesses/copilot/hooks/doflow.json:12",
726
+ "harnessVersion": {
727
+ "tested": "GitHub Copilot CLI 1.0.103"
728
+ },
729
+ "class": "advisory",
730
+ "verification": "verified",
731
+ "prerequisites": [],
732
+ "covers": [],
733
+ "doesNotCover": [
734
+ "writes via shell commands"
735
+ ],
736
+ "caveats": [
737
+ "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`",
738
+ "version-drift:GitHub Copilot CLI 1.0.104."
739
+ ],
740
+ "provenance": [
741
+ {
742
+ "kind": "doc",
743
+ "locator": "https://docs.github.com/en/copilot/reference/hooks-reference",
744
+ "date": "2026-10-27"
745
+ },
746
+ {
747
+ "kind": "fixture",
748
+ "locator": "test/fixtures/hooks/copilot/pre-implement-gate/apply_patch-deny.json",
749
+ "date": "2026-10-27"
750
+ },
751
+ {
752
+ "kind": "live",
753
+ "locator": "test/fixtures/hooks/copilot/live/deny-proof-2026-10-27.json",
754
+ "date": "2026-10-27"
755
+ },
756
+ {
757
+ "kind": "live",
758
+ "locator": "test/fixtures/hooks/copilot/live/capture-2026-10-27.jsonl",
759
+ "date": "2026-10-27"
1229
760
  }
1230
761
  ]
1231
762
  },
1232
763
  {
1233
- "policy": "pre-bash-guard",
764
+ "policy": "pre-implementation-gate",
1234
765
  "harness": "kiro",
1235
766
  "event": "PreToolUse",
1236
767
  "timing": "pre-tool",
1237
768
  "profile": "ide",
1238
769
  "wired": true,
1239
- "configSource": "core/harnesses/kiro/hooks/doflow.json:24",
770
+ "configSource": "core/harnesses/kiro/hooks/doflow.json:15",
1240
771
  "harnessVersion": {
1241
772
  "tested": "kiro-cli 2.29.1"
1242
773
  },
1243
- "class": "blocking",
774
+ "class": "advisory",
1244
775
  "verification": "verified",
1245
776
  "prerequisites": [],
1246
777
  "covers": [],
1247
- "doesNotCover": [],
778
+ "doesNotCover": [
779
+ "writes via shell commands"
780
+ ],
1248
781
  "caveats": [],
1249
782
  "provenance": [
1250
783
  {
@@ -1254,27 +787,29 @@
1254
787
  },
1255
788
  {
1256
789
  "kind": "fixture",
1257
- "locator": "test/fixtures/hooks/kiro/pre-bash-guard/deny.json",
790
+ "locator": "test/fixtures/hooks/kiro/pre-implement-gate/deny.json",
1258
791
  "date": "2026-10-14"
1259
792
  }
1260
793
  ]
1261
794
  },
1262
795
  {
1263
- "policy": "pre-bash-guard",
796
+ "policy": "pre-implementation-gate",
1264
797
  "harness": "kiro",
1265
798
  "event": "PreToolUse",
1266
799
  "timing": "pre-tool",
1267
800
  "profile": "cli-v3",
1268
801
  "wired": true,
1269
- "configSource": "core/harnesses/kiro/hooks/doflow.json:24",
802
+ "configSource": "core/harnesses/kiro/hooks/doflow.json:15",
1270
803
  "harnessVersion": {
1271
804
  "tested": "kiro-cli 2.29.1"
1272
805
  },
1273
- "class": "blocking",
806
+ "class": "advisory",
1274
807
  "verification": "verified",
1275
808
  "prerequisites": [],
1276
809
  "covers": [],
1277
- "doesNotCover": [],
810
+ "doesNotCover": [
811
+ "writes via shell commands"
812
+ ],
1278
813
  "caveats": [],
1279
814
  "provenance": [
1280
815
  {
@@ -1284,27 +819,29 @@
1284
819
  },
1285
820
  {
1286
821
  "kind": "fixture",
1287
- "locator": "test/fixtures/hooks/kiro/pre-bash-guard/deny.json",
822
+ "locator": "test/fixtures/hooks/kiro/pre-implement-gate/deny.json",
1288
823
  "date": "2026-10-14"
1289
824
  }
1290
825
  ]
1291
826
  },
1292
827
  {
1293
- "policy": "pre-bash-guard",
828
+ "policy": "pre-implementation-gate",
1294
829
  "harness": "kiro",
1295
830
  "event": "PreToolUse",
1296
831
  "timing": "pre-tool",
1297
832
  "profile": "cli-v3-agent",
1298
833
  "wired": true,
1299
- "configSource": "core/harnesses/kiro/agents/doflow.json:21",
834
+ "configSource": "core/harnesses/kiro/agents/doflow.json:11",
1300
835
  "harnessVersion": {
1301
836
  "tested": "kiro-cli 2.29.1"
1302
837
  },
1303
- "class": "blocking",
838
+ "class": "advisory",
1304
839
  "verification": "verified",
1305
840
  "prerequisites": [],
1306
841
  "covers": [],
1307
- "doesNotCover": [],
842
+ "doesNotCover": [
843
+ "writes via shell commands"
844
+ ],
1308
845
  "caveats": [],
1309
846
  "provenance": [
1310
847
  {
@@ -1314,27 +851,29 @@
1314
851
  },
1315
852
  {
1316
853
  "kind": "fixture",
1317
- "locator": "test/fixtures/hooks/kiro/pre-bash-guard/agent-deny.json",
854
+ "locator": "test/fixtures/hooks/kiro/pre-implement-gate/agent-deny.json",
1318
855
  "date": "2026-10-14"
1319
856
  }
1320
857
  ]
1321
858
  },
1322
859
  {
1323
- "policy": "pre-bash-guard",
860
+ "policy": "pre-implementation-gate",
1324
861
  "harness": "kiro",
1325
862
  "event": "PreToolUse",
1326
863
  "timing": "pre-tool",
1327
864
  "profile": "cli-2x-agent",
1328
865
  "wired": true,
1329
- "configSource": "core/harnesses/kiro/agents/doflow.json:21",
866
+ "configSource": "core/harnesses/kiro/hooks/doflow.json:15",
1330
867
  "harnessVersion": {
1331
868
  "tested": "kiro-cli 2.29.1"
1332
869
  },
1333
- "class": "blocking",
870
+ "class": "advisory",
1334
871
  "verification": "verified",
1335
872
  "prerequisites": [],
1336
873
  "covers": [],
1337
- "doesNotCover": [],
874
+ "doesNotCover": [
875
+ "writes via shell commands"
876
+ ],
1338
877
  "caveats": [],
1339
878
  "provenance": [
1340
879
  {
@@ -1344,34 +883,39 @@
1344
883
  },
1345
884
  {
1346
885
  "kind": "fixture",
1347
- "locator": "test/fixtures/hooks/kiro/pre-bash-guard/agent-deny.json",
886
+ "locator": "test/fixtures/hooks/kiro/pre-implement-gate/agent-deny.json",
1348
887
  "date": "2026-10-14"
1349
888
  }
1350
889
  ]
1351
890
  },
1352
891
  {
1353
- "policy": "pre-bash-guard",
892
+ "policy": "pre-implementation-gate",
1354
893
  "harness": "antigravity",
1355
- "event": "*",
894
+ "event": "PreToolUse",
1356
895
  "timing": "pre-tool",
1357
896
  "profile": "any",
1358
- "wired": false,
1359
- "configSource": null,
897
+ "wired": true,
898
+ "configSource": "src/adapters/antigravity/index.js:60",
1360
899
  "harnessVersion": {
1361
900
  "tested": "1.3.3"
1362
901
  },
1363
- "class": "unsupported",
1364
- "verification": "unverified",
902
+ "class": "advisory",
903
+ "verification": "verified",
1365
904
  "prerequisites": [],
1366
905
  "covers": [],
1367
- "doesNotCover": [],
1368
- "caveats": [
1369
- "not wired for this harness mapping"
906
+ "doesNotCover": [
907
+ "writes via shell commands"
1370
908
  ],
909
+ "caveats": [],
1371
910
  "provenance": [
1372
911
  {
1373
912
  "kind": "doc",
1374
- "locator": "core/registry/lifecycle.json: policy pre-bash-guard mapping for antigravity",
913
+ "locator": "https://antigravity.google/docs/hooks/",
914
+ "date": "2026-10-12"
915
+ },
916
+ {
917
+ "kind": "fixture",
918
+ "locator": "test/fixtures/hooks/antigravity/pre-implement-gate/deny-missing-design.json",
1375
919
  "date": "2026-10-14"
1376
920
  }
1377
921
  ]
@@ -1383,7 +927,7 @@
1383
927
  "timing": "session",
1384
928
  "profile": "any",
1385
929
  "wired": true,
1386
- "configSource": "core/harnesses/claude/settings/settings.json:36",
930
+ "configSource": "core/harnesses/claude/settings/settings.json:44",
1387
931
  "harnessVersion": {
1388
932
  "tested": "2.1.287 (Claude Code)"
1389
933
  },
@@ -1696,7 +1240,7 @@
1696
1240
  "timing": "pre-tool",
1697
1241
  "profile": "any",
1698
1242
  "wired": true,
1699
- "configSource": "core/harnesses/claude/settings/settings.json:89",
1243
+ "configSource": "core/harnesses/claude/settings/settings.json:97",
1700
1244
  "harnessVersion": {
1701
1245
  "tested": "2.1.287 (Claude Code)"
1702
1246
  },
@@ -1900,7 +1444,7 @@
1900
1444
  "timing": "pre-tool",
1901
1445
  "profile": "ide",
1902
1446
  "wired": true,
1903
- "configSource": "core/harnesses/kiro/hooks/doflow.json:34",
1447
+ "configSource": "core/harnesses/kiro/hooks/doflow.json:24",
1904
1448
  "harnessVersion": {
1905
1449
  "tested": "kiro-cli 2.29.1"
1906
1450
  },
@@ -1930,7 +1474,7 @@
1930
1474
  "timing": "pre-tool",
1931
1475
  "profile": "cli-v3",
1932
1476
  "wired": true,
1933
- "configSource": "core/harnesses/kiro/hooks/doflow.json:34",
1477
+ "configSource": "core/harnesses/kiro/hooks/doflow.json:24",
1934
1478
  "harnessVersion": {
1935
1479
  "tested": "kiro-cli 2.29.1"
1936
1480
  },
@@ -1960,7 +1504,7 @@
1960
1504
  "timing": "pre-tool",
1961
1505
  "profile": "cli-v3-agent",
1962
1506
  "wired": true,
1963
- "configSource": "core/harnesses/kiro/agents/doflow.json:31",
1507
+ "configSource": "core/harnesses/kiro/agents/doflow.json:21",
1964
1508
  "harnessVersion": {
1965
1509
  "tested": "kiro-cli 2.29.1"
1966
1510
  },
@@ -1990,7 +1534,7 @@
1990
1534
  "timing": "pre-tool",
1991
1535
  "profile": "cli-2x-agent",
1992
1536
  "wired": true,
1993
- "configSource": "core/harnesses/kiro/agents/doflow.json:31",
1537
+ "configSource": "core/harnesses/kiro/agents/doflow.json:21",
1994
1538
  "harnessVersion": {
1995
1539
  "tested": "kiro-cli 2.29.1"
1996
1540
  },
@@ -2047,11 +1591,11 @@
2047
1591
  "timing": "stop",
2048
1592
  "profile": "any",
2049
1593
  "wired": true,
2050
- "configSource": "core/harnesses/claude/settings/settings.json:147",
1594
+ "configSource": "core/harnesses/claude/settings/settings.json:146",
2051
1595
  "harnessVersion": {
2052
1596
  "tested": "2.1.287 (Claude Code)"
2053
1597
  },
2054
- "class": "blocking",
1598
+ "class": "advisory",
2055
1599
  "verification": "verified",
2056
1600
  "prerequisites": [],
2057
1601
  "covers": [],
@@ -2077,11 +1621,11 @@
2077
1621
  "timing": "stop",
2078
1622
  "profile": "any",
2079
1623
  "wired": true,
2080
- "configSource": "core/harnesses/codex/hooks/hooks.json:99",
1624
+ "configSource": "core/harnesses/codex/hooks/hooks.json:89",
2081
1625
  "harnessVersion": {
2082
1626
  "tested": "codex-cli 0.162.1"
2083
1627
  },
2084
- "class": "blocking",
1628
+ "class": "advisory",
2085
1629
  "verification": "verified",
2086
1630
  "prerequisites": [
2087
1631
  "hook-review"
@@ -2134,7 +1678,7 @@
2134
1678
  "timing": "stop",
2135
1679
  "profile": "any",
2136
1680
  "wired": true,
2137
- "configSource": "core/harnesses/copilot/hooks/doflow.json:32",
1681
+ "configSource": "core/harnesses/copilot/hooks/doflow.json:26",
2138
1682
  "harnessVersion": {
2139
1683
  "tested": "GitHub Copilot CLI 1.0.103"
2140
1684
  },
@@ -2166,49 +1710,6 @@
2166
1710
  }
2167
1711
  ]
2168
1712
  },
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
1713
  {
2213
1714
  "policy": "stop-check",
2214
1715
  "harness": "kiro",
@@ -2216,7 +1717,7 @@
2216
1717
  "timing": "stop",
2217
1718
  "profile": "ide",
2218
1719
  "wired": true,
2219
- "configSource": "core/harnesses/kiro/hooks/doflow.json:44",
1720
+ "configSource": "core/harnesses/kiro/hooks/doflow.json:34",
2220
1721
  "harnessVersion": {
2221
1722
  "tested": "kiro-cli 2.29.1"
2222
1723
  },
@@ -2254,7 +1755,7 @@
2254
1755
  "timing": "stop",
2255
1756
  "profile": "cli-v3",
2256
1757
  "wired": true,
2257
- "configSource": "core/harnesses/kiro/hooks/doflow.json:44",
1758
+ "configSource": "core/harnesses/kiro/hooks/doflow.json:34",
2258
1759
  "harnessVersion": {
2259
1760
  "tested": "kiro-cli 2.29.1"
2260
1761
  },
@@ -2296,7 +1797,7 @@
2296
1797
  "harnessVersion": {
2297
1798
  "tested": "1.3.3"
2298
1799
  },
2299
- "class": "blocking",
1800
+ "class": "advisory",
2300
1801
  "verification": "verified",
2301
1802
  "prerequisites": [],
2302
1803
  "covers": [],
@@ -2322,7 +1823,7 @@
2322
1823
  "timing": "pre-tool",
2323
1824
  "profile": "project-interactive",
2324
1825
  "wired": true,
2325
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
1826
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
2326
1827
  "harnessVersion": {
2327
1828
  "tested": "1.1.0"
2328
1829
  },
@@ -2358,47 +1859,6 @@
2358
1859
  }
2359
1860
  ]
2360
1861
  },
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
1862
  {
2403
1863
  "policy": "mcp-tool-guard",
2404
1864
  "harness": "pi",
@@ -2406,7 +1866,7 @@
2406
1866
  "timing": "pre-tool",
2407
1867
  "profile": "project-interactive",
2408
1868
  "wired": true,
2409
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
1869
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
2410
1870
  "harnessVersion": {
2411
1871
  "tested": "1.1.0"
2412
1872
  },
@@ -2447,7 +1907,7 @@
2447
1907
  "timing": "stop",
2448
1908
  "profile": "cli-2x-agent",
2449
1909
  "wired": true,
2450
- "configSource": "core/harnesses/kiro/agents/doflow.json:50",
1910
+ "configSource": "core/harnesses/kiro/agents/doflow.json:40",
2451
1911
  "harnessVersion": {
2452
1912
  "tested": "kiro-cli 2.29.1"
2453
1913
  },
@@ -2479,7 +1939,7 @@
2479
1939
  "timing": "stop",
2480
1940
  "profile": "cli-v3-agent",
2481
1941
  "wired": true,
2482
- "configSource": "core/harnesses/kiro/agents/doflow.json:50",
1942
+ "configSource": "core/harnesses/kiro/agents/doflow.json:40",
2483
1943
  "harnessVersion": {
2484
1944
  "tested": "kiro-cli 2.29.1"
2485
1945
  },
@@ -2517,7 +1977,7 @@
2517
1977
  "timing": "pre-tool",
2518
1978
  "profile": "user-interactive",
2519
1979
  "wired": true,
2520
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
1980
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
2521
1981
  "harnessVersion": {
2522
1982
  "tested": "1.1.0"
2523
1983
  },
@@ -2550,44 +2010,6 @@
2550
2010
  }
2551
2011
  ]
2552
2012
  },
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
2013
  {
2592
2014
  "policy": "mcp-tool-guard",
2593
2015
  "harness": "pi",
@@ -2595,7 +2017,7 @@
2595
2017
  "timing": "pre-tool",
2596
2018
  "profile": "user-interactive",
2597
2019
  "wired": true,
2598
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
2020
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
2599
2021
  "harnessVersion": {
2600
2022
  "tested": "1.1.0"
2601
2023
  },
@@ -2633,7 +2055,7 @@
2633
2055
  "timing": "session",
2634
2056
  "profile": "cli-v3-agent",
2635
2057
  "wired": true,
2636
- "configSource": "core/harnesses/kiro/agents/doflow.json:42",
2058
+ "configSource": "core/harnesses/kiro/agents/doflow.json:32",
2637
2059
  "harnessVersion": {
2638
2060
  "tested": "kiro-cli 2.29.1"
2639
2061
  },
@@ -3026,6 +2448,6 @@
3026
2448
  ]
3027
2449
  }
3028
2450
  ],
3029
- "rowsDigest": "sha256:d8fdf93bb4a556f0ba91d5a8eb74e5857c29fe7ea87e2731a39afb955d50bb59"
2451
+ "rowsDigest": "sha256:39c81a958388528cddec2fa524296872bf420d37073ae643a76faddc54893cf5"
3030
2452
  }
3031
2453
  }