opencode-swarm 7.164.0 → 7.164.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/cli/{coder-settlement-84je6bza.js → coder-settlement-w4qk90kh.js} +10 -11
  2. package/dist/cli/{config-doctor-vfze38e1.js → config-doctor-r81bp1nd.js} +3 -3
  3. package/dist/cli/{core-q5hv8e2w.js → core-xfw4s9b9.js} +2 -2
  4. package/dist/cli/{curation-policy-a2zty4br.js → curation-policy-2h37sd6p.js} +4 -5
  5. package/dist/cli/{curator-4pckmmyf.js → curator-7zy6bdmw.js} +33 -36
  6. package/dist/cli/{curator-drift-wy7ejcvw.js → curator-drift-ykrdf08r.js} +4 -5
  7. package/dist/cli/curator-llm-factory-7gjvm4ds.js +66 -0
  8. package/dist/cli/{evidence-summary-service-b15yes21.js → evidence-summary-service-519ny6b1.js} +14 -15
  9. package/dist/cli/{gate-evidence-70h0w4tb.js → gate-evidence-a7st3vbc.js} +6 -7
  10. package/dist/cli/guardrail-explain-ewcm37em.js +67 -0
  11. package/dist/cli/{guardrail-log-7rxbd20p.js → guardrail-log-kp51by1v.js} +7 -8
  12. package/dist/cli/{guardrail-reset-3b4gs357.js → guardrail-reset-reyfwtwn.js} +33 -36
  13. package/dist/cli/{hive-promoter-s80g1gwb.js → hive-promoter-zf2vf5sw.js} +33 -36
  14. package/dist/cli/{index-zbpcpsk0.js → index-1af3rb5n.js} +7 -7
  15. package/dist/cli/{index-xk0kc1py.js → index-2ee2g27m.js} +7427 -2520
  16. package/dist/cli/{index-td6n935w.js → index-2s40e3b0.js} +2 -2
  17. package/dist/cli/{index-9xd073d4.js → index-2yd732fd.js} +7 -1
  18. package/dist/cli/{index-hyq20s2v.js → index-5084szce.js} +11 -11
  19. package/dist/cli/{index-nzrhw31r.js → index-5bza8nxz.js} +2 -2
  20. package/dist/cli/{index-c4pynht5.js → index-6097tx05.js} +1 -1
  21. package/dist/cli/{index-t90gjc0k.js → index-644t46hr.js} +1 -1
  22. package/dist/cli/{index-t5t82jy8.js → index-6ay5zp1v.js} +5 -5
  23. package/dist/cli/{index-ynqp3jb6.js → index-6kd3jnaf.js} +1 -1
  24. package/dist/cli/{index-70bfj3v1.js → index-6t35714n.js} +1 -1
  25. package/dist/cli/{index-nhxaa9j5.js → index-862c0xhc.js} +1 -1
  26. package/dist/cli/{index-4jersar8.js → index-b98r3pyv.js} +4 -4
  27. package/dist/cli/{index-93sepnc9.js → index-dhzsvmx6.js} +1 -1
  28. package/dist/cli/{index-pvgcex0d.js → index-e630pvvw.js} +4 -4
  29. package/dist/cli/{index-3b762978.js → index-f9nfknjg.js} +182 -37
  30. package/dist/cli/{index-c69jbpex.js → index-fwfhbs27.js} +2 -2
  31. package/dist/cli/{index-e3hwzcjv.js → index-h2f21caa.js} +2 -2
  32. package/dist/cli/{index-1hpjwz3s.js → index-hcn69kp0.js} +1 -1
  33. package/dist/cli/{index-4afh2cz7.js → index-hzaw10zh.js} +6 -6
  34. package/dist/cli/{index-wdtckfnf.js → index-j0ajeary.js} +1 -1
  35. package/dist/cli/{index-bm73pych.js → index-jczbtx2x.js} +7 -7
  36. package/dist/cli/{index-tb1k8jya.js → index-k8j7m0e2.js} +1 -1
  37. package/dist/cli/{index-7r9vpkwa.js → index-n1wcq816.js} +3 -3
  38. package/dist/cli/{index-t9rhtvy9.js → index-pmmfhzsp.js} +3 -3
  39. package/dist/cli/{index-fckfgptr.js → index-qbr05tbw.js} +2 -2
  40. package/dist/cli/{index-g64154pd.js → index-r5jn0ah5.js} +2 -2
  41. package/dist/cli/{index-dtn0pne5.js → index-v56mhyhs.js} +1 -1
  42. package/dist/cli/{index-qkk2skff.js → index-vc3zmtxb.js} +35 -38
  43. package/dist/cli/{index-1z4jzwja.js → index-vdgw2k4c.js} +1 -1
  44. package/dist/cli/{index-2s4s9n82.js → index-vkckf2ch.js} +1 -1
  45. package/dist/cli/{index-v3a9rmyh.js → index-vrxx0ea4.js} +4 -4
  46. package/dist/cli/{index-gxd8fwyt.js → index-wnf1ej2q.js} +4 -4
  47. package/dist/cli/{index-9sy65e94.js → index-wv4b01ex.js} +31 -33
  48. package/dist/cli/{index-ma8w6pfp.js → index-x2qmpkth.js} +3 -3
  49. package/dist/cli/{index-0515j0cz.js → index-y2f5s2cf.js} +1 -1
  50. package/dist/cli/{index-12f1tsn2.js → index-yc415pzf.js} +654 -15
  51. package/dist/cli/index.js +33 -36
  52. package/dist/cli/{knowledge-escalator-sttdnwf8.js → knowledge-escalator-wwkbsgvw.js} +12 -13
  53. package/dist/cli/{knowledge-events-4h88stj7.js → knowledge-events-vmmgwfmc.js} +10 -11
  54. package/dist/cli/{knowledge-link-yykmxdyw.js → knowledge-link-bvra01zv.js} +3 -4
  55. package/dist/cli/{knowledge-store-j832fxpx.js → knowledge-store-6wbagbqm.js} +4 -5
  56. package/dist/cli/{knowledge-validator-edbg761g.js → knowledge-validator-q1z4fmeg.js} +6 -7
  57. package/dist/cli/{model-preflight-c3mc8njg.js → model-preflight-1ecjbg73.js} +1 -1
  58. package/dist/cli/{pending-delegations-sphntrs0.js → pending-delegations-cq5g4rr4.js} +4 -6
  59. package/dist/cli/{pr-subscriptions-1a4gcnzv.js → pr-subscriptions-m0z5wxkb.js} +4 -5
  60. package/dist/cli/pr-workflow-gate-0zvp0qs9.js +221 -0
  61. package/dist/cli/{runner-d294h1by.js → runner-s55g5233.js} +4 -5
  62. package/dist/cli/{scan-cursor-5frvp7nb.js → scan-cursor-z6zepy3r.js} +5 -6
  63. package/dist/cli/{schema-9xkt5hvd.js → schema-skf0ckh4.js} +2 -2
  64. package/dist/cli/{scope-persistence-gk55h3sp.js → scope-persistence-f6davq7x.js} +8 -9
  65. package/dist/cli/{skill-generator-sxxf7jbb.js → skill-generator-wqbazppk.js} +14 -15
  66. package/dist/cli/{worktree-collision-ownership-7kj2ryt1.js → worktree-collision-ownership-c0030qbm.js} +5 -7
  67. package/dist/cli/{worktree-isolation-67fs6rz9.js → worktree-isolation-09qq8066.js} +33 -36
  68. package/dist/hooks/delegation-gate.d.ts +1 -0
  69. package/dist/hooks/pr-workflow-gate.d.ts +14 -8
  70. package/dist/hooks/pr-workflow-response-gate.d.ts +9 -12
  71. package/dist/index.js +53 -52
  72. package/dist/pr-review/authorization.d.ts +18 -12
  73. package/dist/tools/authorize-pr-review-reentry.d.ts +12 -8
  74. package/package.json +1 -1
  75. package/dist/cli/authorization-vstrh7ra.js +0 -23
  76. package/dist/cli/curator-llm-factory-msbj3hpn.js +0 -69
  77. package/dist/cli/guardrail-explain-kksdy032.js +0 -70
  78. package/dist/cli/index-ed5ykebp.js +0 -151
  79. package/dist/cli/index-mmngnxev.js +0 -883
  80. package/dist/cli/index-w7ekntej.js +0 -643
@@ -33,34 +33,33 @@ import {
33
33
  sanitizeSlug,
34
34
  selectCandidateEntries,
35
35
  writeEvalStub
36
- } from "./index-pvgcex0d.js";
37
- import"./index-gxd8fwyt.js";
38
- import"./index-tb1k8jya.js";
36
+ } from "./index-e630pvvw.js";
37
+ import"./index-wnf1ej2q.js";
38
+ import"./index-k8j7m0e2.js";
39
39
  import"./index-rtry5xyf.js";
40
40
  import"./index-q7sjgr1y.js";
41
- import"./index-bm73pych.js";
42
- import"./index-zbpcpsk0.js";
43
- import"./index-t9rhtvy9.js";
41
+ import"./index-jczbtx2x.js";
42
+ import"./index-1af3rb5n.js";
43
+ import"./index-pmmfhzsp.js";
44
44
  import"./index-zg9d392c.js";
45
45
  import"./index-n832052r.js";
46
- import"./index-dtn0pne5.js";
46
+ import"./index-v56mhyhs.js";
47
47
  import"./index-z6xqpmqg.js";
48
48
  import"./index-r3mvsbtq.js";
49
- import"./index-nhxaa9j5.js";
50
- import"./index-td6n935w.js";
49
+ import"./index-862c0xhc.js";
50
+ import"./index-2s40e3b0.js";
51
51
  import"./index-9e6fdz2h.js";
52
52
  import"./index-4rhhvd1a.js";
53
- import"./index-wdtckfnf.js";
54
- import"./index-9xd073d4.js";
53
+ import"./index-j0ajeary.js";
54
+ import"./index-2yd732fd.js";
55
55
  import"./index-zjygnfay.js";
56
56
  import"./index-ae75rja9.js";
57
- import"./index-ynqp3jb6.js";
58
- import"./index-70bfj3v1.js";
57
+ import"./index-6kd3jnaf.js";
58
+ import"./index-6t35714n.js";
59
59
  import"./index-bk5tah7q.js";
60
60
  import"./index-36nt17m8.js";
61
- import"./index-3b762978.js";
61
+ import"./index-f9nfknjg.js";
62
62
  import"./index-1b1h770t.js";
63
- import"./index-ed5ykebp.js";
64
63
  import"./index-7g4c7s5r.js";
65
64
  import"./index-bpmtbmy9.js";
66
65
  import"./index-zgwm4ryv.js";
@@ -6,14 +6,13 @@ import {
6
6
  WORKTREE_PROVISIONING_OWNER_LEASE_MS,
7
7
  removeWorktreeProvisioningOwner,
8
8
  scanWorktreeProvisioningOwnersForRecovery
9
- } from "./index-fckfgptr.js";
9
+ } from "./index-qbr05tbw.js";
10
10
  import {
11
11
  scanDelegationFallbacksForRecovery,
12
12
  scanDelegationsForRecovery
13
- } from "./index-12f1tsn2.js";
13
+ } from "./index-yc415pzf.js";
14
14
  import"./index-ddszzne4.js";
15
- import"./index-w7ekntej.js";
16
- import"./index-dtn0pne5.js";
15
+ import"./index-v56mhyhs.js";
17
16
  import"./index-z6xqpmqg.js";
18
17
  import {
19
18
  bunSpawn
@@ -23,12 +22,11 @@ import {
23
22
  resolveGitExecutable
24
23
  } from "./index-9e6fdz2h.js";
25
24
  import"./index-4rhhvd1a.js";
26
- import"./index-wdtckfnf.js";
25
+ import"./index-j0ajeary.js";
27
26
  import"./index-zjygnfay.js";
28
27
  import"./index-36nt17m8.js";
29
- import"./index-3b762978.js";
28
+ import"./index-f9nfknjg.js";
30
29
  import"./index-1b1h770t.js";
31
- import"./index-ed5ykebp.js";
32
30
  import"./index-7g4c7s5r.js";
33
31
  import"./index-bpmtbmy9.js";
34
32
  import"./index-zgwm4ryv.js";
@@ -21,67 +21,64 @@ import {
21
21
  sanitizeWorktreeTaskId,
22
22
  standardWorktreeByCallID,
23
23
  standardWorktreeSerializationSessions
24
- } from "./index-xk0kc1py.js";
25
- import"./index-c4pynht5.js";
26
- import"./index-9sy65e94.js";
27
- import"./index-g64154pd.js";
28
- import"./index-hyq20s2v.js";
29
- import"./index-2s4s9n82.js";
24
+ } from "./index-2ee2g27m.js";
25
+ import"./index-6097tx05.js";
26
+ import"./index-wv4b01ex.js";
27
+ import"./index-r5jn0ah5.js";
28
+ import"./index-5084szce.js";
29
+ import"./index-vkckf2ch.js";
30
30
  import"./index-txdagbh7.js";
31
31
  import"./index-3146wmgv.js";
32
- import"./index-pvgcex0d.js";
33
- import"./index-t5t82jy8.js";
34
- import"./index-e3hwzcjv.js";
32
+ import"./index-e630pvvw.js";
33
+ import"./index-6ay5zp1v.js";
34
+ import"./index-h2f21caa.js";
35
35
  import"./index-70ha9e09.js";
36
- import"./index-0515j0cz.js";
37
- import"./index-1hpjwz3s.js";
36
+ import"./index-y2f5s2cf.js";
37
+ import"./index-hcn69kp0.js";
38
38
  import"./index-zaab1wz9.js";
39
- import"./index-ma8w6pfp.js";
39
+ import"./index-x2qmpkth.js";
40
40
  import"./index-zsrtt42s.js";
41
- import"./index-4afh2cz7.js";
41
+ import"./index-hzaw10zh.js";
42
42
  import"./index-3f7hqtgg.js";
43
- import"./index-fckfgptr.js";
44
- import"./index-gxd8fwyt.js";
45
- import"./index-tb1k8jya.js";
43
+ import"./index-qbr05tbw.js";
44
+ import"./index-wnf1ej2q.js";
45
+ import"./index-k8j7m0e2.js";
46
46
  import"./index-rtry5xyf.js";
47
- import"./index-7r9vpkwa.js";
48
- import"./index-nzrhw31r.js";
49
- import"./index-12f1tsn2.js";
47
+ import"./index-n1wcq816.js";
48
+ import"./index-5bza8nxz.js";
49
+ import"./index-yc415pzf.js";
50
50
  import"./index-ddszzne4.js";
51
- import"./index-mmngnxev.js";
52
- import"./index-w7ekntej.js";
53
- import"./index-4jersar8.js";
54
- import"./index-1z4jzwja.js";
55
- import"./index-93sepnc9.js";
51
+ import"./index-b98r3pyv.js";
52
+ import"./index-vdgw2k4c.js";
53
+ import"./index-dhzsvmx6.js";
56
54
  import"./index-556ja8an.js";
57
55
  import"./index-4fwbbad3.js";
58
56
  import"./index-b43rt5ph.js";
59
57
  import"./index-q7sjgr1y.js";
60
- import"./index-bm73pych.js";
61
- import"./index-zbpcpsk0.js";
58
+ import"./index-jczbtx2x.js";
59
+ import"./index-1af3rb5n.js";
62
60
  import {
63
61
  resolveWorktreeIsolationConfig
64
- } from "./index-t9rhtvy9.js";
62
+ } from "./index-pmmfhzsp.js";
65
63
  import"./index-zg9d392c.js";
66
64
  import"./index-n832052r.js";
67
- import"./index-dtn0pne5.js";
65
+ import"./index-v56mhyhs.js";
68
66
  import"./index-z6xqpmqg.js";
69
67
  import"./index-r3mvsbtq.js";
70
- import"./index-nhxaa9j5.js";
71
- import"./index-td6n935w.js";
68
+ import"./index-862c0xhc.js";
69
+ import"./index-2s40e3b0.js";
72
70
  import"./index-9e6fdz2h.js";
73
71
  import"./index-4rhhvd1a.js";
74
- import"./index-wdtckfnf.js";
75
- import"./index-9xd073d4.js";
72
+ import"./index-j0ajeary.js";
73
+ import"./index-2yd732fd.js";
76
74
  import"./index-zjygnfay.js";
77
75
  import"./index-ae75rja9.js";
78
- import"./index-ynqp3jb6.js";
79
- import"./index-70bfj3v1.js";
76
+ import"./index-6kd3jnaf.js";
77
+ import"./index-6t35714n.js";
80
78
  import"./index-bk5tah7q.js";
81
79
  import"./index-36nt17m8.js";
82
- import"./index-3b762978.js";
80
+ import"./index-f9nfknjg.js";
83
81
  import"./index-1b1h770t.js";
84
- import"./index-ed5ykebp.js";
85
82
  import"./index-7g4c7s5r.js";
86
83
  import"./index-bpmtbmy9.js";
87
84
  import"./index-zgwm4ryv.js";
@@ -494,6 +494,7 @@ export declare const _internals: {
494
494
  PLAN_CRITIC_TASK_SIGNALS: readonly ["critic-gate", "plan critic", "review plan", "review the plan", "plan.md", "approve the plan", "plan approval", "pre-implementation review", "evaluate this plan", "evaluate the plan", "assess this plan", "assess the plan", "plan soundness", "before implementation", "review the plan below"];
495
495
  extractPlanCriticVerdict: typeof extractPlanCriticVerdict;
496
496
  forceRecordPlanCriticApproval: typeof forceRecordPlanCriticApproval;
497
+ beforePrFeedbackScopeConsume: (() => Promise<void>) | undefined;
497
498
  provisionWorktree: typeof _wtiInternals.provisionWorktree;
498
499
  removeWorktree: typeof _wtiInternals.removeWorktree;
499
500
  attemptMergeBackFromDirty: typeof _wtiInternals.attemptMergeBackFromDirty;
@@ -8,6 +8,7 @@ import { type PrReviewInlineTriggerRow } from '../background/pr-review-trigger-c
8
8
  import { type RevisionDigestResult, resolveCommitCountSince, resolveCommitCountSinceAsync, resolveCurrentGitHead, resolveCurrentGitHeadAsync, resolveCurrentLocalHeadRefAsync, resolveCurrentUpstreamPushTarget, resolveCurrentUpstreamPushTargetAsync, resolveCurrentUpstreamRemoteRef, resolveExactRemoteBranchHead, resolveExactRemoteBranchHeadAsync, resolveIsExactSingleChildCommit, resolveIsExactSingleChildCommitAsync, resolveIsWorkingTreeClean, resolveIsWorkingTreeCleanAsync, resolvePrReviewDiffStats, resolvePrReviewDiffStatsAsync, resolvePrWorkflowRevisionDigest, resolvePrWorkflowRevisionDigestDetailed, resolveRemoteRefsContainingHead, resolveRemoteRefsContainingHeadAsync, resolveRemoteUrlIdentity, resolveRemoteUrlIdentityAsync } from '../background/workspace-snapshot.js';
9
9
  import { type PrReviewResilienceConfig } from '../config/schema.js';
10
10
  import { classifyPrWorkflowGitState, type PrWorkflowGitState } from '../git/pr-workflow-state.js';
11
+ import { type PrReviewReentryAuthorizationRecord, type PrReviewReentryBindingContext, type PrReviewReentryRole } from '../pr-review/authorization.js';
11
12
  import { classifyPrReviewCircuitSignal, type PrReviewCircuitLegacyRecord, type PrReviewCircuitRecordV2, type PrReviewResiliencePolicyRecord, resolvePrReviewResiliencePolicy } from '../pr-review/circuit.js';
12
13
  import { type PrReviewDimensionCancellationRecord, type PrReviewPartialBaseCoverageRecord, type PrReviewReportVerdict, type PrReviewTerminalCoverageSettlement } from '../pr-review/completion.js';
13
14
  import { type PrReviewComposablePhase, type PrReviewPhaseComposition, parseCriticVerdict } from '../pr-review/legacy-transcript-adapter.js';
@@ -1252,7 +1253,7 @@ export declare function transitionPrReviewToFeedback(directory: string, sessionI
1252
1253
  }): Promise<PrWorkflowGateState>;
1253
1254
  export declare function declarePrFeedbackScope(directory: string, sessionID: string, taskId: string, files: string[]): Promise<PrWorkflowGateState>;
1254
1255
  export declare function resolvePrFeedbackScopeDeclaration(directory: string, sessionID: string, taskId: string): Promise<PrFeedbackScopeDeclarationRecord | null>;
1255
- export declare function consumePrFeedbackScopeDeclaration(directory: string, sessionID: string, taskId: string, callID: string): Promise<PrFeedbackScopeDeclarationRecord | null>;
1256
+ export declare function consumePrFeedbackScopeDeclaration(directory: string, sessionID: string, taskId: string, callID: string, expected: Pick<PrFeedbackScopeDeclarationRecord, 'declaredAt' | 'revisionDigest' | 'files'>): Promise<PrFeedbackScopeDeclarationRecord | null>;
1256
1257
  export declare function validatePrFeedbackScopeBinding(directory: string, binding: {
1257
1258
  taskId: string;
1258
1259
  files: string[];
@@ -1270,13 +1271,16 @@ export declare function enforcePrWorkflowToolBefore(directory: string, sessionID
1270
1271
  * revision), workflow instance id, and the active run id. Null when no active
1271
1272
  * head-bound PR_REVIEW gate exists for the session.
1272
1273
  */
1273
- export declare function readPrReviewReentryBindingContext(directory: string, sessionID: string): Promise<{
1274
- prHeadSha: string;
1275
- revisionDigest: string;
1276
- generation: number;
1277
- workflowInstanceId?: string;
1278
- runId?: string;
1279
- } | null>;
1274
+ export declare function readPrReviewReentryBindingContext(directory: string, sessionID: string): Promise<PrReviewReentryBindingContext | null>;
1275
+ /**
1276
+ * Sole production reservation/verification path for direct PR-review re-entry.
1277
+ * Lock order is fixed: workflow-session first, authorization store second. The
1278
+ * active binding cannot change between its locked reread and reservation commit.
1279
+ */
1280
+ export declare function reserveActivePrReviewReentryAuthorization(directory: string, sessionID: string, request: {
1281
+ role: PrReviewReentryRole;
1282
+ callID: string;
1283
+ }): Promise<PrReviewReentryAuthorizationRecord | null>;
1280
1284
  export declare function completePrWorkflow(directory: string, sessionID: string, expectedMode: PrWorkflowMode, prHeadSha: string, options?: {
1281
1285
  reportVerdict?: PrReviewReportVerdict;
1282
1286
  }): Promise<PrWorkflowCompletionStatus>;
@@ -1305,6 +1309,8 @@ export declare const _test_exports: {
1305
1309
  beforePrFeedbackTrackingSwitch: (() => Promise<void>) | undefined;
1306
1310
  afterPrFeedbackTrackingSwitch: (() => Promise<void>) | undefined;
1307
1311
  beforePrFeedbackTrackingPersist: (() => Promise<void>) | undefined;
1312
+ /** Interleave point held inside the workflow-session lock before auth commit. */
1313
+ beforePrReviewReentryReservation: (() => Promise<void>) | undefined;
1308
1314
  beforeBoundedSwarmFileOpen: (() => Promise<void>) | undefined;
1309
1315
  beforeSessionStateLockWrite: (() => Promise<void>) | undefined;
1310
1316
  beforeCheckoutLockWrite: (() => Promise<void>) | undefined;
@@ -1,3 +1,4 @@
1
+ import { scanDelegationsForRecovery } from '../background/pending-delegations.js';
1
2
  import { claimPrFeedbackMonitorEvents, readPrFeedbackMonitorQueue } from '../background/pr-feedback-event-queue.js';
2
3
  import { observePrWorkflowAutoWakeEvent } from './pr-workflow-auto-wake.js';
3
4
  import { type PrReviewDepthTier, readPrWorkflowGateState } from './pr-workflow-gate.js';
@@ -10,22 +11,16 @@ export declare const _internals: {
10
11
  claimPrFeedbackMonitorEvents: typeof claimPrFeedbackMonitorEvents;
11
12
  readPrFeedbackMonitorQueue: typeof readPrFeedbackMonitorQueue;
12
13
  observePrWorkflowAutoWakeEvent: typeof observePrWorkflowAutoWakeEvent;
14
+ scanDelegationsForRecovery: typeof scanDelegationsForRecovery;
13
15
  };
14
16
  /**
15
17
  * Maximum number of consecutive unproductive auto-resumes per gated session
16
18
  * before the response gate suspends further wakes. "Unproductive" means the
17
- * durable gate's `revision` did not advance between wakes i.e. no
18
- * state-mutating controller tool (dispatch_lanes_async,
19
- * write_pr_review_trigger_eval, complete_pr_workflow, recordPrReview*,
20
- * bindPrReviewBase, …) made durable progress. A healthy review bumps
21
- * `revision` on every successful state-mutating controller call, so the
22
- * consecutive counter resets on progress and never exhausts the budget.
23
- * Read-only tools (collect_lane_results polling, grep, read) intentionally do
24
- * NOT bump `revision` — an architect that only polls without ever dispatching
25
- * new lanes or recording trigger evaluations IS making progress on the
26
- * runtime's bookkeeping but is not advancing the durable gate, so the budget
27
- * treats long polling-only stretches conservatively. Only a genuinely stuck
28
- * session holds `revision` constant across many idle cycles.
19
+ * fixed-size digest of the durable gate plus its exact active delegation lanes
20
+ * did not change. Controller revisions, lane status transitions, terminal
21
+ * events, and structured receipt digests count as progress; repeated
22
+ * collect_lane_results polls do not. Strict-ledger uncertainty is sticky and
23
+ * never earns progress credit, including the first recovered snapshot.
29
24
  */
30
25
  export declare const DEFAULT_MAX_CONSECUTIVE_UNPRODUCTIVE_WAKES = 5;
31
26
  /**
@@ -102,6 +97,8 @@ interface WakeBudget {
102
97
  consecutiveUnproductive: number;
103
98
  lastWakeAt: number;
104
99
  lastSeenRevision?: number;
100
+ lastSeenProgressToken?: string;
101
+ progressUncertain: boolean;
105
102
  suspended: boolean;
106
103
  /** Total number of wake attempts recorded for this budget. NEVER reset by
107
104
  * revision progress — only the consecutive counter resets on progress; that