opencode-swarm 7.192.4 → 7.194.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/README.md +1 -1
- package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
- package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
- package/dist/background/pending-delegations.d.ts +8 -0
- package/dist/cli/{auto-checkpoint-1xy6dprq.js → auto-checkpoint-67dk8rjz.js} +8 -8
- package/dist/cli/{checkpoint-wvhmkgv5.js → checkpoint-jbqqyp5e.js} +15 -15
- package/dist/cli/{coder-settlement-wpkmkgcf.js → coder-settlement-a09t7mvx.js} +11 -11
- package/dist/cli/{config-doctor-xvhejh7g.js → config-doctor-dkp263xx.js} +14 -14
- package/dist/cli/{core-yzgm8pcw.js → core-stnmz1rg.js} +4 -4
- package/dist/cli/{curation-policy-yzdznz4z.js → curation-policy-8j6qn6nt.js} +4 -4
- package/dist/cli/{curator-drift-5c041yaf.js → curator-drift-d1wedyed.js} +9 -9
- package/dist/cli/curator-llm-factory-97dpqjz4.js +82 -0
- package/dist/cli/{curator-3xh6246r.js → curator-mc0wcpvw.js} +41 -41
- package/dist/cli/{doctor-knowledge-receipt-phase-id-cx6n5jtp.js → doctor-knowledge-receipt-phase-id-dfwx5jha.js} +8 -8
- package/dist/cli/{evidence-summary-service-cc139a85.js → evidence-summary-service-k1shqefr.js} +18 -18
- package/dist/cli/{gate-evidence-7azk0xbt.js → gate-evidence-vw9y4gs6.js} +6 -6
- package/dist/cli/guardrail-explain-24g3bsqw.js +83 -0
- package/dist/cli/{guardrail-log-env1h4wr.js → guardrail-log-vbeyx6nq.js} +7 -7
- package/dist/cli/{guardrail-reset-1404ymcw.js → guardrail-reset-jwtt15e3.js} +41 -41
- package/dist/cli/{hive-promoter-hap3dh02.js → hive-promoter-p9ad63mx.js} +41 -41
- package/dist/cli/{index-8zj647hc.js → index-0e318vgt.js} +1 -1
- package/dist/cli/{index-rqapvhh5.js → index-0xe19j9g.js} +1 -1
- package/dist/cli/{index-py8wpe81.js → index-1jt12p3y.js} +1 -1
- package/dist/cli/{index-bgzpw6ge.js → index-3atkcqpb.js} +1 -1
- package/dist/cli/{index-j4pxkvw3.js → index-3dpb3kps.js} +4 -4
- package/dist/cli/{index-gkr6ns9n.js → index-43v5axvm.js} +4 -4
- package/dist/cli/{index-xwxqtdwz.js → index-48h1yn6c.js} +4 -4
- package/dist/cli/{index-s68yyat0.js → index-4ftg3p9n.js} +2 -2
- package/dist/cli/{index-22ww8fjt.js → index-51dxek4p.js} +3 -3
- 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-g8jd3h4r.js → index-6s3ab22d.js} +2 -2
- package/dist/cli/{index-cp9h2sqb.js → index-6xppb1er.js} +1 -1
- package/dist/cli/{index-6vwnm3sm.js → index-7bfshvq1.js} +3 -3
- 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-vgktct21.js → index-9bzgea2y.js} +4 -4
- package/dist/cli/{index-jb669k7s.js → index-9kbnxb7v.js} +2 -2
- package/dist/cli/{index-c5gb6a86.js → index-9v43y7y6.js} +10 -10
- package/dist/cli/{index-zya4a544.js → index-ajkdt5b8.js} +4 -4
- package/dist/cli/{index-54p1vs33.js → index-at34nry4.js} +3 -3
- package/dist/cli/{index-rsfvxaw0.js → index-cwr69qw7.js} +7 -7
- package/dist/cli/{index-72eh47b2.js → index-d7pznffh.js} +4 -4
- package/dist/cli/{index-xpwp9hw1.js → index-dy7nztyp.js} +6 -6
- package/dist/cli/{index-g2phkwh2.js → index-ehab3z5y.js} +4 -4
- package/dist/cli/{index-6k70exke.js → index-f3ttgqak.js} +2 -2
- package/dist/cli/{index-fzqn2kk8.js → index-fd6b9f38.js} +2 -2
- package/dist/cli/{index-q47snsb2.js → index-h14wpwpa.js} +4 -4
- 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-2qpme44n.js → index-jrs2qh6j.js} +3 -3
- package/dist/cli/{index-s43zb23q.js → index-kp5qw5p4.js} +43 -43
- package/dist/cli/{index-myjqj3na.js → index-n5xwza76.js} +7 -7
- package/dist/cli/{index-4twjbsfw.js → index-ndec8akq.js} +1 -1
- package/dist/cli/{index-a9m7h5v0.js → index-qh93qjc2.js} +1 -1
- package/dist/cli/{index-kn16k0fv.js → index-r8mavcg6.js} +5 -5
- package/dist/cli/{index-tww9qw9z.js → index-rpnkp79f.js} +6 -6
- package/dist/cli/{index-dt4cjxbz.js → index-st80sjg7.js} +1 -1
- package/dist/cli/{index-c8fjbghs.js → index-t6aae9wq.js} +1 -1
- package/dist/cli/{index-c6wzbs0g.js → index-vfdkvvkf.js} +2 -2
- package/dist/cli/{index-mbn4vn3z.js → index-vg8sxg12.js} +1 -1
- package/dist/cli/{index-5gyq54c5.js → index-vjytfp05.js} +4591 -4125
- package/dist/cli/{index-5dws7eyb.js → index-w2vbaczx.js} +1 -1
- package/dist/cli/{index-ftatc9wj.js → index-x7qeaa9y.js} +41 -41
- package/dist/cli/{index-v6ghzghn.js → index-y3n9ry9q.js} +3 -3
- package/dist/cli/{index-qzkrcz1r.js → index-yfbk69b1.js} +6 -6
- package/dist/cli/index.js +42 -42
- package/dist/cli/{knowledge-escalator-eta167xh.js → knowledge-escalator-g6dctrae.js} +13 -13
- package/dist/cli/{knowledge-events-mz25jn9f.js → knowledge-events-acdz0x2g.js} +11 -11
- package/dist/cli/{knowledge-link-a5tvjqdt.js → knowledge-link-srnt95wh.js} +3 -3
- package/dist/cli/{knowledge-store-qd08dbws.js → knowledge-store-vxtj4m59.js} +4 -4
- package/dist/cli/{knowledge-validator-jyrsgamq.js → knowledge-validator-b545vc9t.js} +6 -6
- package/dist/cli/{mcp-4wgxc5ax.js → mcp-c3t18313.js} +1 -1
- package/dist/cli/{model-preflight-4p3x4vma.js → model-preflight-r99c08re.js} +41 -41
- package/dist/cli/{pending-delegations-7hm6xgzw.js → pending-delegations-57f3049j.js} +12 -10
- package/dist/cli/{pr-subscriptions-2y3w5pyt.js → pr-subscriptions-5jb793xe.js} +10 -10
- package/dist/cli/{pr-workflow-gate-y04z3z80.js → pr-workflow-gate-n3x25ddw.js} +47 -41
- package/dist/cli/{runner-8qybgy4n.js → runner-b2e89cp1.js} +4 -4
- package/dist/cli/{scan-cursor-2hpc6mxt.js → scan-cursor-s9mazw82.js} +5 -5
- package/dist/cli/{schema-33k1e2cv.js → schema-7czxpvwm.js} +2 -2
- package/dist/cli/{scope-persistence-y769jep8.js → scope-persistence-y0ebqyjm.js} +14 -14
- package/dist/cli/{server-199m00cz.js → server-m10e78ey.js} +41 -41
- package/dist/cli/{skill-generator-b9by3739.js → skill-generator-kzw1dcba.js} +15 -15
- package/dist/cli/{snapshot-coordination-init-wyyn8ftk.js → snapshot-coordination-init-z1aqsvn4.js} +41 -41
- package/dist/cli/{speckit-checkoff-y2ywmh9k.js → speckit-checkoff-1g3vzywn.js} +5 -5
- package/dist/cli/{workspace-snapshot-vfpnxjsp.js → workspace-snapshot-p69t9zn7.js} +3 -3
- package/dist/cli/{worktree-collision-ownership-hg0yrc5b.js → worktree-collision-ownership-d0etv08a.js} +11 -11
- package/dist/cli/{worktree-isolation-epbn1xgh.js → worktree-isolation-dj2qw13p.js} +41 -41
- package/dist/commands/registry.d.ts +2 -2
- package/dist/epic/start.d.ts +8 -5
- package/dist/hooks/injection-policy.d.ts +94 -0
- package/dist/hooks/pr-workflow-gate.d.ts +81 -5
- package/dist/host/v2/session-client.d.ts +77 -0
- package/dist/host/v2/types.d.ts +256 -11
- package/dist/index.js +495 -492
- 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/pr-workflow-status.d.ts +24 -1
- 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
package/dist/cli/{snapshot-coordination-init-wyyn8ftk.js → snapshot-coordination-init-z1aqsvn4.js}
RENAMED
|
@@ -8,75 +8,75 @@ 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-vjytfp05.js";
|
|
12
|
+
import"./index-51dxek4p.js";
|
|
13
|
+
import"./index-ehab3z5y.js";
|
|
14
|
+
import"./index-48h1yn6c.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-vfdkvvkf.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-y3n9ry9q.js";
|
|
22
|
+
import"./index-n5xwza76.js";
|
|
23
|
+
import"./index-9bzgea2y.js";
|
|
24
|
+
import"./index-rpnkp79f.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-yfbk69b1.js";
|
|
32
|
+
import"./index-9v43y7y6.js";
|
|
33
33
|
import"./index-6b295cas.js";
|
|
34
34
|
import"./index-9nyqt3kb.js";
|
|
35
|
-
import"./index-
|
|
35
|
+
import"./index-6xppb1er.js";
|
|
36
36
|
import"./index-v3bmwmqw.js";
|
|
37
|
-
import"./index-
|
|
38
|
-
import"./index-
|
|
39
|
-
import"./index-
|
|
37
|
+
import"./index-f3ttgqak.js";
|
|
38
|
+
import"./index-jrs2qh6j.js";
|
|
39
|
+
import"./index-d7pznffh.js";
|
|
40
40
|
import"./index-g4fs6z4e.js";
|
|
41
|
-
import"./index-
|
|
42
|
-
import"./index-
|
|
43
|
-
import"./index-
|
|
41
|
+
import"./index-dy7nztyp.js";
|
|
42
|
+
import"./index-ajkdt5b8.js";
|
|
43
|
+
import"./index-43v5axvm.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-3dpb3kps.js";
|
|
48
|
+
import"./index-w2vbaczx.js";
|
|
49
49
|
import"./index-rtry5xyf.js";
|
|
50
|
-
import"./index-
|
|
50
|
+
import"./index-7bfshvq1.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-r8mavcg6.js";
|
|
54
|
+
import"./index-at34nry4.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-cwr69qw7.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-0xe19j9g.js";
|
|
77
77
|
import"./index-zxdawwc7.js";
|
|
78
|
-
import"./index-
|
|
79
|
-
import"./index-
|
|
78
|
+
import"./index-4ftg3p9n.js";
|
|
79
|
+
import"./index-1jt12p3y.js";
|
|
80
80
|
import"./index-bk5tah7q.js";
|
|
81
81
|
import"./index-gknz3bv1.js";
|
|
82
82
|
import"./index-zpsr8rpc.js";
|
|
@@ -7,14 +7,14 @@ import {
|
|
|
7
7
|
parseSpeckitTasksContent,
|
|
8
8
|
propagateSpeckitCheckoff,
|
|
9
9
|
writeSpeckitCheckoffLedger
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-f3ttgqak.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-0xe19j9g.js";
|
|
15
15
|
import"./index-zxdawwc7.js";
|
|
16
|
-
import"./index-
|
|
17
|
-
import"./index-
|
|
16
|
+
import"./index-4ftg3p9n.js";
|
|
17
|
+
import"./index-1jt12p3y.js";
|
|
18
18
|
import"./index-bk5tah7q.js";
|
|
19
19
|
import"./index-gknz3bv1.js";
|
|
20
20
|
import"./index-zpsr8rpc.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-dy7nztyp.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-cwr69qw7.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,77 +25,77 @@ 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-vjytfp05.js";
|
|
29
|
+
import"./index-51dxek4p.js";
|
|
30
|
+
import"./index-ehab3z5y.js";
|
|
31
|
+
import"./index-48h1yn6c.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-vfdkvvkf.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-y3n9ry9q.js";
|
|
39
|
+
import"./index-n5xwza76.js";
|
|
40
|
+
import"./index-9bzgea2y.js";
|
|
41
|
+
import"./index-rpnkp79f.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-yfbk69b1.js";
|
|
49
|
+
import"./index-9v43y7y6.js";
|
|
50
50
|
import"./index-6b295cas.js";
|
|
51
51
|
import"./index-9nyqt3kb.js";
|
|
52
|
-
import"./index-
|
|
52
|
+
import"./index-6xppb1er.js";
|
|
53
53
|
import"./index-v3bmwmqw.js";
|
|
54
|
-
import"./index-
|
|
55
|
-
import"./index-
|
|
56
|
-
import"./index-
|
|
54
|
+
import"./index-f3ttgqak.js";
|
|
55
|
+
import"./index-jrs2qh6j.js";
|
|
56
|
+
import"./index-d7pznffh.js";
|
|
57
57
|
import"./index-g4fs6z4e.js";
|
|
58
|
-
import"./index-
|
|
59
|
-
import"./index-
|
|
60
|
-
import"./index-
|
|
58
|
+
import"./index-dy7nztyp.js";
|
|
59
|
+
import"./index-ajkdt5b8.js";
|
|
60
|
+
import"./index-43v5axvm.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-3dpb3kps.js";
|
|
65
|
+
import"./index-w2vbaczx.js";
|
|
66
66
|
import"./index-rtry5xyf.js";
|
|
67
67
|
import {
|
|
68
68
|
resolveWorktreeIsolationConfig
|
|
69
|
-
} from "./index-
|
|
69
|
+
} from "./index-7bfshvq1.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-r8mavcg6.js";
|
|
73
|
+
import"./index-at34nry4.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-cwr69qw7.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-0xe19j9g.js";
|
|
96
96
|
import"./index-zxdawwc7.js";
|
|
97
|
-
import"./index-
|
|
98
|
-
import"./index-
|
|
97
|
+
import"./index-4ftg3p9n.js";
|
|
98
|
+
import"./index-1jt12p3y.js";
|
|
99
99
|
import"./index-bk5tah7q.js";
|
|
100
100
|
import"./index-gknz3bv1.js";
|
|
101
101
|
import"./index-zpsr8rpc.js";
|
|
@@ -715,10 +715,10 @@ export declare const COMMAND_REGISTRY: {
|
|
|
715
715
|
readonly epic: {
|
|
716
716
|
readonly handler: (ctx: CommandContext) => Promise<string>;
|
|
717
717
|
readonly description: "Open, inspect, and close a plan-scoped epic (coupling-aware parallel execution of the current plan)";
|
|
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
|
|
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; on OpenCode 2 the v2 adapter now ships one, so this refusal no longer fires there — v2 is held by the child-session placement work instead), 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>;
|
package/dist/epic/start.d.ts
CHANGED
|
@@ -97,7 +97,7 @@ export interface EpicStartOptions {
|
|
|
97
97
|
* with `client: undefined` (`src/host/v2/setup.ts`), so an epic there could
|
|
98
98
|
* neither dispatch a coder nor complete a phase.
|
|
99
99
|
*/
|
|
100
|
-
export declare const EPIC_HOST_UNSUPPORTED_MESSAGE = "This OpenCode host gives the plugin no SDK client
|
|
100
|
+
export declare const EPIC_HOST_UNSUPPORTED_MESSAGE = "This OpenCode host gives the plugin no SDK client. Epic needs it for worktree-isolated coders and for the epic_phase_review reviewer/critic, so an epic here could neither run its coders nor complete a phase. Run the plan in Balanced, or use an OpenCode 1.x host (1.18.29+). (On OpenCode 2 the v2 adapter now ships a session-capable client, so this refusal no longer fires there \u2014 Epic on v2 is held by the #3169 child-session placement work instead.)";
|
|
101
101
|
/** Durable Lean run marked `running` — read without the migrating Lean reader. */
|
|
102
102
|
declare function findRunningLeanRun(directory: string): string | null;
|
|
103
103
|
/** Why Turbo blocks the start, or null (M-a). */
|
|
@@ -163,10 +163,13 @@ export declare const _internals: {
|
|
|
163
163
|
hasActiveTurboMode: () => boolean;
|
|
164
164
|
/**
|
|
165
165
|
* False only when the plugin was initialized on a host that supplies no
|
|
166
|
-
* SDK client: the v1 init stores the host client,
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
* Capability-based:
|
|
166
|
+
* SDK client: the v1 init stores the host client, an uninitialized process
|
|
167
|
+
* (tests, scripts) keeps the initial `null`, and only a genuinely
|
|
168
|
+
* client-less host stores `undefined` — which is not a host verdict, so
|
|
169
|
+
* it is allowed. Capability-based: the v2 adapter now ships a
|
|
170
|
+
* session-capable client (the #3169 session shim), so this passes on v2;
|
|
171
|
+
* Epic's v2 execution is held by the entry-point double-gate and the
|
|
172
|
+
* child-session placement work, not by this check.
|
|
170
173
|
*/
|
|
171
174
|
hostProvidesClient: () => boolean;
|
|
172
175
|
findRunningLeanRun: typeof findRunningLeanRun;
|
|
@@ -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;
|
|
@@ -2191,6 +2208,32 @@ interface PrReviewGateContext {
|
|
|
2191
2208
|
*/
|
|
2192
2209
|
candidateSeverities?: Map<string, CandidateSeverity>;
|
|
2193
2210
|
}
|
|
2211
|
+
/**
|
|
2212
|
+
* Issue #3095: read-surface reuse of the derivation above for
|
|
2213
|
+
* `pr_workflow_status`. The derivation itself stays single-sourced: every
|
|
2214
|
+
* production caller is a validation/enforcement path that must keep throwing,
|
|
2215
|
+
* so this wrapper exists only to thread the SAME result to a read-only status
|
|
2216
|
+
* tool and to degrade fail-soft instead of blocking an observation. A status
|
|
2217
|
+
* read must never fail the whole tool for an unbound head or an unreadable
|
|
2218
|
+
* revision digest — the caller renders the `unavailable` arm (with the
|
|
2219
|
+
* bounded reason) and still projects boundaries and lane coverage.
|
|
2220
|
+
*
|
|
2221
|
+
* Read-only by construction: it performs no writes and mutates no state.
|
|
2222
|
+
* COST DISCLOSURE (not free): resolving the derivation context runs the
|
|
2223
|
+
* revision-digest computation on every bound PR_REVIEW call — three bounded
|
|
2224
|
+
* git processes plus a re-read/hash of every changed file
|
|
2225
|
+
* (`createPrReviewGateContext` → `resolvePrWorkflowRevisionDigestForGate` →
|
|
2226
|
+
* the workspace-snapshot digest path). An observation surface pays the same
|
|
2227
|
+
* digest price an enforcement call would.
|
|
2228
|
+
*/
|
|
2229
|
+
export type PrReviewCandidateInventoryForStatus = {
|
|
2230
|
+
state: 'available';
|
|
2231
|
+
inventory: string[];
|
|
2232
|
+
} | {
|
|
2233
|
+
state: 'unavailable';
|
|
2234
|
+
reason: string;
|
|
2235
|
+
};
|
|
2236
|
+
export declare function derivePrReviewCandidateInventoryForStatus(directory: string, state: PrWorkflowGateState): Promise<PrReviewCandidateInventoryForStatus>;
|
|
2194
2237
|
/**
|
|
2195
2238
|
* Extract candidate ids from a discovery artifact's [CANDIDATE] rows. When
|
|
2196
2239
|
* `scopeToLanes` is given (base-dimension sources credited for only a subset
|
|
@@ -2227,6 +2270,25 @@ interface CandidateArtifactParseResult {
|
|
|
2227
2270
|
declare function resolvePrReviewRowFamily(workflowLane: string | undefined, mode?: string): RowFormatFamily;
|
|
2228
2271
|
declare function parseCanonicalCandidateRows(text: string, fallbackFamily: RowFormatFamily): CandidateArtifactParseResult;
|
|
2229
2272
|
declare function extractCandidateIds(text: string, fallbackFamily: RowFormatFamily, scopeToLanes?: readonly string[]): string[];
|
|
2273
|
+
/**
|
|
2274
|
+
* Issue #3101: the per-item disclosure rows of admitted N-of-M verdict
|
|
2275
|
+
* settlements (both phases, effective sets), for additive tool-response echoes.
|
|
2276
|
+
*/
|
|
2277
|
+
export declare function readPrReviewVerdictSettlementReceiptItems(directory: string, sessionID: string): Promise<Array<{
|
|
2278
|
+
itemId: string;
|
|
2279
|
+
sourceBatchId: string;
|
|
2280
|
+
sourceLaneId: string;
|
|
2281
|
+
disposition: string;
|
|
2282
|
+
evidenceClass: string;
|
|
2283
|
+
terminalStatus: string;
|
|
2284
|
+
}>>;
|
|
2285
|
+
/**
|
|
2286
|
+
* Issue #3101: the effective (receipt ∩ current-unclaimed) item ids of an
|
|
2287
|
+
* admitted N-of-M verdict settlement for a phase; empty when no covering
|
|
2288
|
+
* settlement exists. Consumers: the artifact writer's critic-settlement
|
|
2289
|
+
* injection, the exact-cover exemption, and the tool-response echoes.
|
|
2290
|
+
*/
|
|
2291
|
+
export declare function readPrReviewVerdictSettlementEffectiveIds(directory: string, sessionID: string, phase: PrReviewVerdictSettlementPhase): Promise<ReadonlySet<string>>;
|
|
2230
2292
|
/** Read the durable critic settlement projection used by terminal readiness. */
|
|
2231
2293
|
export declare function readAuthoritativePrReviewCriticSettlements(directory: string, sessionID: string): Promise<Array<{
|
|
2232
2294
|
findingId: string;
|
|
@@ -2246,13 +2308,16 @@ export declare function readAuthoritativePrReviewCriticSettlements(directory: st
|
|
|
2246
2308
|
* unchallenged, with the only surface symptom a downstream
|
|
2247
2309
|
* `no authoritative reviewer verdict` that names a consequence, not the cause.
|
|
2248
2310
|
*
|
|
2249
|
-
*
|
|
2311
|
+
* Under plain composition this is unreachable by construction: settlement *is*
|
|
2250
2312
|
* `unclaimed.length === 0` over the very map derivation projects, and claims are
|
|
2251
2313
|
* filtered to `requiredInventory`, so `unclaimed === []` implies the map covers
|
|
2252
|
-
* every required item.
|
|
2253
|
-
*
|
|
2254
|
-
*
|
|
2255
|
-
*
|
|
2314
|
+
* every required item. Under an admitted N-of-M verdict settlement (issue
|
|
2315
|
+
* #3101) a settled phase can still carry unclaimed items, and this guard
|
|
2316
|
+
* early-returns for them — on that path the settlement receipt, not this
|
|
2317
|
+
* assertion, is the coverage proof. The property check still stands for every
|
|
2318
|
+
* plain-composition settle so a future refactor that re-splits settlement from
|
|
2319
|
+
* derivation fails loudly at the gate instead of silently skipping the critic
|
|
2320
|
+
* phase.
|
|
2256
2321
|
*
|
|
2257
2322
|
* Fail-closed and always on; never downgraded to a warning, because the failure
|
|
2258
2323
|
* it catches is invisible in the passing direction. Pure over values the caller
|
|
@@ -2367,6 +2432,17 @@ export interface PrWorkflowGateRecoveryRead {
|
|
|
2367
2432
|
* availability one.
|
|
2368
2433
|
*/
|
|
2369
2434
|
armedShapeUnreadable: boolean;
|
|
2435
|
+
/**
|
|
2436
|
+
* true when the salvage reconstructed ONLY the abort-relevant fields and
|
|
2437
|
+
* every `prReview*` projection field (base dispatches, artifact
|
|
2438
|
+
* boundaries, run id, findings path, settlement digests) was dropped
|
|
2439
|
+
* because the shadow bytes failed schema validation. The status tool uses
|
|
2440
|
+
* this to mark its derived PR_REVIEW sections `unavailable` instead of
|
|
2441
|
+
* reporting healthy-but-empty coverage — an absent field on a salvaged
|
|
2442
|
+
* state proves nothing about the workflow. Present only when true; a
|
|
2443
|
+
* schema-valid shadow (or an ordinary healthy read) keeps full fidelity.
|
|
2444
|
+
*/
|
|
2445
|
+
prReviewProjectionDropped?: boolean;
|
|
2370
2446
|
}
|
|
2371
2447
|
/**
|
|
2372
2448
|
* Recovery-only gate-state reader (issue #2242 R4, wedge W-5).
|