opencode-swarm 7.192.4 → 7.193.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.
- package/.opencode/skills/swarm-pr-review/SKILL.md +2 -2
- package/.opencode/skills/swarm-pr-review/references/verdict-settlement-contract.md +17 -0
- package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
- package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
- package/dist/cli/{auto-checkpoint-1xy6dprq.js → auto-checkpoint-taay16xe.js} +7 -7
- package/dist/cli/{checkpoint-wvhmkgv5.js → checkpoint-6229g3jq.js} +14 -14
- package/dist/cli/{coder-settlement-wpkmkgcf.js → coder-settlement-hexmmefv.js} +10 -10
- package/dist/cli/{config-doctor-xvhejh7g.js → config-doctor-3ghvthh5.js} +13 -13
- package/dist/cli/{core-yzgm8pcw.js → core-0k7t9fw0.js} +3 -3
- package/dist/cli/{curation-policy-yzdznz4z.js → curation-policy-8j6qn6nt.js} +4 -4
- package/dist/cli/{curator-drift-5c041yaf.js → curator-drift-a5142x0d.js} +8 -8
- package/dist/cli/{curator-3xh6246r.js → curator-kwwnkyr7.js} +40 -40
- package/dist/cli/curator-llm-factory-8gt3mvg9.js +82 -0
- package/dist/cli/{doctor-knowledge-receipt-phase-id-cx6n5jtp.js → doctor-knowledge-receipt-phase-id-11nsf9tz.js} +7 -7
- package/dist/cli/{evidence-summary-service-cc139a85.js → evidence-summary-service-y2ykc6ta.js} +17 -17
- package/dist/cli/{gate-evidence-7azk0xbt.js → gate-evidence-cd5299js.js} +5 -5
- package/dist/cli/guardrail-explain-hpgecr7x.js +83 -0
- package/dist/cli/{guardrail-log-env1h4wr.js → guardrail-log-g6krx0s2.js} +6 -6
- package/dist/cli/{guardrail-reset-1404ymcw.js → guardrail-reset-a3xv675m.js} +40 -40
- package/dist/cli/{hive-promoter-hap3dh02.js → hive-promoter-90svfzvs.js} +40 -40
- package/dist/cli/{index-8zj647hc.js → index-0e318vgt.js} +1 -1
- package/dist/cli/{index-s68yyat0.js → index-1dx5zyss.js} +1 -1
- package/dist/cli/{index-kn16k0fv.js → index-1p24bfn2.js} +5 -5
- package/dist/cli/{index-bgzpw6ge.js → index-3atkcqpb.js} +1 -1
- package/dist/cli/{index-s43zb23q.js → index-3xj89bf0.js} +42 -42
- package/dist/cli/{index-6k70exke.js → index-4gacy6y6.js} +2 -2
- package/dist/cli/{index-g2phkwh2.js → index-4mq8r4be.js} +3 -3
- package/dist/cli/{index-54p1vs33.js → index-5ev6f1gj.js} +3 -3
- package/dist/cli/{index-tww9qw9z.js → index-5n760fzn.js} +6 -6
- package/dist/cli/{index-1n7sf9gz.js → index-5rkh69f3.js} +1 -1
- package/dist/cli/{index-0e1nxkte.js → index-668npagp.js} +1 -1
- package/dist/cli/{index-xpwp9hw1.js → index-6dn16dre.js} +5 -5
- package/dist/cli/{index-g8jd3h4r.js → index-6s3ab22d.js} +2 -2
- package/dist/cli/{index-5gy5dc2n.js → index-7njm9jk1.js} +1 -1
- package/dist/cli/{index-eaess7dm.js → index-84k9zzv1.js} +1 -1
- package/dist/cli/{index-rsfvxaw0.js → index-bg19b84s.js} +7 -7
- package/dist/cli/{index-cp9h2sqb.js → index-bgtfvst1.js} +1 -1
- package/dist/cli/{index-22ww8fjt.js → index-bkpyff61.js} +2 -2
- package/dist/cli/{index-jb669k7s.js → index-cpt38e0e.js} +2 -2
- package/dist/cli/{index-gkr6ns9n.js → index-cs0p582p.js} +4 -4
- package/dist/cli/{index-v6ghzghn.js → index-d2emv8ap.js} +3 -3
- package/dist/cli/{index-ftatc9wj.js → index-db786kn6.js} +40 -40
- package/dist/cli/{index-fzqn2kk8.js → index-fd6b9f38.js} +2 -2
- package/dist/cli/{index-c5gb6a86.js → index-he2nyr7x.js} +10 -10
- package/dist/cli/{index-dtet46e6.js → index-hfnyykvm.js} +5 -5
- package/dist/cli/{index-nwswxes7.js → index-hfssjyxs.js} +2 -2
- package/dist/cli/{index-5gyq54c5.js → index-jx80ed6g.js} +4563 -4121
- package/dist/cli/{index-j4pxkvw3.js → index-jxs9qnad.js} +4 -4
- package/dist/cli/{index-xwxqtdwz.js → index-ma71x1aa.js} +4 -4
- package/dist/cli/{index-4twjbsfw.js → index-ndec8akq.js} +1 -1
- package/dist/cli/{index-rqapvhh5.js → index-ngk8hpc3.js} +1 -1
- package/dist/cli/{index-qzkrcz1r.js → index-nktwf2xm.js} +6 -6
- package/dist/cli/{index-c8fjbghs.js → index-ntmnse4d.js} +1 -1
- package/dist/cli/{index-2qpme44n.js → index-nz6ehpjn.js} +3 -3
- package/dist/cli/{index-c6wzbs0g.js → index-prvancd0.js} +2 -2
- package/dist/cli/{index-a9m7h5v0.js → index-qh93qjc2.js} +1 -1
- package/dist/cli/{index-vgktct21.js → index-r3mffz78.js} +4 -4
- package/dist/cli/{index-q47snsb2.js → index-rd9th57y.js} +3 -3
- package/dist/cli/{index-dt4cjxbz.js → index-st80sjg7.js} +1 -1
- package/dist/cli/{index-zya4a544.js → index-tr47q89d.js} +4 -4
- package/dist/cli/{index-6vwnm3sm.js → index-vbp35frb.js} +2 -2
- package/dist/cli/{index-mbn4vn3z.js → index-vg8sxg12.js} +1 -1
- package/dist/cli/{index-5dws7eyb.js → index-w2vbaczx.js} +1 -1
- package/dist/cli/{index-72eh47b2.js → index-x2phyvcv.js} +3 -3
- package/dist/cli/{index-myjqj3na.js → index-ymnathfr.js} +7 -7
- package/dist/cli/index.js +41 -41
- package/dist/cli/{knowledge-escalator-eta167xh.js → knowledge-escalator-2d7g3hs0.js} +12 -12
- package/dist/cli/{knowledge-events-mz25jn9f.js → knowledge-events-hjeaevc9.js} +10 -10
- package/dist/cli/{knowledge-link-a5tvjqdt.js → knowledge-link-srnt95wh.js} +3 -3
- package/dist/cli/{knowledge-store-qd08dbws.js → knowledge-store-g9cb2m0v.js} +4 -4
- package/dist/cli/{knowledge-validator-jyrsgamq.js → knowledge-validator-dghf9pcj.js} +6 -6
- package/dist/cli/{mcp-4wgxc5ax.js → mcp-f5myvd7r.js} +1 -1
- package/dist/cli/{model-preflight-4p3x4vma.js → model-preflight-4w4wd6dj.js} +40 -40
- package/dist/cli/{pending-delegations-7hm6xgzw.js → pending-delegations-adm6gf3n.js} +10 -10
- package/dist/cli/{pr-subscriptions-2y3w5pyt.js → pr-subscriptions-n1hks854.js} +10 -10
- package/dist/cli/{pr-workflow-gate-y04z3z80.js → pr-workflow-gate-59cr6gve.js} +44 -40
- package/dist/cli/{runner-8qybgy4n.js → runner-b2e89cp1.js} +4 -4
- package/dist/cli/{scan-cursor-2hpc6mxt.js → scan-cursor-t26xmfhd.js} +5 -5
- package/dist/cli/{schema-33k1e2cv.js → schema-cr120ar5.js} +1 -1
- package/dist/cli/{scope-persistence-y769jep8.js → scope-persistence-mrnz8j43.js} +13 -13
- package/dist/cli/{server-199m00cz.js → server-mwk6zn83.js} +40 -40
- package/dist/cli/{skill-generator-b9by3739.js → skill-generator-svs4k0g8.js} +14 -14
- package/dist/cli/{snapshot-coordination-init-wyyn8ftk.js → snapshot-coordination-init-xzrahhsb.js} +40 -40
- package/dist/cli/{speckit-checkoff-y2ywmh9k.js → speckit-checkoff-g2qrb1tn.js} +4 -4
- package/dist/cli/{workspace-snapshot-vfpnxjsp.js → workspace-snapshot-p69t9zn7.js} +3 -3
- package/dist/cli/{worktree-collision-ownership-hg0yrc5b.js → worktree-collision-ownership-d145wmpg.js} +11 -11
- package/dist/cli/{worktree-isolation-epbn1xgh.js → worktree-isolation-pt1rws6p.js} +40 -40
- package/dist/commands/registry.d.ts +1 -1
- package/dist/hooks/injection-policy.d.ts +94 -0
- package/dist/hooks/pr-workflow-gate.d.ts +44 -5
- package/dist/host/v2/types.d.ts +254 -11
- package/dist/index.js +492 -491
- package/dist/pr-review/finding-policy.d.ts +1 -1
- package/dist/pr-review/verdict-settlement.d.ts +182 -0
- package/dist/services/context-budget-service.d.ts +8 -1
- package/dist/tools/complete-pr-workflow.d.ts +13 -0
- package/dist/tools/write-pr-review-artifact.d.ts +1 -1
- package/package.json +1 -1
- package/dist/cli/curator-llm-factory-6y7wrbvk.js +0 -82
- package/dist/cli/guardrail-explain-b3y98j5b.js +0 -83
|
@@ -33,36 +33,36 @@ import {
|
|
|
33
33
|
sanitizeSlug,
|
|
34
34
|
selectCandidateEntries,
|
|
35
35
|
writeEvalStub
|
|
36
|
-
} from "./index-
|
|
36
|
+
} from "./index-r3mffz78.js";
|
|
37
37
|
import"./index-q7sjgr1y.js";
|
|
38
|
-
import"./index-
|
|
39
|
-
import"./index-
|
|
38
|
+
import"./index-tr47q89d.js";
|
|
39
|
+
import"./index-cs0p582p.js";
|
|
40
40
|
import"./index-m9zzj4ee.js";
|
|
41
|
-
import"./index-
|
|
41
|
+
import"./index-84k9zzv1.js";
|
|
42
42
|
import"./index-2s7dvzff.js";
|
|
43
|
-
import"./index-
|
|
44
|
-
import"./index-
|
|
43
|
+
import"./index-jxs9qnad.js";
|
|
44
|
+
import"./index-w2vbaczx.js";
|
|
45
45
|
import"./index-rtry5xyf.js";
|
|
46
|
-
import"./index-
|
|
46
|
+
import"./index-vbp35frb.js";
|
|
47
47
|
import"./index-g22dps7x.js";
|
|
48
48
|
import"./index-0725jpp7.js";
|
|
49
|
-
import"./index-
|
|
50
|
-
import"./index-
|
|
49
|
+
import"./index-ndec8akq.js";
|
|
50
|
+
import"./index-bg19b84s.js";
|
|
51
51
|
import"./index-vzm6zre7.js";
|
|
52
52
|
import"./index-ae75rja9.js";
|
|
53
|
-
import"./index-
|
|
54
|
-
import"./index-
|
|
53
|
+
import"./index-3atkcqpb.js";
|
|
54
|
+
import"./index-5rkh69f3.js";
|
|
55
55
|
import"./index-e8k0v19e.js";
|
|
56
56
|
import"./index-t7hmqgjy.js";
|
|
57
57
|
import"./index-mtqwyjrg.js";
|
|
58
58
|
import"./index-fzpt2djt.js";
|
|
59
59
|
import"./index-ejhxgyvm.js";
|
|
60
60
|
import"./index-7g4c7s5r.js";
|
|
61
|
-
import"./index-
|
|
61
|
+
import"./index-hfssjyxs.js";
|
|
62
62
|
import"./index-gx2vp8gx.js";
|
|
63
|
-
import"./index-
|
|
63
|
+
import"./index-ngk8hpc3.js";
|
|
64
64
|
import"./index-zxdawwc7.js";
|
|
65
|
-
import"./index-
|
|
65
|
+
import"./index-1dx5zyss.js";
|
|
66
66
|
import"./index-py8wpe81.js";
|
|
67
67
|
import"./index-bk5tah7q.js";
|
|
68
68
|
import"./index-gknz3bv1.js";
|
package/dist/cli/{snapshot-coordination-init-wyyn8ftk.js → snapshot-coordination-init-xzrahhsb.js}
RENAMED
|
@@ -8,74 +8,74 @@ import {
|
|
|
8
8
|
markSnapshotCoordinationClosing,
|
|
9
9
|
retrySnapshotCoordinationInitialization,
|
|
10
10
|
startSnapshotCoordinationInitialization
|
|
11
|
-
} from "./index-
|
|
12
|
-
import"./index-
|
|
13
|
-
import"./index-
|
|
14
|
-
import"./index-
|
|
11
|
+
} from "./index-jx80ed6g.js";
|
|
12
|
+
import"./index-bkpyff61.js";
|
|
13
|
+
import"./index-4mq8r4be.js";
|
|
14
|
+
import"./index-ma71x1aa.js";
|
|
15
15
|
import"./index-j2vv0h13.js";
|
|
16
|
-
import"./index-
|
|
17
|
-
import"./index-
|
|
16
|
+
import"./index-668npagp.js";
|
|
17
|
+
import"./index-7njm9jk1.js";
|
|
18
18
|
import"./index-txdagbh7.js";
|
|
19
|
-
import"./index-
|
|
19
|
+
import"./index-prvancd0.js";
|
|
20
20
|
import"./index-rdec0y3z.js";
|
|
21
|
-
import"./index-
|
|
22
|
-
import"./index-
|
|
23
|
-
import"./index-
|
|
24
|
-
import"./index-
|
|
25
|
-
import"./index-
|
|
26
|
-
import"./index-
|
|
21
|
+
import"./index-d2emv8ap.js";
|
|
22
|
+
import"./index-ymnathfr.js";
|
|
23
|
+
import"./index-r3mffz78.js";
|
|
24
|
+
import"./index-5n760fzn.js";
|
|
25
|
+
import"./index-fd6b9f38.js";
|
|
26
|
+
import"./index-hfnyykvm.js";
|
|
27
27
|
import"./index-cjapb4hy.js";
|
|
28
|
-
import"./index-
|
|
28
|
+
import"./index-6s3ab22d.js";
|
|
29
29
|
import"./index-pt7h91zc.js";
|
|
30
30
|
import"./index-q7sjgr1y.js";
|
|
31
|
-
import"./index-
|
|
32
|
-
import"./index-
|
|
31
|
+
import"./index-nktwf2xm.js";
|
|
32
|
+
import"./index-he2nyr7x.js";
|
|
33
33
|
import"./index-6b295cas.js";
|
|
34
34
|
import"./index-9nyqt3kb.js";
|
|
35
|
-
import"./index-
|
|
35
|
+
import"./index-bgtfvst1.js";
|
|
36
36
|
import"./index-v3bmwmqw.js";
|
|
37
|
-
import"./index-
|
|
38
|
-
import"./index-
|
|
39
|
-
import"./index-
|
|
37
|
+
import"./index-4gacy6y6.js";
|
|
38
|
+
import"./index-nz6ehpjn.js";
|
|
39
|
+
import"./index-x2phyvcv.js";
|
|
40
40
|
import"./index-g4fs6z4e.js";
|
|
41
|
-
import"./index-
|
|
42
|
-
import"./index-
|
|
43
|
-
import"./index-
|
|
41
|
+
import"./index-6dn16dre.js";
|
|
42
|
+
import"./index-tr47q89d.js";
|
|
43
|
+
import"./index-cs0p582p.js";
|
|
44
44
|
import"./index-m9zzj4ee.js";
|
|
45
|
-
import"./index-
|
|
45
|
+
import"./index-84k9zzv1.js";
|
|
46
46
|
import"./index-2s7dvzff.js";
|
|
47
|
-
import"./index-
|
|
48
|
-
import"./index-
|
|
47
|
+
import"./index-jxs9qnad.js";
|
|
48
|
+
import"./index-w2vbaczx.js";
|
|
49
49
|
import"./index-rtry5xyf.js";
|
|
50
|
-
import"./index-
|
|
50
|
+
import"./index-vbp35frb.js";
|
|
51
51
|
import"./index-g22dps7x.js";
|
|
52
52
|
import"./index-0725jpp7.js";
|
|
53
|
-
import"./index-
|
|
54
|
-
import"./index-
|
|
55
|
-
import"./index-
|
|
56
|
-
import"./index-
|
|
57
|
-
import"./index-
|
|
58
|
-
import"./index-
|
|
53
|
+
import"./index-1p24bfn2.js";
|
|
54
|
+
import"./index-5ev6f1gj.js";
|
|
55
|
+
import"./index-qh93qjc2.js";
|
|
56
|
+
import"./index-st80sjg7.js";
|
|
57
|
+
import"./index-vg8sxg12.js";
|
|
58
|
+
import"./index-0e318vgt.js";
|
|
59
59
|
import"./index-ry16d01s.js";
|
|
60
60
|
import"./index-rdm3px0g.js";
|
|
61
61
|
import"./index-7pmbnjvj.js";
|
|
62
|
-
import"./index-
|
|
63
|
-
import"./index-
|
|
62
|
+
import"./index-ndec8akq.js";
|
|
63
|
+
import"./index-bg19b84s.js";
|
|
64
64
|
import"./index-vzm6zre7.js";
|
|
65
65
|
import"./index-ae75rja9.js";
|
|
66
|
-
import"./index-
|
|
67
|
-
import"./index-
|
|
66
|
+
import"./index-3atkcqpb.js";
|
|
67
|
+
import"./index-5rkh69f3.js";
|
|
68
68
|
import"./index-e8k0v19e.js";
|
|
69
69
|
import"./index-t7hmqgjy.js";
|
|
70
70
|
import"./index-mtqwyjrg.js";
|
|
71
71
|
import"./index-fzpt2djt.js";
|
|
72
72
|
import"./index-ejhxgyvm.js";
|
|
73
73
|
import"./index-7g4c7s5r.js";
|
|
74
|
-
import"./index-
|
|
74
|
+
import"./index-hfssjyxs.js";
|
|
75
75
|
import"./index-gx2vp8gx.js";
|
|
76
|
-
import"./index-
|
|
76
|
+
import"./index-ngk8hpc3.js";
|
|
77
77
|
import"./index-zxdawwc7.js";
|
|
78
|
-
import"./index-
|
|
78
|
+
import"./index-1dx5zyss.js";
|
|
79
79
|
import"./index-py8wpe81.js";
|
|
80
80
|
import"./index-bk5tah7q.js";
|
|
81
81
|
import"./index-gknz3bv1.js";
|
|
@@ -7,13 +7,13 @@ import {
|
|
|
7
7
|
parseSpeckitTasksContent,
|
|
8
8
|
propagateSpeckitCheckoff,
|
|
9
9
|
writeSpeckitCheckoffLedger
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-4gacy6y6.js";
|
|
11
11
|
import"./index-ejhxgyvm.js";
|
|
12
12
|
import"./index-7g4c7s5r.js";
|
|
13
|
-
import"./index-
|
|
14
|
-
import"./index-
|
|
13
|
+
import"./index-hfssjyxs.js";
|
|
14
|
+
import"./index-ngk8hpc3.js";
|
|
15
15
|
import"./index-zxdawwc7.js";
|
|
16
|
-
import"./index-
|
|
16
|
+
import"./index-1dx5zyss.js";
|
|
17
17
|
import"./index-py8wpe81.js";
|
|
18
18
|
import"./index-bk5tah7q.js";
|
|
19
19
|
import"./index-gknz3bv1.js";
|
|
@@ -46,11 +46,11 @@ import {
|
|
|
46
46
|
shouldSkipSnapshot,
|
|
47
47
|
switchPrFeedbackTrackingCandidateAsync,
|
|
48
48
|
workspaceSnapshotMatches
|
|
49
|
-
} from "./index-
|
|
50
|
-
import"./index-
|
|
49
|
+
} from "./index-fd6b9f38.js";
|
|
50
|
+
import"./index-84k9zzv1.js";
|
|
51
51
|
import"./index-2s7dvzff.js";
|
|
52
52
|
import"./index-fzpt2djt.js";
|
|
53
|
-
import"./index-
|
|
53
|
+
import"./index-hfssjyxs.js";
|
|
54
54
|
import"./index-zxdawwc7.js";
|
|
55
55
|
import"./index-zpsr8rpc.js";
|
|
56
56
|
import"./index-zgwm4ryv.js";
|
|
@@ -6,28 +6,28 @@ import {
|
|
|
6
6
|
WORKTREE_PROVISIONING_OWNER_LEASE_MS,
|
|
7
7
|
removeWorktreeProvisioningOwner,
|
|
8
8
|
scanWorktreeProvisioningOwnersForRecovery
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-6s3ab22d.js";
|
|
10
10
|
import {
|
|
11
11
|
scanWorktreeMergeFailuresForRecovery
|
|
12
12
|
} from "./index-v3bmwmqw.js";
|
|
13
13
|
import {
|
|
14
14
|
scanDelegationFallbacksForRecovery,
|
|
15
15
|
scanDelegationsForRecovery
|
|
16
|
-
} from "./index-
|
|
17
|
-
import"./index-
|
|
16
|
+
} from "./index-6dn16dre.js";
|
|
17
|
+
import"./index-84k9zzv1.js";
|
|
18
18
|
import"./index-2s7dvzff.js";
|
|
19
|
-
import"./index-
|
|
20
|
-
import"./index-
|
|
21
|
-
import"./index-
|
|
19
|
+
import"./index-st80sjg7.js";
|
|
20
|
+
import"./index-vg8sxg12.js";
|
|
21
|
+
import"./index-0e318vgt.js";
|
|
22
22
|
import"./index-ry16d01s.js";
|
|
23
23
|
import"./index-rdm3px0g.js";
|
|
24
24
|
import"./index-7pmbnjvj.js";
|
|
25
|
-
import"./index-
|
|
26
|
-
import"./index-
|
|
25
|
+
import"./index-ndec8akq.js";
|
|
26
|
+
import"./index-bg19b84s.js";
|
|
27
27
|
import"./index-vzm6zre7.js";
|
|
28
28
|
import"./index-ae75rja9.js";
|
|
29
|
-
import"./index-
|
|
30
|
-
import"./index-
|
|
29
|
+
import"./index-3atkcqpb.js";
|
|
30
|
+
import"./index-5rkh69f3.js";
|
|
31
31
|
import"./index-e8k0v19e.js";
|
|
32
32
|
import"./index-t7hmqgjy.js";
|
|
33
33
|
import"./index-mtqwyjrg.js";
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
} from "./index-fzpt2djt.js";
|
|
37
37
|
import"./index-ejhxgyvm.js";
|
|
38
38
|
import"./index-7g4c7s5r.js";
|
|
39
|
-
import"./index-
|
|
39
|
+
import"./index-hfssjyxs.js";
|
|
40
40
|
import"./index-zxdawwc7.js";
|
|
41
41
|
import"./index-bk5tah7q.js";
|
|
42
42
|
import"./index-gknz3bv1.js";
|
|
@@ -25,76 +25,76 @@ import {
|
|
|
25
25
|
sanitizeWorktreeTaskId,
|
|
26
26
|
standardWorktreeByCallID,
|
|
27
27
|
standardWorktreeSerializationSessions
|
|
28
|
-
} from "./index-
|
|
29
|
-
import"./index-
|
|
30
|
-
import"./index-
|
|
31
|
-
import"./index-
|
|
28
|
+
} from "./index-jx80ed6g.js";
|
|
29
|
+
import"./index-bkpyff61.js";
|
|
30
|
+
import"./index-4mq8r4be.js";
|
|
31
|
+
import"./index-ma71x1aa.js";
|
|
32
32
|
import"./index-j2vv0h13.js";
|
|
33
|
-
import"./index-
|
|
34
|
-
import"./index-
|
|
33
|
+
import"./index-668npagp.js";
|
|
34
|
+
import"./index-7njm9jk1.js";
|
|
35
35
|
import"./index-txdagbh7.js";
|
|
36
|
-
import"./index-
|
|
36
|
+
import"./index-prvancd0.js";
|
|
37
37
|
import"./index-rdec0y3z.js";
|
|
38
|
-
import"./index-
|
|
39
|
-
import"./index-
|
|
40
|
-
import"./index-
|
|
41
|
-
import"./index-
|
|
42
|
-
import"./index-
|
|
43
|
-
import"./index-
|
|
38
|
+
import"./index-d2emv8ap.js";
|
|
39
|
+
import"./index-ymnathfr.js";
|
|
40
|
+
import"./index-r3mffz78.js";
|
|
41
|
+
import"./index-5n760fzn.js";
|
|
42
|
+
import"./index-fd6b9f38.js";
|
|
43
|
+
import"./index-hfnyykvm.js";
|
|
44
44
|
import"./index-cjapb4hy.js";
|
|
45
|
-
import"./index-
|
|
45
|
+
import"./index-6s3ab22d.js";
|
|
46
46
|
import"./index-pt7h91zc.js";
|
|
47
47
|
import"./index-q7sjgr1y.js";
|
|
48
|
-
import"./index-
|
|
49
|
-
import"./index-
|
|
48
|
+
import"./index-nktwf2xm.js";
|
|
49
|
+
import"./index-he2nyr7x.js";
|
|
50
50
|
import"./index-6b295cas.js";
|
|
51
51
|
import"./index-9nyqt3kb.js";
|
|
52
|
-
import"./index-
|
|
52
|
+
import"./index-bgtfvst1.js";
|
|
53
53
|
import"./index-v3bmwmqw.js";
|
|
54
|
-
import"./index-
|
|
55
|
-
import"./index-
|
|
56
|
-
import"./index-
|
|
54
|
+
import"./index-4gacy6y6.js";
|
|
55
|
+
import"./index-nz6ehpjn.js";
|
|
56
|
+
import"./index-x2phyvcv.js";
|
|
57
57
|
import"./index-g4fs6z4e.js";
|
|
58
|
-
import"./index-
|
|
59
|
-
import"./index-
|
|
60
|
-
import"./index-
|
|
58
|
+
import"./index-6dn16dre.js";
|
|
59
|
+
import"./index-tr47q89d.js";
|
|
60
|
+
import"./index-cs0p582p.js";
|
|
61
61
|
import"./index-m9zzj4ee.js";
|
|
62
|
-
import"./index-
|
|
62
|
+
import"./index-84k9zzv1.js";
|
|
63
63
|
import"./index-2s7dvzff.js";
|
|
64
|
-
import"./index-
|
|
65
|
-
import"./index-
|
|
64
|
+
import"./index-jxs9qnad.js";
|
|
65
|
+
import"./index-w2vbaczx.js";
|
|
66
66
|
import"./index-rtry5xyf.js";
|
|
67
67
|
import {
|
|
68
68
|
resolveWorktreeIsolationConfig
|
|
69
|
-
} from "./index-
|
|
69
|
+
} from "./index-vbp35frb.js";
|
|
70
70
|
import"./index-g22dps7x.js";
|
|
71
71
|
import"./index-0725jpp7.js";
|
|
72
|
-
import"./index-
|
|
73
|
-
import"./index-
|
|
74
|
-
import"./index-
|
|
75
|
-
import"./index-
|
|
76
|
-
import"./index-
|
|
77
|
-
import"./index-
|
|
72
|
+
import"./index-1p24bfn2.js";
|
|
73
|
+
import"./index-5ev6f1gj.js";
|
|
74
|
+
import"./index-qh93qjc2.js";
|
|
75
|
+
import"./index-st80sjg7.js";
|
|
76
|
+
import"./index-vg8sxg12.js";
|
|
77
|
+
import"./index-0e318vgt.js";
|
|
78
78
|
import"./index-ry16d01s.js";
|
|
79
79
|
import"./index-rdm3px0g.js";
|
|
80
80
|
import"./index-7pmbnjvj.js";
|
|
81
|
-
import"./index-
|
|
82
|
-
import"./index-
|
|
81
|
+
import"./index-ndec8akq.js";
|
|
82
|
+
import"./index-bg19b84s.js";
|
|
83
83
|
import"./index-vzm6zre7.js";
|
|
84
84
|
import"./index-ae75rja9.js";
|
|
85
|
-
import"./index-
|
|
86
|
-
import"./index-
|
|
85
|
+
import"./index-3atkcqpb.js";
|
|
86
|
+
import"./index-5rkh69f3.js";
|
|
87
87
|
import"./index-e8k0v19e.js";
|
|
88
88
|
import"./index-t7hmqgjy.js";
|
|
89
89
|
import"./index-mtqwyjrg.js";
|
|
90
90
|
import"./index-fzpt2djt.js";
|
|
91
91
|
import"./index-ejhxgyvm.js";
|
|
92
92
|
import"./index-7g4c7s5r.js";
|
|
93
|
-
import"./index-
|
|
93
|
+
import"./index-hfssjyxs.js";
|
|
94
94
|
import"./index-gx2vp8gx.js";
|
|
95
|
-
import"./index-
|
|
95
|
+
import"./index-ngk8hpc3.js";
|
|
96
96
|
import"./index-zxdawwc7.js";
|
|
97
|
-
import"./index-
|
|
97
|
+
import"./index-1dx5zyss.js";
|
|
98
98
|
import"./index-py8wpe81.js";
|
|
99
99
|
import"./index-bk5tah7q.js";
|
|
100
100
|
import"./index-gknz3bv1.js";
|
|
@@ -718,7 +718,7 @@ export declare const COMMAND_REGISTRY: {
|
|
|
718
718
|
readonly details: "An epic is bound to ONE plan: `start` opens it for the current plan, `close` ends it. Requires `epic.mode.enabled: true` in config (top-level `epic` block; no `turbo` block needed — the legacy `turbo.epic` path is still accepted and migrated). `start [--force]` refuses, in order: epic-disabled-by-config, host-unsupported (the host gives the plugin no OpenCode SDK client — OpenCode 2 does not yet — so worktree-isolated coders and the phase review cannot run), no-plan / plan-ledger-unreadable, epic-already-open (idempotent for the same plan) / epic-open-for-other-plan, turbo-active (config turbo_mode, a session with Turbo on, or a running Lean run — Epic enables neither Lean nor Turbo and never waives per-task QA), dirty-baseline (git: uncommitted changes outside .swarm/), detached-head / epic-branch-exists (epic-branch policy), in-flight-coders (any coder dispatch, background delegation, unsettled settlement, or preserved/recovery lane), not-epic-sized (too few pending tasks, insufficient scope coverage, or insufficient effective speedup — run it in Balanced, or reshape it with the plan-shaping suggestions shown; `--force` overrides and is recorded). Non-git projects run an epic serially (one task per wave). Git epics default to `epic.commit_policy: \"epic-branch\"`: start checks out `swarm/epic/<epicKey>` and every Epic commit goes there (epic_next_wave blocks with epic-branch-mismatch, and no landing or residue is committed, while HEAD is elsewhere); `current-branch` keeps commits on the starting branch. In a git epic every coder runs in an isolated worktree (refused EPIC_ISOLATION_DEGRADED when isolation is unavailable) and lands as a `swarm(task <id>): …` merge commit; main-tree files a non-coder writer (test_engineer, docs) wrote for a task are committed as residue of that task; update_task_status writes nothing to git; wave close records the commit of each task as `refs/swarm/epics/<epicKey>/tasks/<id>` (deleted at close unless `epic.retain_refs`; never pushed by default). While open, the architect calls epic_next_wave and does what its status says: it issues one wave at a time (tasks with non-conflicting declared scopes — exclusive tasks alone, at most one task per densely coupled component; phases strictly in order), the architect dispatches one Task per taskId in ONE message and runs per-task QA (pre_check_batch → reviewer + test_engineer → update_task_status(completed)), and the next epic_next_wave closes the wave (recording outcomes and declared-vs-actual divergence) and issues the next; when a phase is done it returns phase-ready-for-review → epic_phase_review → phase_complete. `close [--abandon] [--land squash|merge|none]` refuses while tasks are pending (or the epic is orphaned / unreadable) unless `--abandon`, refuses a dirty tree before landing, writes a close report (epic-report-v2, embedding the epic scorecard) to .swarm/epic/reports/ and .swarm/epic-prior/reports/ (newest 50 kept), and lands the epic branch onto the original branch: squash (default — staged, uncommitted changes for you to review and commit), merge (a --no-ff merge commit), or none (switch back only). The epic branch is kept (remove it with `git branch -D` once committed). A landing conflict is rolled back (the attempted squash or merge is undone) and the epic stays closing — rerun close to resume. `--abandon` never lands; it switches back to the original branch when the tree is clean. `status [--repair-refs]` (also bare /swarm epic) shows the epic, its waves, phases, the task components recorded with the latest wave and recorded divergence, orphan detection (plan renamed or replaced), sentinel/row repair, recorded worktree merge failures, and retires legacy Epic v1 session state once; `--repair-refs` re-adopts task commits a rebase or amend made unreachable from HEAD. `report [<key>|last] [--format json]` shows the epic scorecard: live for the open epic (bare `report`), else from the close report of a past epic in .swarm/epic-prior/reports/ (`last` = newest; `<key>` = a report or epic key) — tasks completed in the epic, waves (count, width), time over closed waves (wave span, task issue→resolve time, and their ratio, a concurrency factor that is NOT a speedup: it includes queueing behind serialized QA), conflicts (merge-back failures, undeclared writes), rework (extra generations, reopens), first-pass gate rates (upper bounds: the failure history is bounded), forced/sizing at start and learned hot files. Epics learn from their outcomes: undeclared writes teach learned co-writes (a task declaring D that also wrote f makes later tasks declaring D conflict with tasks on f — planner analysis only, never write authorization) and incidents (undeclared writes, merge conflicts, Stage B failures, rework, reopens) in excess of clean exposures make a file hot (a task declaring it runs alone) — undeclared writes its strongest learned co-writer explains are discounted (expansion already separates them), so one declarer writing a file is not heat; an empty history learns nothing (neutral start). Each wave close updates the posterior of the epic; close merges it into the project prior .swarm/epic-prior/learning.json (decayed per epic and by age; kept across /swarm close; `epic.learning.*`). `learning` shows what the planner learned and uses now; `prior [show]` shows the project prior; `prior reset` previews and prints a single-use confirm token (15 minutes); `prior reset --confirm=<token>` clears it. Also: clear-merge-failure <taskId> [--confirm]. The former `on` / `off` toggles, the `decide` / `last` subcommands and `calibration` (renamed `learning`) were removed.";
|
|
719
719
|
readonly args: "start [--force] | close [--abandon] [--land squash|merge|none] | status [--repair-refs] | report [<key>|last] [--format json] | learning | prior [show|reset [--confirm=<token>]] | clear-merge-failure <taskId> [--confirm]";
|
|
720
720
|
readonly category: "diagnostics";
|
|
721
|
-
readonly toolPolicy: "
|
|
721
|
+
readonly toolPolicy: "human-only";
|
|
722
722
|
};
|
|
723
723
|
readonly 'dark-matter': {
|
|
724
724
|
readonly handler: (ctx: CommandContext) => Promise<string>;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared gate-aware injection policy (issue #3100).
|
|
3
|
+
*
|
|
4
|
+
* One deterministic decision point for session-state directive channels,
|
|
5
|
+
* keyed by PR-workflow gate mode × content class — never by content
|
|
6
|
+
* heuristics. #3093's plan-cursor/parallel-pre-check suppression is the
|
|
7
|
+
* first registered consumer (migrated with zero behavior change); the
|
|
8
|
+
* agent-activity table channel is the second (new suppression under
|
|
9
|
+
* PR_REVIEW). The swarm-command banner and delegation [NEXT] steering are
|
|
10
|
+
* load-bearing and structurally never-suppressed.
|
|
11
|
+
*
|
|
12
|
+
* Proposed suppression matrix (issue #3100 AC5 — the maintainer confirms
|
|
13
|
+
* the matrix on the issue before merge; this module ships the proposed
|
|
14
|
+
* shape and a ratchet test pins it):
|
|
15
|
+
*
|
|
16
|
+
* | content class | channels | PR_REVIEW | PR_FEEDBACK | no gate* |
|
|
17
|
+
* |---------------------|--------------------------------|-----------|-------------|----------|
|
|
18
|
+
* | plan-execution | plan-cursor, parallel-precheck | suppress | inject | inject |
|
|
19
|
+
* | agent-activity | agent-activity tables | suppress | inject | inject |
|
|
20
|
+
* | command-contract | command-banner | inject | inject | inject |
|
|
21
|
+
* | delegation-steering | delegation-steering | inject | inject | inject |
|
|
22
|
+
*
|
|
23
|
+
* *no gate / a gate owned by a different session / a gate read that
|
|
24
|
+
* failed all arrive here as a null gate state and fail toward emission —
|
|
25
|
+
* matching the #3093 fail-open composition convention: a miss costs extra
|
|
26
|
+
* directives, never hidden ones. (The gate-state READER throws on invalid
|
|
27
|
+
* or unreadable state; the null is the composer's `.catch` result, not the
|
|
28
|
+
* reader's. This module is pure and has no failure path of its own.)
|
|
29
|
+
*
|
|
30
|
+
* Deliberate asymmetry (#3161 PRR-010): composition keys the gate read on
|
|
31
|
+
* the RAW composing sessionID (the composer owns the read; see
|
|
32
|
+
* system-enhancer), while PR-workflow ENFORCEMENT resolves the gate-owning
|
|
33
|
+
* ancestor session via pr-workflow-session-resolver. A pre-gate child
|
|
34
|
+
* session that outlives gate activation therefore still receives these
|
|
35
|
+
* directives. This is intentional: the #3093 session-scoping pin requires
|
|
36
|
+
* a different session's gate NOT to suppress, and changing composition to
|
|
37
|
+
* ancestor resolution would alter that shipped behavior.
|
|
38
|
+
*
|
|
39
|
+
* Divergence disclosure (plan-critic rounds 1/3): `command-banner` and
|
|
40
|
+
* `delegation-steering` are REGISTERED here but their composers do not
|
|
41
|
+
* consult this policy at runtime — the never-suppress guarantee is
|
|
42
|
+
* structural (empty suppression lists below, pinned by a ratchet test),
|
|
43
|
+
* not an emission-site check. If emission-path governance is ever wanted,
|
|
44
|
+
* the fallback is wiring each composer through shouldInjectChannel (the
|
|
45
|
+
* decision is gate-independent for never-suppress classes, so no new gate
|
|
46
|
+
* read would be required).
|
|
47
|
+
*
|
|
48
|
+
* Budget-report consumer (#3161 PRR-003): the context-budget report
|
|
49
|
+
* consumes the plan-cursor channel decision (as an explicit emission
|
|
50
|
+
* flag) so it stops counting a policy-suppressed cursor.
|
|
51
|
+
*
|
|
52
|
+
* Known residual budget-report divergences, NOT yet tracked by an issue
|
|
53
|
+
* (verify they still exist before filing):
|
|
54
|
+
* - DISCOVER-mode counting — the emission conditions require a non-DISCOVER
|
|
55
|
+
* mode while the report is mode-blind, so in DISCOVER it still counts a
|
|
56
|
+
* cursor the prompt never contained.
|
|
57
|
+
* - Path B ranked-drop counting — a cursor candidate skipped by the
|
|
58
|
+
* scoring injection loop is still counted.
|
|
59
|
+
* #3161 tracks the budget twin itself (PRR-003), not these two.
|
|
60
|
+
*/
|
|
61
|
+
import type { PrWorkflowMode } from './pr-workflow-gate';
|
|
62
|
+
/** Content classes the policy reasons about. */
|
|
63
|
+
export type InjectionContentClass = 'plan-execution' | 'agent-activity' | 'command-contract' | 'delegation-steering';
|
|
64
|
+
/** The directive channels registered as policy consumers (issue #3100 scope). */
|
|
65
|
+
export type InjectionChannel = 'plan-cursor' | 'parallel-precheck' | 'agent-activity' | 'command-banner' | 'delegation-steering';
|
|
66
|
+
/**
|
|
67
|
+
* Minimal gate-state shape the policy needs (structural: a full
|
|
68
|
+
* PrWorkflowGateState satisfies it, keeping this module pure and
|
|
69
|
+
* runtime-independent of the gate store).
|
|
70
|
+
*/
|
|
71
|
+
export interface InjectionGateState {
|
|
72
|
+
mode: PrWorkflowMode;
|
|
73
|
+
}
|
|
74
|
+
/** Channel registry: every registered channel maps to exactly one content class. */
|
|
75
|
+
export declare const INJECTION_CHANNEL_CONTENT_CLASS: Readonly<Record<InjectionChannel, InjectionContentClass>>;
|
|
76
|
+
/**
|
|
77
|
+
* The suppression matrix: gate modes under which a content class is
|
|
78
|
+
* suppressed. Empty list = must-not-suppress under every mode (the two
|
|
79
|
+
* load-bearing classes; a ratchet test pins their emptiness).
|
|
80
|
+
*/
|
|
81
|
+
export declare const SUPPRESSED_UNDER: Readonly<Record<InjectionContentClass, readonly InjectionGateState['mode'][]>>;
|
|
82
|
+
/**
|
|
83
|
+
* Decide whether a channel may inject this turn. Deterministic: a pure
|
|
84
|
+
* function of the channel's content class and the gate mode. Unknown
|
|
85
|
+
* channels and absent gate state (no gate, read failure, foreign session)
|
|
86
|
+
* fail toward emission.
|
|
87
|
+
*
|
|
88
|
+
* The own-property check (not a truthiness check) is load-bearing: the
|
|
89
|
+
* registries are plain object literals, so a PROTOTYPE key such as
|
|
90
|
+
* 'constructor' or 'toString' resolves to a truthy inherited value that
|
|
91
|
+
* would otherwise pass a truthiness guard and then throw on
|
|
92
|
+
* `SUPPRESSED_UNDER[<Function>].includes` instead of failing open.
|
|
93
|
+
*/
|
|
94
|
+
export declare function shouldInjectChannel(channel: InjectionChannel, gateState: InjectionGateState | null): boolean;
|
|
@@ -15,6 +15,7 @@ import { type PrReviewDimensionCancellationRecord, type PrReviewPartialBaseCover
|
|
|
15
15
|
import { type CriticOutcome } from '../pr-review/finding-policy.js';
|
|
16
16
|
import { type PrReviewComposablePhase, type PrReviewItemClaim, type PrReviewPhaseComposition, parseCriticVerdict } from '../pr-review/legacy-transcript-adapter.js';
|
|
17
17
|
import { withPrWorkflowCheckoutMutationLock, workflowCheckoutMutationLockRelativePath, workflowGateStateLockRelativePath, workflowGateStateRelativePath } from '../pr-review/persistence.js';
|
|
18
|
+
import { type PrReviewVerdictSettlementPhase } from '../pr-review/verdict-settlement.js';
|
|
18
19
|
import { type ForgeContext } from '../providers/forge-provider.js';
|
|
19
20
|
import { resolveGhBinary } from '../tools/gh-evidence.js';
|
|
20
21
|
import { classifyLaneLivenessCondition, type EffectivePrLaneHorizon, resolveEffectivePrLaneHorizonMs } from './lane-liveness-watchdog.js';
|
|
@@ -390,6 +391,14 @@ type PrReviewArtifactRecord = {
|
|
|
390
391
|
*/
|
|
391
392
|
risk_impact?: PrReviewRiskImpact;
|
|
392
393
|
risk_tags?: PrReviewRiskTag[];
|
|
394
|
+
/**
|
|
395
|
+
* Model-supplied critic status (issue #3101). Present on post_critic
|
|
396
|
+
* records when the caller attests a critic outcome; the records-match
|
|
397
|
+
* validator rejects any value on a disclosed-dead critic item (the model
|
|
398
|
+
* never authors a critic status there — the writer's settlement injection
|
|
399
|
+
* derives it).
|
|
400
|
+
*/
|
|
401
|
+
critic_status?: string;
|
|
393
402
|
};
|
|
394
403
|
interface PrFeedbackScopeDeclarationRecord {
|
|
395
404
|
taskId: string;
|
|
@@ -552,6 +561,14 @@ export interface PrWorkflowGateState {
|
|
|
552
561
|
prReviewArtifactRunId?: string;
|
|
553
562
|
prReviewFindingsPath?: string;
|
|
554
563
|
prReviewArtifactBoundaries?: PrReviewArtifactBoundary[];
|
|
564
|
+
/**
|
|
565
|
+
* Issue #3101: sha256 of each phase's persisted N-of-M verdict-settlement
|
|
566
|
+
* receipt (the exact file bytes, recorded at persist time). Consumption
|
|
567
|
+
* re-verifies the digest so a receipt rewritten after the fact under the
|
|
568
|
+
* same head/digest identity fails closed — the same controller-held anchor
|
|
569
|
+
* discipline as `prReviewCoverageDisclosureDigest` (issue #2383).
|
|
570
|
+
*/
|
|
571
|
+
prReviewVerdictSettlementDigests?: Partial<Record<PrReviewVerdictSettlementPhase, string>>;
|
|
555
572
|
prReviewPartialBaseCoverage?: PrReviewPartialBaseCoverageRecord;
|
|
556
573
|
prReviewCoverageDisclosurePath?: string;
|
|
557
574
|
prReviewCoverageDisclosureDigest?: string;
|
|
@@ -2227,6 +2244,25 @@ interface CandidateArtifactParseResult {
|
|
|
2227
2244
|
declare function resolvePrReviewRowFamily(workflowLane: string | undefined, mode?: string): RowFormatFamily;
|
|
2228
2245
|
declare function parseCanonicalCandidateRows(text: string, fallbackFamily: RowFormatFamily): CandidateArtifactParseResult;
|
|
2229
2246
|
declare function extractCandidateIds(text: string, fallbackFamily: RowFormatFamily, scopeToLanes?: readonly string[]): string[];
|
|
2247
|
+
/**
|
|
2248
|
+
* Issue #3101: the per-item disclosure rows of admitted N-of-M verdict
|
|
2249
|
+
* settlements (both phases, effective sets), for additive tool-response echoes.
|
|
2250
|
+
*/
|
|
2251
|
+
export declare function readPrReviewVerdictSettlementReceiptItems(directory: string, sessionID: string): Promise<Array<{
|
|
2252
|
+
itemId: string;
|
|
2253
|
+
sourceBatchId: string;
|
|
2254
|
+
sourceLaneId: string;
|
|
2255
|
+
disposition: string;
|
|
2256
|
+
evidenceClass: string;
|
|
2257
|
+
terminalStatus: string;
|
|
2258
|
+
}>>;
|
|
2259
|
+
/**
|
|
2260
|
+
* Issue #3101: the effective (receipt ∩ current-unclaimed) item ids of an
|
|
2261
|
+
* admitted N-of-M verdict settlement for a phase; empty when no covering
|
|
2262
|
+
* settlement exists. Consumers: the artifact writer's critic-settlement
|
|
2263
|
+
* injection, the exact-cover exemption, and the tool-response echoes.
|
|
2264
|
+
*/
|
|
2265
|
+
export declare function readPrReviewVerdictSettlementEffectiveIds(directory: string, sessionID: string, phase: PrReviewVerdictSettlementPhase): Promise<ReadonlySet<string>>;
|
|
2230
2266
|
/** Read the durable critic settlement projection used by terminal readiness. */
|
|
2231
2267
|
export declare function readAuthoritativePrReviewCriticSettlements(directory: string, sessionID: string): Promise<Array<{
|
|
2232
2268
|
findingId: string;
|
|
@@ -2246,13 +2282,16 @@ export declare function readAuthoritativePrReviewCriticSettlements(directory: st
|
|
|
2246
2282
|
* unchallenged, with the only surface symptom a downstream
|
|
2247
2283
|
* `no authoritative reviewer verdict` that names a consequence, not the cause.
|
|
2248
2284
|
*
|
|
2249
|
-
*
|
|
2285
|
+
* Under plain composition this is unreachable by construction: settlement *is*
|
|
2250
2286
|
* `unclaimed.length === 0` over the very map derivation projects, and claims are
|
|
2251
2287
|
* filtered to `requiredInventory`, so `unclaimed === []` implies the map covers
|
|
2252
|
-
* every required item.
|
|
2253
|
-
*
|
|
2254
|
-
*
|
|
2255
|
-
*
|
|
2288
|
+
* every required item. Under an admitted N-of-M verdict settlement (issue
|
|
2289
|
+
* #3101) a settled phase can still carry unclaimed items, and this guard
|
|
2290
|
+
* early-returns for them — on that path the settlement receipt, not this
|
|
2291
|
+
* assertion, is the coverage proof. The property check still stands for every
|
|
2292
|
+
* plain-composition settle so a future refactor that re-splits settlement from
|
|
2293
|
+
* derivation fails loudly at the gate instead of silently skipping the critic
|
|
2294
|
+
* phase.
|
|
2256
2295
|
*
|
|
2257
2296
|
* Fail-closed and always on; never downgraded to a warning, because the failure
|
|
2258
2297
|
* it catches is invisible in the passing direction. Pure over values the caller
|