opencode-swarm 7.184.7 → 7.184.9

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 (92) hide show
  1. package/.opencode/skills/issue-ingest/SKILL.md +1 -1
  2. package/.opencode/skills/swarm-pr-review/SKILL.md +3 -3
  3. package/.opencode/skills/swarm-pr-review/references/lane-output-recoverability.md +20 -0
  4. package/README.md +12 -4
  5. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  6. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  7. package/dist/cli/{coder-settlement-2759zt77.js → coder-settlement-wv26kvbq.js} +10 -10
  8. package/dist/cli/{config-doctor-g48tz4kt.js → config-doctor-0v3a8gwd.js} +2 -2
  9. package/dist/cli/{core-1jfgxw72.js → core-sw3g54fw.js} +3 -3
  10. package/dist/cli/{curation-policy-k43q6b91.js → curation-policy-734npcqk.js} +4 -4
  11. package/dist/cli/{curator-m7sja3jp.js → curator-1ffd62zb.js} +37 -37
  12. package/dist/cli/{curator-drift-5wc9jfmy.js → curator-drift-hbpphpph.js} +8 -8
  13. package/dist/cli/curator-llm-factory-0n05cgjf.js +75 -0
  14. package/dist/cli/{evidence-summary-service-sx8x12w0.js → evidence-summary-service-yynh7bqj.js} +16 -16
  15. package/dist/cli/{gate-evidence-znfffz94.js → gate-evidence-72cmq7sq.js} +5 -5
  16. package/dist/cli/guardrail-explain-sadek1sk.js +76 -0
  17. package/dist/cli/{guardrail-log-mcv4ad3t.js → guardrail-log-7202nsc9.js} +6 -6
  18. package/dist/cli/{guardrail-reset-ksrr2r0n.js → guardrail-reset-nwyhnz98.js} +37 -37
  19. package/dist/cli/{hive-promoter-06dzq5ms.js → hive-promoter-0b8ht2g0.js} +37 -37
  20. package/dist/cli/{index-3h0f07e9.js → index-0hzr6vdh.js} +1 -1
  21. package/dist/cli/{index-2t4zv1ag.js → index-1r22v0js.js} +1 -1
  22. package/dist/cli/{index-fr6x6vn2.js → index-22qpvevn.js} +1 -1
  23. package/dist/cli/{index-14j1jkyy.js → index-2ebf550v.js} +6 -6
  24. package/dist/cli/{index-q4a0j3nh.js → index-48ceyvpc.js} +5 -5
  25. package/dist/cli/{index-rmspt7xm.js → index-5egfk9c6.js} +1 -1
  26. package/dist/cli/{index-s95ghsy1.js → index-7e1ecg26.js} +1 -1
  27. package/dist/cli/{index-7xv2hvr6.js → index-7wth46ez.js} +2 -2
  28. package/dist/cli/{index-qeqn241m.js → index-955e0wpp.js} +1 -1
  29. package/dist/cli/{index-dyddcx8h.js → index-cbwmx38c.js} +95 -89
  30. package/dist/cli/{index-8bvpcbk8.js → index-cq1gpknp.js} +39 -39
  31. package/dist/cli/{index-z7recmq5.js → index-cvrtpb52.js} +3 -3
  32. package/dist/cli/{index-b1v0zxnh.js → index-d5vkn5eg.js} +2 -2
  33. package/dist/cli/{index-82j1een1.js → index-et6gxgbn.js} +3 -3
  34. package/dist/cli/{index-sxxj47cy.js → index-f2xrc6r5.js} +6 -6
  35. package/dist/cli/{index-bf055zyw.js → index-fanhmwk3.js} +2 -2
  36. package/dist/cli/{index-98a0rxby.js → index-fx0kf5jt.js} +1 -1
  37. package/dist/cli/{index-e1zrgvqg.js → index-g2jbpm6g.js} +1 -1
  38. package/dist/cli/{index-1t2ctwkd.js → index-g4ft1r0z.js} +1 -1
  39. package/dist/cli/{index-m8rt7a3g.js → index-gj0121y5.js} +4 -4
  40. package/dist/cli/{index-enjsn68b.js → index-hkbs7pcd.js} +7 -7
  41. package/dist/cli/{index-42pchr9f.js → index-hp5xyqxs.js} +1 -1
  42. package/dist/cli/{index-xqxqepsy.js → index-hq9fezjc.js} +2 -2
  43. package/dist/cli/{index-eecz2kna.js → index-jnts5d04.js} +7 -7
  44. package/dist/cli/{index-ywmknn6m.js → index-kf8gkdtq.js} +1 -1
  45. package/dist/cli/{index-g2r6t7by.js → index-kjetx4xq.js} +1 -1
  46. package/dist/cli/{index-16smfppa.js → index-mk9kd5wr.js} +3 -3
  47. package/dist/cli/{index-raj6y6d3.js → index-na3qxeha.js} +2 -2
  48. package/dist/cli/{index-rwzrbcm9.js → index-qjs6cgb9.js} +1 -1
  49. package/dist/cli/{index-mp60wy1f.js → index-rgrae86w.js} +4 -4
  50. package/dist/cli/{index-t0mb5a9p.js → index-s9pq2q6h.js} +1 -1
  51. package/dist/cli/{index-x16a0c6b.js → index-snzz0yvz.js} +7 -7
  52. package/dist/cli/{index-1npynszx.js → index-tdtqm702.js} +12 -12
  53. package/dist/cli/{index-1nwkzj24.js → index-tkk06smw.js} +2 -2
  54. package/dist/cli/{index-1kz2repk.js → index-tps93cp3.js} +3 -3
  55. package/dist/cli/{index-4qmeshfa.js → index-v5r7w16s.js} +5 -5
  56. package/dist/cli/{index-kbd6apth.js → index-vx1dt9x3.js} +37 -37
  57. package/dist/cli/{index-z1qs160n.js → index-yn0nsxwv.js} +1 -1
  58. package/dist/cli/{index-0prgjynb.js → index-z5nqpnem.js} +5 -5
  59. package/dist/cli/{index-c5c7hrz1.js → index-zg40ap5c.js} +2 -2
  60. package/dist/cli/{index-2s0gy81b.js → index-zvz722td.js} +2 -2
  61. package/dist/cli/{index-q39ecyaq.js → index-zygpw9qb.js} +1 -1
  62. package/dist/cli/index.js +38 -38
  63. package/dist/cli/{knowledge-escalator-ghx76dcv.js → knowledge-escalator-a9h29ayc.js} +11 -11
  64. package/dist/cli/{knowledge-events-kpw6fbmc.js → knowledge-events-sjdhtwm2.js} +9 -9
  65. package/dist/cli/{knowledge-link-xw6vsbx3.js → knowledge-link-6kxpc4x5.js} +3 -3
  66. package/dist/cli/{knowledge-store-fhdrpxdm.js → knowledge-store-g3h4gqe7.js} +4 -4
  67. package/dist/cli/{knowledge-validator-7jr0aka1.js → knowledge-validator-br05bd3x.js} +6 -6
  68. package/dist/cli/{mcp-v7cgf5tn.js → mcp-167c0dnd.js} +1 -1
  69. package/dist/cli/{model-preflight-kn3xqvfk.js → model-preflight-dxm5dcej.js} +37 -37
  70. package/dist/cli/{pending-delegations-z7mcbecn.js → pending-delegations-q9n8bry1.js} +10 -10
  71. package/dist/cli/{pr-subscriptions-1sb07tx3.js → pr-subscriptions-qs9fhjpk.js} +10 -10
  72. package/dist/cli/{pr-workflow-gate-ph4fvf47.js → pr-workflow-gate-nfbbc2c0.js} +37 -37
  73. package/dist/cli/{runner-pvdhxh74.js → runner-wfd9dys9.js} +4 -4
  74. package/dist/cli/{scan-cursor-7ny9bnmk.js → scan-cursor-z59x53tn.js} +5 -5
  75. package/dist/cli/{schema-pjkzvcw8.js → schema-y3rs9evj.js} +1 -1
  76. package/dist/cli/{scope-persistence-mkb8yc5s.js → scope-persistence-54g2j63h.js} +13 -13
  77. package/dist/cli/{server-4e853cwk.js → server-gwgsy9t3.js} +37 -37
  78. package/dist/cli/{skill-generator-v6n0kwh0.js → skill-generator-qc4bfp4z.js} +13 -13
  79. package/dist/cli/{snapshot-coordination-init-agx2sn6h.js → snapshot-coordination-init-0pytgxbn.js} +37 -37
  80. package/dist/cli/{speckit-checkoff-wfsbvt1b.js → speckit-checkoff-d14y1jnc.js} +4 -4
  81. package/dist/cli/{workspace-snapshot-553c6cd3.js → workspace-snapshot-bvnyzzr2.js} +3 -3
  82. package/dist/cli/{worktree-collision-ownership-4znww3nt.js → worktree-collision-ownership-9gmtsqmf.js} +11 -11
  83. package/dist/cli/{worktree-isolation-w4k8q59z.js → worktree-isolation-22dntk4t.js} +37 -37
  84. package/dist/hooks/extractors.d.ts +23 -0
  85. package/dist/hooks/issue-trace-reducer.d.ts +20 -2
  86. package/dist/hooks/issue-trace-state.d.ts +6 -2
  87. package/dist/hooks/issue-trace.d.ts +2 -0
  88. package/dist/index.js +18 -18
  89. package/dist/services/context-budget-service.d.ts +12 -1
  90. package/package.json +1 -1
  91. package/dist/cli/curator-llm-factory-jjd0cxb2.js +0 -75
  92. package/dist/cli/guardrail-explain-x81m4s8q.js +0 -76
@@ -8,67 +8,67 @@ import {
8
8
  markSnapshotCoordinationClosing,
9
9
  retrySnapshotCoordinationInitialization,
10
10
  startSnapshotCoordinationInitialization
11
- } from "./index-dyddcx8h.js";
12
- import"./index-c5c7hrz1.js";
11
+ } from "./index-cbwmx38c.js";
12
+ import"./index-zg40ap5c.js";
13
13
  import"./index-hamqvzqn.js";
14
- import"./index-q39ecyaq.js";
15
- import"./index-z7recmq5.js";
16
- import"./index-rwzrbcm9.js";
17
- import"./index-1npynszx.js";
18
- import"./index-1t2ctwkd.js";
14
+ import"./index-zygpw9qb.js";
15
+ import"./index-cvrtpb52.js";
16
+ import"./index-qjs6cgb9.js";
17
+ import"./index-tdtqm702.js";
18
+ import"./index-g4ft1r0z.js";
19
19
  import"./index-txdagbh7.js";
20
- import"./index-z1qs160n.js";
20
+ import"./index-yn0nsxwv.js";
21
21
  import"./index-6b295cas.js";
22
- import"./index-mp60wy1f.js";
23
- import"./index-4qmeshfa.js";
24
- import"./index-raj6y6d3.js";
22
+ import"./index-rgrae86w.js";
23
+ import"./index-v5r7w16s.js";
24
+ import"./index-na3qxeha.js";
25
25
  import"./index-rdec0y3z.js";
26
- import"./index-14j1jkyy.js";
26
+ import"./index-2ebf550v.js";
27
27
  import"./index-cjapb4hy.js";
28
28
  import"./index-zsrtt42s.js";
29
- import"./index-x16a0c6b.js";
30
- import"./index-b1v0zxnh.js";
31
- import"./index-7xv2hvr6.js";
29
+ import"./index-snzz0yvz.js";
30
+ import"./index-d5vkn5eg.js";
31
+ import"./index-7wth46ez.js";
32
32
  import"./index-pt7h91zc.js";
33
33
  import"./index-q7sjgr1y.js";
34
- import"./index-1nwkzj24.js";
35
- import"./index-82j1een1.js";
36
- import"./index-1kz2repk.js";
37
- import"./index-sxxj47cy.js";
38
- import"./index-eecz2kna.js";
39
- import"./index-98a0rxby.js";
34
+ import"./index-tkk06smw.js";
35
+ import"./index-et6gxgbn.js";
36
+ import"./index-tps93cp3.js";
37
+ import"./index-f2xrc6r5.js";
38
+ import"./index-jnts5d04.js";
39
+ import"./index-fx0kf5jt.js";
40
40
  import"./index-2s7dvzff.js";
41
- import"./index-m8rt7a3g.js";
42
- import"./index-qeqn241m.js";
41
+ import"./index-gj0121y5.js";
42
+ import"./index-955e0wpp.js";
43
43
  import"./index-rtry5xyf.js";
44
- import"./index-2s0gy81b.js";
44
+ import"./index-zvz722td.js";
45
45
  import"./index-frcemc0b.js";
46
46
  import"./index-0725jpp7.js";
47
- import"./index-0prgjynb.js";
48
- import"./index-q4a0j3nh.js";
49
- import"./index-s95ghsy1.js";
50
- import"./index-xqxqepsy.js";
51
- import"./index-rmspt7xm.js";
52
- import"./index-t0mb5a9p.js";
47
+ import"./index-z5nqpnem.js";
48
+ import"./index-48ceyvpc.js";
49
+ import"./index-7e1ecg26.js";
50
+ import"./index-hq9fezjc.js";
51
+ import"./index-5egfk9c6.js";
52
+ import"./index-s9pq2q6h.js";
53
53
  import"./index-rdm3px0g.js";
54
54
  import"./index-ry16d01s.js";
55
- import"./index-fr6x6vn2.js";
56
- import"./index-enjsn68b.js";
55
+ import"./index-22qpvevn.js";
56
+ import"./index-hkbs7pcd.js";
57
57
  import"./index-vzm6zre7.js";
58
58
  import"./index-ae75rja9.js";
59
- import"./index-g2r6t7by.js";
60
- import"./index-e1zrgvqg.js";
59
+ import"./index-kjetx4xq.js";
60
+ import"./index-g2jbpm6g.js";
61
61
  import"./index-t7hmqgjy.js";
62
62
  import"./index-x1gyqgze.js";
63
63
  import"./index-mc72pk74.js";
64
64
  import"./index-c1ggtmpm.js";
65
65
  import"./index-ejhxgyvm.js";
66
66
  import"./index-7g4c7s5r.js";
67
- import"./index-2t4zv1ag.js";
67
+ import"./index-1r22v0js.js";
68
68
  import"./index-gx2vp8gx.js";
69
- import"./index-42pchr9f.js";
69
+ import"./index-hp5xyqxs.js";
70
70
  import"./index-zxdawwc7.js";
71
- import"./index-3h0f07e9.js";
71
+ import"./index-0hzr6vdh.js";
72
72
  import"./index-ezagem2g.js";
73
73
  import"./index-bk5tah7q.js";
74
74
  import"./index-gknz3bv1.js";
@@ -7,13 +7,13 @@ import {
7
7
  parseSpeckitTasksContent,
8
8
  propagateSpeckitCheckoff,
9
9
  writeSpeckitCheckoffLedger
10
- } from "./index-1nwkzj24.js";
10
+ } from "./index-tkk06smw.js";
11
11
  import"./index-ejhxgyvm.js";
12
12
  import"./index-7g4c7s5r.js";
13
- import"./index-2t4zv1ag.js";
14
- import"./index-42pchr9f.js";
13
+ import"./index-1r22v0js.js";
14
+ import"./index-hp5xyqxs.js";
15
15
  import"./index-zxdawwc7.js";
16
- import"./index-3h0f07e9.js";
16
+ import"./index-0hzr6vdh.js";
17
17
  import"./index-ezagem2g.js";
18
18
  import"./index-bk5tah7q.js";
19
19
  import"./index-gknz3bv1.js";
@@ -46,12 +46,12 @@ import {
46
46
  shouldSkipSnapshot,
47
47
  switchPrFeedbackTrackingCandidateAsync,
48
48
  workspaceSnapshotMatches
49
- } from "./index-b1v0zxnh.js";
50
- import"./index-98a0rxby.js";
49
+ } from "./index-d5vkn5eg.js";
50
+ import"./index-fx0kf5jt.js";
51
51
  import"./index-2s7dvzff.js";
52
52
  import"./index-mc72pk74.js";
53
53
  import"./index-c1ggtmpm.js";
54
- import"./index-2t4zv1ag.js";
54
+ import"./index-1r22v0js.js";
55
55
  import"./index-zxdawwc7.js";
56
56
  import"./index-zpsr8rpc.js";
57
57
  import"./index-zgwm4ryv.js";
@@ -9,24 +9,24 @@ import {
9
9
  WORKTREE_PROVISIONING_OWNER_LEASE_MS,
10
10
  removeWorktreeProvisioningOwner,
11
11
  scanWorktreeProvisioningOwnersForRecovery
12
- } from "./index-7xv2hvr6.js";
12
+ } from "./index-7wth46ez.js";
13
13
  import {
14
14
  scanDelegationFallbacksForRecovery,
15
15
  scanDelegationsForRecovery
16
- } from "./index-sxxj47cy.js";
17
- import"./index-98a0rxby.js";
16
+ } from "./index-f2xrc6r5.js";
17
+ import"./index-fx0kf5jt.js";
18
18
  import"./index-2s7dvzff.js";
19
- import"./index-xqxqepsy.js";
20
- import"./index-rmspt7xm.js";
21
- import"./index-t0mb5a9p.js";
19
+ import"./index-hq9fezjc.js";
20
+ import"./index-5egfk9c6.js";
21
+ import"./index-s9pq2q6h.js";
22
22
  import"./index-rdm3px0g.js";
23
23
  import"./index-ry16d01s.js";
24
- import"./index-fr6x6vn2.js";
25
- import"./index-enjsn68b.js";
24
+ import"./index-22qpvevn.js";
25
+ import"./index-hkbs7pcd.js";
26
26
  import"./index-vzm6zre7.js";
27
27
  import"./index-ae75rja9.js";
28
- import"./index-g2r6t7by.js";
29
- import"./index-e1zrgvqg.js";
28
+ import"./index-kjetx4xq.js";
29
+ import"./index-g2jbpm6g.js";
30
30
  import"./index-t7hmqgjy.js";
31
31
  import"./index-x1gyqgze.js";
32
32
  import {
@@ -35,7 +35,7 @@ import {
35
35
  import"./index-c1ggtmpm.js";
36
36
  import"./index-ejhxgyvm.js";
37
37
  import"./index-7g4c7s5r.js";
38
- import"./index-2t4zv1ag.js";
38
+ import"./index-1r22v0js.js";
39
39
  import"./index-zxdawwc7.js";
40
40
  import"./index-bk5tah7q.js";
41
41
  import"./index-gknz3bv1.js";
@@ -21,69 +21,69 @@ import {
21
21
  sanitizeWorktreeTaskId,
22
22
  standardWorktreeByCallID,
23
23
  standardWorktreeSerializationSessions
24
- } from "./index-dyddcx8h.js";
25
- import"./index-c5c7hrz1.js";
24
+ } from "./index-cbwmx38c.js";
25
+ import"./index-zg40ap5c.js";
26
26
  import"./index-hamqvzqn.js";
27
- import"./index-q39ecyaq.js";
28
- import"./index-z7recmq5.js";
29
- import"./index-rwzrbcm9.js";
30
- import"./index-1npynszx.js";
31
- import"./index-1t2ctwkd.js";
27
+ import"./index-zygpw9qb.js";
28
+ import"./index-cvrtpb52.js";
29
+ import"./index-qjs6cgb9.js";
30
+ import"./index-tdtqm702.js";
31
+ import"./index-g4ft1r0z.js";
32
32
  import"./index-txdagbh7.js";
33
- import"./index-z1qs160n.js";
33
+ import"./index-yn0nsxwv.js";
34
34
  import"./index-6b295cas.js";
35
- import"./index-mp60wy1f.js";
36
- import"./index-4qmeshfa.js";
37
- import"./index-raj6y6d3.js";
35
+ import"./index-rgrae86w.js";
36
+ import"./index-v5r7w16s.js";
37
+ import"./index-na3qxeha.js";
38
38
  import"./index-rdec0y3z.js";
39
- import"./index-14j1jkyy.js";
39
+ import"./index-2ebf550v.js";
40
40
  import"./index-cjapb4hy.js";
41
41
  import"./index-zsrtt42s.js";
42
- import"./index-x16a0c6b.js";
43
- import"./index-b1v0zxnh.js";
44
- import"./index-7xv2hvr6.js";
42
+ import"./index-snzz0yvz.js";
43
+ import"./index-d5vkn5eg.js";
44
+ import"./index-7wth46ez.js";
45
45
  import"./index-pt7h91zc.js";
46
46
  import"./index-q7sjgr1y.js";
47
- import"./index-1nwkzj24.js";
48
- import"./index-82j1een1.js";
49
- import"./index-1kz2repk.js";
50
- import"./index-sxxj47cy.js";
51
- import"./index-eecz2kna.js";
52
- import"./index-98a0rxby.js";
47
+ import"./index-tkk06smw.js";
48
+ import"./index-et6gxgbn.js";
49
+ import"./index-tps93cp3.js";
50
+ import"./index-f2xrc6r5.js";
51
+ import"./index-jnts5d04.js";
52
+ import"./index-fx0kf5jt.js";
53
53
  import"./index-2s7dvzff.js";
54
- import"./index-m8rt7a3g.js";
55
- import"./index-qeqn241m.js";
54
+ import"./index-gj0121y5.js";
55
+ import"./index-955e0wpp.js";
56
56
  import"./index-rtry5xyf.js";
57
57
  import {
58
58
  resolveWorktreeIsolationConfig
59
- } from "./index-2s0gy81b.js";
59
+ } from "./index-zvz722td.js";
60
60
  import"./index-frcemc0b.js";
61
61
  import"./index-0725jpp7.js";
62
- import"./index-0prgjynb.js";
63
- import"./index-q4a0j3nh.js";
64
- import"./index-s95ghsy1.js";
65
- import"./index-xqxqepsy.js";
66
- import"./index-rmspt7xm.js";
67
- import"./index-t0mb5a9p.js";
62
+ import"./index-z5nqpnem.js";
63
+ import"./index-48ceyvpc.js";
64
+ import"./index-7e1ecg26.js";
65
+ import"./index-hq9fezjc.js";
66
+ import"./index-5egfk9c6.js";
67
+ import"./index-s9pq2q6h.js";
68
68
  import"./index-rdm3px0g.js";
69
69
  import"./index-ry16d01s.js";
70
- import"./index-fr6x6vn2.js";
71
- import"./index-enjsn68b.js";
70
+ import"./index-22qpvevn.js";
71
+ import"./index-hkbs7pcd.js";
72
72
  import"./index-vzm6zre7.js";
73
73
  import"./index-ae75rja9.js";
74
- import"./index-g2r6t7by.js";
75
- import"./index-e1zrgvqg.js";
74
+ import"./index-kjetx4xq.js";
75
+ import"./index-g2jbpm6g.js";
76
76
  import"./index-t7hmqgjy.js";
77
77
  import"./index-x1gyqgze.js";
78
78
  import"./index-mc72pk74.js";
79
79
  import"./index-c1ggtmpm.js";
80
80
  import"./index-ejhxgyvm.js";
81
81
  import"./index-7g4c7s5r.js";
82
- import"./index-2t4zv1ag.js";
82
+ import"./index-1r22v0js.js";
83
83
  import"./index-gx2vp8gx.js";
84
- import"./index-42pchr9f.js";
84
+ import"./index-hp5xyqxs.js";
85
85
  import"./index-zxdawwc7.js";
86
- import"./index-3h0f07e9.js";
86
+ import"./index-0hzr6vdh.js";
87
87
  import"./index-ezagem2g.js";
88
88
  import"./index-bk5tah7q.js";
89
89
  import"./index-gknz3bv1.js";
@@ -64,6 +64,28 @@ export declare function extractPlanCursor(planContent: string, options?: {
64
64
  maxTokens?: number;
65
65
  lookaheadTasks?: number;
66
66
  }): string;
67
+ /**
68
+ * Effective plan-cursor controls for the issue #2580 contract: the
69
+ * `plan_cursor` schema block (enabled/max_tokens/lookahead_tasks) must reach
70
+ * BOTH system-enhancer context paths and the context budget report through
71
+ * one shared resolver so the three consumers cannot drift apart again.
72
+ *
73
+ * Field defaults mirror PlanCursorConfigSchema (src/config/schema.ts) and
74
+ * extractPlanCursor's own parameter defaults, so an absent or partial block
75
+ * (raw test configs bypass zod) yields byte-identical pre-#2580 behavior.
76
+ * Out-of-range values are clamped to the schema bounds as defense in depth —
77
+ * zod already rejects them for parsed configs.
78
+ */
79
+ export interface PlanCursorControls {
80
+ enabled: boolean;
81
+ maxTokens: number;
82
+ lookaheadTasks: number;
83
+ }
84
+ export declare function resolvePlanCursorControls(planCursor?: {
85
+ enabled?: boolean;
86
+ max_tokens?: number;
87
+ lookahead_tasks?: number;
88
+ } | null | undefined): PlanCursorControls;
67
89
  export declare const _internals: {
68
90
  extractCurrentPhase: typeof extractCurrentPhase;
69
91
  extractCurrentTask: typeof extractCurrentTask;
@@ -74,4 +96,5 @@ export declare const _internals: {
74
96
  extractCurrentTaskFromPlan: typeof extractCurrentTaskFromPlan;
75
97
  extractIncompleteTasksFromPlan: typeof extractIncompleteTasksFromPlan;
76
98
  extractPlanCursor: typeof extractPlanCursor;
99
+ resolvePlanCursorControls: typeof resolvePlanCursorControls;
77
100
  };
@@ -78,6 +78,17 @@ export interface WorkflowArtifacts {
78
78
  traceValidationVerified: boolean;
79
79
  /** A PR-head-bound merge-approval receipt has been observed (issue #2564). */
80
80
  mergeApprovalObserved: boolean;
81
+ /**
82
+ * The loaded plan is bound to the CURRENT effective spec (issue #2600):
83
+ * the authoritative plan carries a `specHash` equal to the current spec's
84
+ * SHA-256. `false` means the plan was authored against a different spec
85
+ * (or predates spec linkage) — executing it under this trace would run the
86
+ * wrong plan. Explicit `=== false` (not falsy): the hook always supplies a
87
+ * real boolean when a plan exists, and a v2-shaped artifacts literal from a
88
+ * legacy direct caller stays transparent instead of parking (same
89
+ * convention as `freshnessPermitted` / `traceValidationVerified`).
90
+ */
91
+ planBoundToSpec?: boolean;
81
92
  }
82
93
  export interface TransitionResult {
83
94
  nextMode: string | null;
@@ -99,14 +110,17 @@ export interface ComputeNextModeParams {
99
110
  * (b) merge_approval_recorded (truly terminal) → no-op
100
111
  * (b') published + merge-approval receipt observed → merge_approval_recorded (RECORDED, never certified)
101
112
  * (c) publication_handoff: observe publication → PUBLISHED; else no-op
102
- * (d) Cross-issue guard (spec issue ≠ current issue) → no-op
113
+ * (d) Cross-issue guard (spec issue ≠ current issue) → one-shot SPEC_MISMATCH_GATE directive (issue #2600)
103
114
  * (e) Spec does not exist → no-op
104
115
  * (f-0) Spec exists, no plan, branch-freshness NOT
105
116
  * permitted → one-shot FRESHNESS_GATE directive
106
117
  * (f) Spec exists, no plan, freshness permitted, reproduction permitted,
107
118
  * never transitioned (or re-entrant idempotency) → PLAN
108
119
  * (f-block) Spec exists, no plan, reproduction NOT permitted → one-shot REPRO_GATE directive
109
- * (g) Plan exists but critic not approved → no-op
120
+ * (g-binding) Plan exists but NOT bound to the current
121
+ * spec (foreign/unverifiable) → one-shot PLAN_BINDING_GATE directive (issue #2600)
122
+ * (g-repro) Plan exists, bound, reproduction NOT permitted → one-shot REPRO_GATE_LATE directive (issue #2600)
123
+ * (g) Plan exists, bound, repro permitted, critic not approved → one-shot CRITIC_GATE directive (issue #2600)
110
124
  * (h) Critic approved, phases incomplete, not yet PLAN_TO_EXECUTE → EXECUTE
111
125
  * (i-pre1) Phases complete, impl-review receipt missing → one-shot REVIEW_GATE directive
112
126
  * (i-pre2) Impl-review ok, recurrence-sweep receipt missing → one-shot RECURRENCE_GATE directive
@@ -115,5 +129,9 @@ export interface ComputeNextModeParams {
115
129
  *
116
130
  * Idempotency: rows (f), (h), (i) return no-op when
117
131
  * `traceState.lastTransition` already equals the target transition value.
132
+ * Every gate row is ONE-SHOT: it fires from `lastTransition === null` or from
133
+ * the sentinel of a gate that precedes it in the ladder, then waits quietly
134
+ * for its receipt (issue #2600: silence is indistinguishable from a stuck
135
+ * engine, so each wait state names its recovery exactly once).
118
136
  */
119
137
  export declare function computeNextMode(params: ComputeNextModeParams): TransitionResult;
@@ -70,12 +70,16 @@ export declare function loadPlanFromLedger(directory: string): Promise<Plan | nu
70
70
  /**
71
71
  * Computes plan presence AND phase-completion status from a single
72
72
  * AUTHORITATIVE plan load. `planExists` reflects ledger authority, not
73
- * projection (`.swarm/plan.json`) existence. Returns
74
- * `{ planExists: false, allComplete: false }` if the plan is null/empty.
73
+ * projection (`.swarm/plan.json`) existence. `planSpecHash` surfaces the
74
+ * loaded plan's recorded `specHash` (undefined when the plan predates spec
75
+ * linkage) so the trace engine can bind the plan to the current spec (issue
76
+ * #2600). Returns `{ planExists: false, allComplete: false, planSpecHash:
77
+ * undefined }` if the plan is null/empty.
75
78
  */
76
79
  export declare function readPlanPhaseStatus(directory: string): Promise<{
77
80
  planExists: boolean;
78
81
  allComplete: boolean;
82
+ planSpecHash: string | undefined;
79
83
  }>;
80
84
  /**
81
85
  * Returns whether an AUTHORITATIVE plan exists (ledger-aware). Async because
@@ -17,6 +17,7 @@
17
17
  */
18
18
  import { getPlanLedgerStateReadOnly } from '../plan/ledger-sqlite';
19
19
  import { error as _logErrorImpl } from '../utils/logger.js';
20
+ import { computeSpecHash } from '../utils/spec-hash';
20
21
  import { isPlanCriticApproved } from './delegation-gate';
21
22
  import { branchFreshnessReceiptExists, implementationReviewReceiptExists, mergeApprovalReceiptExists, publicationReceiptExists, readIssueReference, readPlanPhaseStatus, readSpecIssueNumber, readTraceState, recurrenceSweepReceiptExists, reproductionReceiptExists, specExists, traceValidationReceiptExists, writeTraceState } from './issue-trace-state';
22
23
  export declare const _internals: {
@@ -36,6 +37,7 @@ export declare const _internals: {
36
37
  isPlanCriticApproved: typeof isPlanCriticApproved;
37
38
  getPlanLedgerState: typeof getPlanLedgerStateReadOnly;
38
39
  logError: typeof _logErrorImpl;
40
+ computeSpecHash: typeof computeSpecHash;
39
41
  boundedApprovalCheck: (directory: string, timeoutMs: number) => Promise<boolean>;
40
42
  };
41
43
  export declare function createIssueTraceHook(_config: unknown, directory: string, approvalTimeoutMs?: number): {