opencode-swarm 7.184.0 → 7.184.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 (112) hide show
  1. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  2. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  3. package/dist/background/delegation-health.d.ts +1 -1
  4. package/dist/background/index.d.ts +1 -0
  5. package/dist/background/pr-event-delivery.d.ts +29 -14
  6. package/dist/background/pr-event-subscribers.d.ts +6 -5
  7. package/dist/background/pr-feedback-event-queue.d.ts +19 -2
  8. package/dist/background/pr-feedback-loop-runtime.d.ts +75 -0
  9. package/dist/background/pr-feedback-loop.d.ts +47 -12
  10. package/dist/cli/{coder-settlement-vrc5zxvv.js → coder-settlement-yvpewr52.js} +15 -12
  11. package/dist/cli/{config-doctor-y0bpap07.js → config-doctor-qgwpvrbz.js} +2 -2
  12. package/dist/cli/{core-7f955h2f.js → core-9qt388hq.js} +4 -4
  13. package/dist/cli/{curation-policy-fa2h82c4.js → curation-policy-49f8jx48.js} +7 -6
  14. package/dist/cli/{curator-drift-48x02n2m.js → curator-drift-wf0sm2te.js} +9 -9
  15. package/dist/cli/{curator-m7enwwz2.js → curator-ffz5pxgc.js} +40 -39
  16. package/dist/cli/curator-llm-factory-drs36v1q.js +75 -0
  17. package/dist/cli/{dispatch-p5zjg5e6.js → dispatch-cv89p2y1.js} +1 -1
  18. package/dist/cli/{evidence-summary-service-k8a5vkfk.js → evidence-summary-service-8dfzjnxe.js} +21 -20
  19. package/dist/cli/{gate-evidence-nktrs0w2.js → gate-evidence-aa5q30f4.js} +14 -7
  20. package/dist/cli/guardrail-explain-9g5y2gjm.js +76 -0
  21. package/dist/cli/{guardrail-log-dppv6tgn.js → guardrail-log-0g51p94w.js} +8 -8
  22. package/dist/cli/{guardrail-reset-btzq4ses.js → guardrail-reset-dcbmt2wr.js} +40 -39
  23. package/dist/cli/{hive-promoter-yp1baj9z.js → hive-promoter-2g8nga0y.js} +40 -39
  24. package/dist/cli/{index-r30xs0wp.js → index-046psajf.js} +1 -1
  25. package/dist/cli/{index-ysr6n4ca.js → index-0874kghs.js} +1 -1
  26. package/dist/cli/{index-6h81yvyc.js → index-131ay7x1.js} +3 -3
  27. package/dist/cli/{index-4gr9pj67.js → index-2c91cxdv.js} +4 -4
  28. package/dist/cli/{index-pq6vr26z.js → index-32vszgv0.js} +3 -3
  29. package/dist/cli/{index-0bpr8vag.js → index-3n5zsp31.js} +2 -2
  30. package/dist/cli/{index-152b9c6m.js → index-3skvygca.js} +5 -5
  31. package/dist/cli/{index-w81jmdkt.js → index-456awy1p.js} +2 -2
  32. package/dist/cli/{index-74x26wyj.js → index-475bkab8.js} +2 -2
  33. package/dist/cli/{index-t1swv35d.js → index-49ptc9xx.js} +1 -1
  34. package/dist/cli/{index-nm8ma9xb.js → index-57swfxyp.js} +8 -8
  35. package/dist/cli/{index-me39468k.js → index-5ppx86w1.js} +38 -18
  36. package/dist/cli/{index-njf5pbkm.js → index-6b427dy8.js} +6 -6
  37. package/dist/cli/{index-edrgc139.js → index-6cvdk98y.js} +2 -2
  38. package/dist/cli/{index-4t0wd9sv.js → index-6g664sy8.js} +1 -1
  39. package/dist/cli/{index-t26gj2fh.js → index-76abqm8d.js} +2 -2
  40. package/dist/cli/{index-nvm6mxep.js → index-7hvy33gc.js} +271 -80
  41. package/dist/cli/{index-6b4vkz6q.js → index-7p4ym4q3.js} +1 -1
  42. package/dist/cli/{index-rwfmx7vn.js → index-aghd9kcx.js} +2 -2
  43. package/dist/cli/{index-e90m050y.js → index-ar2gsn6b.js} +8 -8
  44. package/dist/cli/{index-fs9y88h1.js → index-dbshccrr.js} +3 -3
  45. package/dist/cli/{index-ad3yskxy.js → index-depfky1j.js} +158 -27
  46. package/dist/cli/{index-v3hpsxvd.js → index-earq3mda.js} +1 -1
  47. package/dist/cli/{index-b5mkznms.js → index-ejb7ejhd.js} +1 -1
  48. package/dist/cli/{index-3rb5gs4w.js → index-f0nj3d8z.js} +1 -1
  49. package/dist/cli/{index-5wk0etp8.js → index-gsgy1psq.js} +4 -4
  50. package/dist/cli/{index-qyx53xrz.js → index-jc8pcf0r.js} +7 -7
  51. package/dist/cli/{index-3fhg7pqf.js → index-jkxef52n.js} +2 -2
  52. package/dist/cli/{index-mn5zzmqx.js → index-jvk95e6y.js} +2 -2
  53. package/dist/cli/{index-5cve9g2b.js → index-k53a69vb.js} +6 -6
  54. package/dist/cli/{index-1xnse449.js → index-mc72pk74.js} +1 -1
  55. package/dist/cli/{index-bf1726rj.js → index-mz4zz59c.js} +42 -41
  56. package/dist/cli/{index-j40czc9v.js → index-n107956q.js} +5 -5
  57. package/dist/cli/{index-z3b157ew.js → index-qczxr0wh.js} +12 -10
  58. package/dist/cli/{index-9yvjwfay.js → index-s7bseqza.js} +3156 -1887
  59. package/dist/cli/{index-01wt209s.js → index-t7hmqgjy.js} +90 -141
  60. package/dist/cli/{index-08x7gsnf.js → index-w9hxzcz4.js} +2 -2
  61. package/dist/cli/{index-51xtrf7g.js → index-wfdx7yw2.js} +39 -15
  62. package/dist/cli/{index-079xzcxb.js → index-wsb0wbw6.js} +40 -39
  63. package/dist/cli/{index-nmh0s6dg.js → index-wy3zpwjy.js} +1 -1
  64. package/dist/cli/{index-fbhtb6f5.js → index-x1gyqgze.js} +7 -7
  65. package/dist/cli/index-xf69xty9.js +105 -0
  66. package/dist/cli/{index-z8smhv7k.js → index-ya32wfkp.js} +4 -2
  67. package/dist/cli/{index-46z4c89b.js → index-yk0r42nr.js} +4 -4
  68. package/dist/cli/{index-1d6ssjcj.js → index-zzvxj02e.js} +3 -3
  69. package/dist/cli/index.js +41 -40
  70. package/dist/cli/{knowledge-escalator-4296y1h2.js → knowledge-escalator-pt21q3eh.js} +14 -13
  71. package/dist/cli/{knowledge-events-31nga9yt.js → knowledge-events-hp96b55k.js} +12 -11
  72. package/dist/cli/{knowledge-link-ydpvzam8.js → knowledge-link-ap2274vm.js} +6 -5
  73. package/dist/cli/{knowledge-store-0qz3zmq3.js → knowledge-store-rnw1e7zp.js} +7 -6
  74. package/dist/cli/{knowledge-validator-vndnwdj6.js → knowledge-validator-xy7r6eyx.js} +9 -8
  75. package/dist/cli/{mcp-taace90a.js → mcp-3nd85kww.js} +15 -1
  76. package/dist/cli/mcp.d.ts +1 -0
  77. package/dist/cli/{model-preflight-bv8nvjjx.js → model-preflight-xe0chjad.js} +40 -39
  78. package/dist/cli/{pending-delegations-kwdk8j9d.js → pending-delegations-2pdngdzq.js} +13 -12
  79. package/dist/cli/{pr-subscriptions-w2fwdpkk.js → pr-subscriptions-hxxwszyr.js} +13 -12
  80. package/dist/cli/{pr-workflow-gate-sqjc6jmd.js → pr-workflow-gate-m37ynr6h.js} +40 -39
  81. package/dist/cli/{runner-r6gxq7m1.js → runner-yz3ysehf.js} +7 -6
  82. package/dist/cli/{scan-cursor-f74b9b4k.js → scan-cursor-be9hbq1v.js} +8 -7
  83. package/dist/cli/{schema-cyet68tw.js → schema-j17hv98z.js} +1 -1
  84. package/dist/cli/{scope-persistence-rg8v0r8q.js → scope-persistence-rmt56rma.js} +16 -15
  85. package/dist/cli/{server-765s4stz.js → server-wzrb59mh.js} +40 -39
  86. package/dist/cli/{skill-generator-qg5m18k7.js → skill-generator-vsfya55z.js} +16 -15
  87. package/dist/cli/{snapshot-coordination-init-zzs4bkmj.js → snapshot-coordination-init-pc8ykvh8.js} +40 -39
  88. package/dist/cli/{speckit-checkoff-2bsm6p0c.js → speckit-checkoff-j407j8ew.js} +4 -4
  89. package/dist/cli/{telemetry-rzvcp2n9.js → telemetry-39zmx4fp.js} +2 -2
  90. package/dist/cli/{workspace-snapshot-t22m6gbd.js → workspace-snapshot-0q1n1xq5.js} +4 -4
  91. package/dist/cli/{worktree-collision-ownership-qf2shp2n.js → worktree-collision-ownership-je4fb407.js} +14 -13
  92. package/dist/cli/{worktree-isolation-0b0jy6dt.js → worktree-isolation-27rt584e.js} +40 -39
  93. package/dist/db/qa-gate-session-override.d.ts +12 -12
  94. package/dist/gate-evidence.d.ts +43 -1
  95. package/dist/hooks/guardrails/index.d.ts +13 -7
  96. package/dist/index.js +507 -503
  97. package/dist/plan/ledger.d.ts +20 -4
  98. package/dist/plan/manager.d.ts +20 -2
  99. package/dist/session/hydration-ownership.d.ts +39 -12
  100. package/dist/session/snapshot-coordination-init.d.ts +11 -4
  101. package/dist/session/snapshot-reader.d.ts +9 -4
  102. package/dist/session/snapshot-writer.d.ts +2 -3
  103. package/dist/state.d.ts +35 -5
  104. package/dist/tools/phase-complete.d.ts +1 -0
  105. package/dist/tools/update-task-status.d.ts +1 -1
  106. package/dist/utils/project-boundary.d.ts +32 -1
  107. package/dist/workflow/coder-settlement.d.ts +8 -0
  108. package/dist/workflow/task-terminal.d.ts +2 -1
  109. package/dist/workflow/workflow-wal-schema.d.ts +2 -0
  110. package/package.json +1 -1
  111. package/dist/cli/curator-llm-factory-g6at4hn6.js +0 -74
  112. package/dist/cli/guardrail-explain-1ccchxdr.js +0 -75
@@ -9,32 +9,33 @@ import {
9
9
  WORKTREE_PROVISIONING_OWNER_LEASE_MS,
10
10
  removeWorktreeProvisioningOwner,
11
11
  scanWorktreeProvisioningOwnersForRecovery
12
- } from "./index-0bpr8vag.js";
12
+ } from "./index-3n5zsp31.js";
13
13
  import {
14
14
  scanDelegationFallbacksForRecovery,
15
15
  scanDelegationsForRecovery
16
- } from "./index-nm8ma9xb.js";
17
- import"./index-nmh0s6dg.js";
16
+ } from "./index-57swfxyp.js";
17
+ import"./index-wy3zpwjy.js";
18
18
  import"./index-2s7dvzff.js";
19
- import"./index-w81jmdkt.js";
20
- import"./index-3rb5gs4w.js";
21
- import"./index-08x7gsnf.js";
19
+ import"./index-456awy1p.js";
20
+ import"./index-f0nj3d8z.js";
21
+ import"./index-w9hxzcz4.js";
22
22
  import"./index-rdm3px0g.js";
23
23
  import"./index-ry16d01s.js";
24
- import"./index-1d6ssjcj.js";
25
- import"./index-qyx53xrz.js";
24
+ import"./index-zzvxj02e.js";
25
+ import"./index-jc8pcf0r.js";
26
26
  import"./index-vzm6zre7.js";
27
27
  import"./index-ae75rja9.js";
28
- import"./index-74x26wyj.js";
29
- import"./index-01wt209s.js";
30
- import"./index-fbhtb6f5.js";
28
+ import"./index-475bkab8.js";
29
+ import"./index-xf69xty9.js";
30
+ import"./index-t7hmqgjy.js";
31
+ import"./index-x1gyqgze.js";
31
32
  import {
32
33
  canonicalRootKeyFresh
33
- } from "./index-1xnse449.js";
34
+ } from "./index-mc72pk74.js";
34
35
  import"./index-c1ggtmpm.js";
35
36
  import"./index-ejhxgyvm.js";
36
37
  import"./index-7g4c7s5r.js";
37
- import"./index-5cve9g2b.js";
38
+ import"./index-k53a69vb.js";
38
39
  import"./index-zxdawwc7.js";
39
40
  import"./index-bk5tah7q.js";
40
41
  import"./index-gknz3bv1.js";
@@ -21,68 +21,69 @@ import {
21
21
  sanitizeWorktreeTaskId,
22
22
  standardWorktreeByCallID,
23
23
  standardWorktreeSerializationSessions
24
- } from "./index-9yvjwfay.js";
25
- import"./index-pq6vr26z.js";
24
+ } from "./index-s7bseqza.js";
25
+ import"./index-32vszgv0.js";
26
26
  import"./index-hamqvzqn.js";
27
- import"./index-4t0wd9sv.js";
28
- import"./index-46z4c89b.js";
29
- import"./index-r30xs0wp.js";
30
- import"./index-nvm6mxep.js";
31
- import"./index-z8smhv7k.js";
27
+ import"./index-6g664sy8.js";
28
+ import"./index-yk0r42nr.js";
29
+ import"./index-046psajf.js";
30
+ import"./index-7hvy33gc.js";
31
+ import"./index-ya32wfkp.js";
32
32
  import"./index-txdagbh7.js";
33
- import"./index-6b4vkz6q.js";
33
+ import"./index-7p4ym4q3.js";
34
34
  import"./index-6b295cas.js";
35
- import"./index-j40czc9v.js";
36
- import"./index-152b9c6m.js";
37
- import"./index-3fhg7pqf.js";
35
+ import"./index-n107956q.js";
36
+ import"./index-3skvygca.js";
37
+ import"./index-jkxef52n.js";
38
38
  import"./index-rdec0y3z.js";
39
- import"./index-e90m050y.js";
39
+ import"./index-ar2gsn6b.js";
40
40
  import"./index-cjapb4hy.js";
41
41
  import"./index-zsrtt42s.js";
42
- import"./index-me39468k.js";
43
- import"./index-6h81yvyc.js";
44
- import"./index-0bpr8vag.js";
42
+ import"./index-5ppx86w1.js";
43
+ import"./index-131ay7x1.js";
44
+ import"./index-3n5zsp31.js";
45
45
  import"./index-pt7h91zc.js";
46
46
  import"./index-q7sjgr1y.js";
47
- import"./index-t26gj2fh.js";
48
- import"./index-ad3yskxy.js";
49
- import"./index-4gr9pj67.js";
50
- import"./index-nm8ma9xb.js";
51
- import"./index-z3b157ew.js";
52
- import"./index-nmh0s6dg.js";
47
+ import"./index-76abqm8d.js";
48
+ import"./index-depfky1j.js";
49
+ import"./index-2c91cxdv.js";
50
+ import"./index-57swfxyp.js";
51
+ import"./index-qczxr0wh.js";
52
+ import"./index-wy3zpwjy.js";
53
53
  import"./index-2s7dvzff.js";
54
- import"./index-5wk0etp8.js";
55
- import"./index-v3hpsxvd.js";
54
+ import"./index-gsgy1psq.js";
55
+ import"./index-earq3mda.js";
56
56
  import"./index-rtry5xyf.js";
57
57
  import {
58
58
  resolveWorktreeIsolationConfig
59
- } from "./index-edrgc139.js";
59
+ } from "./index-6cvdk98y.js";
60
60
  import"./index-frcemc0b.js";
61
61
  import"./index-0725jpp7.js";
62
- import"./index-njf5pbkm.js";
63
- import"./index-51xtrf7g.js";
64
- import"./index-mn5zzmqx.js";
65
- import"./index-w81jmdkt.js";
66
- import"./index-3rb5gs4w.js";
67
- import"./index-08x7gsnf.js";
62
+ import"./index-6b427dy8.js";
63
+ import"./index-wfdx7yw2.js";
64
+ import"./index-jvk95e6y.js";
65
+ import"./index-456awy1p.js";
66
+ import"./index-f0nj3d8z.js";
67
+ import"./index-w9hxzcz4.js";
68
68
  import"./index-rdm3px0g.js";
69
69
  import"./index-ry16d01s.js";
70
- import"./index-1d6ssjcj.js";
71
- import"./index-qyx53xrz.js";
70
+ import"./index-zzvxj02e.js";
71
+ import"./index-jc8pcf0r.js";
72
72
  import"./index-vzm6zre7.js";
73
73
  import"./index-ae75rja9.js";
74
- import"./index-74x26wyj.js";
75
- import"./index-01wt209s.js";
76
- import"./index-fbhtb6f5.js";
77
- import"./index-1xnse449.js";
74
+ import"./index-475bkab8.js";
75
+ import"./index-xf69xty9.js";
76
+ import"./index-t7hmqgjy.js";
77
+ import"./index-x1gyqgze.js";
78
+ import"./index-mc72pk74.js";
78
79
  import"./index-c1ggtmpm.js";
79
80
  import"./index-ejhxgyvm.js";
80
81
  import"./index-7g4c7s5r.js";
81
- import"./index-5cve9g2b.js";
82
+ import"./index-k53a69vb.js";
82
83
  import"./index-gx2vp8gx.js";
83
- import"./index-t1swv35d.js";
84
+ import"./index-49ptc9xx.js";
84
85
  import"./index-zxdawwc7.js";
85
- import"./index-ysr6n4ca.js";
86
+ import"./index-0874kghs.js";
86
87
  import"./index-wzec3c4g.js";
87
88
  import"./index-bk5tah7q.js";
88
89
  import"./index-gknz3bv1.js";
@@ -15,19 +15,8 @@
15
15
  * Semantics mirror the spec-level profile ratchet: only `true` wins. A session
16
16
  * with no `true` gates has NO row — an empty merge deletes it.
17
17
  */
18
+ import { getProjectDb } from './project-db.js';
18
19
  import { type QaGates } from './qa-gate-profile.js';
19
- /**
20
- * Test-only dependency-injection seam — see `gitignore-warning.ts:_internals`
21
- * for the rationale (`mock.module` from `bun:test` leaks across files in
22
- * Bun's shared test-runner process). Mutating this local object is
23
- * file-scoped and trivially restorable via `afterEach`.
24
- */
25
- export declare const _internals: {
26
- getOverrideForSession: typeof getOverrideForSession;
27
- setOverrideForSession: typeof setOverrideForSession;
28
- clearOverrideForSession: typeof clearOverrideForSession;
29
- clearAllSessionOverrides: typeof clearAllSessionOverrides;
30
- };
31
20
  /**
32
21
  * Read the durable ratchet-tighter overrides for a session.
33
22
  *
@@ -58,6 +47,16 @@ export declare function clearOverrideForSession(directory: string, sessionId: st
58
47
  * session). Returns the number of rows removed.
59
48
  */
60
49
  export declare function clearAllSessionOverrides(directory: string): number;
50
+ declare function deleteOrphanOverrideBatch(db: ReturnType<typeof getProjectDb>, sessionIds: string[]): number;
51
+ /**
52
+ * Dependency-injection seam used by sweepOrphanOverrides and its bounded-batch
53
+ * regression test. The test mutates and restores this seam in afterEach rather
54
+ * than using mock.module, which can leak across Bun test files; see
55
+ * gitignore-warning.ts:_internals for the pattern and rationale.
56
+ */
57
+ export declare const _internals: {
58
+ deleteOrphanOverrideBatch: typeof deleteOrphanOverrideBatch;
59
+ };
61
60
  /**
62
61
  * Delete override rows whose session is no longer live in this project
63
62
  * (#2668 orphan-row reaper). `sweepStaleSessions` can evict a stale session
@@ -70,3 +69,4 @@ export declare function clearAllSessionOverrides(directory: string): number;
70
69
  * of orphaned rows removed.
71
70
  */
72
71
  export declare function sweepOrphanOverrides(directory: string, keepSessionIds: ReadonlySet<string>): number;
72
+ export {};
@@ -66,6 +66,16 @@ export interface TaskWorkflowMetadata {
66
66
  * `repair_idle` (which opens a new generation for genuinely new work).
67
67
  */
68
68
  supervisedRecovery?: boolean;
69
+ /**
70
+ * Exact proof that the generation-0 coder settlement declared no files and
71
+ * observed no mutation. This is deliberately separate from retry history and
72
+ * lastOutcome so it cannot be overwritten by a later advisory transition.
73
+ */
74
+ noMutationSettlement?: {
75
+ generation: 0;
76
+ transitionId: string;
77
+ declaredFiles: string[];
78
+ };
69
79
  }
70
80
  export interface TaskWorkflowSnapshot extends TaskWorkflowMetadata {
71
81
  authoritative: boolean;
@@ -87,6 +97,20 @@ export interface TaskEvidence {
87
97
  requirements_receipt_hash: string | null;
88
98
  };
89
99
  }
100
+ export interface ApplicableGateSet {
101
+ requiredGates: string[];
102
+ satisfiedGates: string[];
103
+ missingGates: string[];
104
+ readOnlyNoMutation: boolean;
105
+ }
106
+ /**
107
+ * Read the current task scope for a completion-time guard. A generation-0
108
+ * no-mutation settlement is meaningful only while the current task still has
109
+ * an empty scope. If the plan cannot be read, parsed, or identifies the task
110
+ * ambiguously, return null so callers fail closed rather than trusting stale
111
+ * proof.
112
+ */
113
+ export declare function readCurrentTaskDeclaredFiles(directory: string, taskId: string): string[] | null;
90
114
  /**
91
115
  * Legacy internal marker written by receipt-less gate-evidence repair before
92
116
  * issue #2525. It is read only for recovery and must never be emitted as a
@@ -168,6 +192,8 @@ export type TaskWorkflowTransitionEvent = {
168
192
  type: 'task_completed';
169
193
  /** Locked plan phase explicitly declares that reviewer QA is not required. */
170
194
  qaExempt?: boolean;
195
+ /** Durable, non-forced completion of a trusted empty-scope settlement. */
196
+ readOnlyNoMutation?: boolean;
171
197
  expectedGeneration: number;
172
198
  transitionId?: string;
173
199
  } | {
@@ -195,6 +221,10 @@ export interface GateDerivationContext {
195
221
  testEngineerExempt?: boolean;
196
222
  /** The shared-root coder changed files but returned a failed/cancelled result. */
197
223
  settlementFailed?: boolean;
224
+ /** Trusted coder-settlement declared scope. Null/missing is not proof. */
225
+ declaredFiles?: readonly string[] | null;
226
+ /** Internal binding set only by the coder-settlement WAL transition adapter. */
227
+ settlementTransitionId?: string;
198
228
  }
199
229
  /**
200
230
  * Canonical task-id validation helper.
@@ -203,6 +233,18 @@ export interface GateDerivationContext {
203
233
  */
204
234
  export declare function isValidTaskId(taskId: string): boolean;
205
235
  export declare function getTaskWorkflowSnapshot(evidence: TaskEvidence | null | undefined): TaskWorkflowSnapshot;
236
+ /**
237
+ * Derive the single evidence-backed gate set used by both completion and the
238
+ * read-only status tool. Empty required gates are meaningful only when the
239
+ * exact generation-0 no-mutation settlement proof is present; otherwise
240
+ * Stage A remains applicable and is reported as missing.
241
+ */
242
+ export declare function deriveApplicableGateSet(evidence: TaskEvidence | null | undefined, options?: {
243
+ currentDeclaredFiles?: readonly string[] | null;
244
+ }): ApplicableGateSet;
245
+ export declare function isReadOnlyNoMutationEligible(evidence: TaskEvidence | null | undefined, options?: {
246
+ currentDeclaredFiles?: readonly string[] | null;
247
+ }): boolean;
206
248
  export declare function reduceTaskWorkflowSnapshot(current: TaskWorkflowSnapshot, event: TaskWorkflowTransitionEvent, context: {
207
249
  requiredGates: string[];
208
250
  gates: Record<string, GateEvidence>;
@@ -298,6 +340,6 @@ export declare function readTaskEvidenceRaw(directory: string, taskId: string):
298
340
  * Returns true only when every required_gate has a matching gates entry.
299
341
  * Returns false if no evidence file exists.
300
342
  */
301
- export declare function hasPassedAllGates(directory: string, taskId: string): Promise<boolean>;
343
+ export declare function hasPassedAllGates(directory: string, taskId: string, currentDeclaredFiles?: readonly string[] | null): Promise<boolean>;
302
344
  export declare function compareTaskWorkflowStateRank(left: TaskWorkflowState, right: TaskWorkflowState): number;
303
345
  export {};
@@ -46,13 +46,18 @@ export declare const _internals: {
46
46
  };
47
47
  export declare function emitDurableAttributionAdvisory(sessionID: string, key: string, message: string): void;
48
48
  /**
49
- * Stage A workflow-transition write errors that indicate an attribution or
50
- * correlation miss — the post-reset wedge signature. These escalate beyond a
51
- * log line because every silent one is exactly how tasks wedge at
52
- * coder_delegated with no diagnostic. Duplicate transitions never throw
53
- * (isDuplicateTransition returns the existing evidence), so any throw here is
54
- * abnormal; TASK_WORKFLOW_TERMINAL and fencing codes stay warn-only because a
55
- * late gate result after close/settlement is expected churn, not a wedge.
49
+ * Stage A workflow-transition write errors are split by the remediation they
50
+ * require. Coder-mutation-required is a reducer precondition: the architect
51
+ * must dispatch a coder for a real change before another Stage A result can
52
+ * be recorded. Stage-A-required is the attribution-recovery category. It is
53
+ * defensive at these two Stage A catches (the wrapped stage_a_passed and
54
+ * stage_a_failed writes currently cannot throw it), but remains live in the
55
+ * Stage B/delegation recovery surfaces.
56
+ *
57
+ * Duplicate transitions never throw (isDuplicateTransition returns the
58
+ * existing evidence), so any throw here is abnormal; TASK_WORKFLOW_TERMINAL
59
+ * and fencing codes stay warn-only because a late gate result after
60
+ * close/settlement is expected churn, not a wedge.
56
61
  *
57
62
  * `TASK_WORKFLOW_GENERATION_MISMATCH` is deliberately EXCLUDED: it is a CAS
58
63
  * fencing code that fires during ordinary concurrent/parallel-lane operation
@@ -61,6 +66,7 @@ export declare function emitDurableAttributionAdvisory(sessionID: string, key: s
61
66
  * turn a routine race into a false "run /swarm recover" advisory during
62
67
  * normal, non-reset operation.
63
68
  */
69
+ export declare const STAGE_A_CODER_MUTATION_REQUIRED_CODES: Set<string>;
64
70
  export declare const STAGE_A_ATTRIBUTION_MISS_CODES: Set<string>;
65
71
  export declare function stageAWriteErrorCode(error: unknown): string | null;
66
72
  type DurableAttributionResult = {