opencode-swarm 7.166.2 → 7.166.3

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 (100) 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/cli/{coder-settlement-pv86n7n4.js → coder-settlement-nx8ff9k1.js} +11 -11
  4. package/dist/cli/{config-doctor-fy1aytwt.js → config-doctor-n9cjh11e.js} +2 -2
  5. package/dist/cli/{core-1d9vqbt4.js → core-cbwrwhcz.js} +1 -1
  6. package/dist/cli/{curation-policy-gnpgc3z7.js → curation-policy-bvxf5pxv.js} +9 -6
  7. package/dist/cli/{curator-a4rbehfr.js → curator-c7amtass.js} +37 -36
  8. package/dist/cli/{curator-drift-efmgp1v2.js → curator-drift-20m2ab5w.js} +4 -4
  9. package/dist/cli/curator-llm-factory-2gv6kt1v.js +71 -0
  10. package/dist/cli/{evidence-summary-service-dvp1kbm4.js → evidence-summary-service-5th3zm9c.js} +15 -15
  11. package/dist/cli/{gate-evidence-qf27gdfx.js → gate-evidence-py8v0w28.js} +6 -6
  12. package/dist/cli/guardrail-explain-qzhjhtyk.js +72 -0
  13. package/dist/cli/{guardrail-log-qhw3knjt.js → guardrail-log-rtdpk545.js} +7 -7
  14. package/dist/cli/{guardrail-reset-84ydxdg3.js → guardrail-reset-s27fehv6.js} +37 -36
  15. package/dist/cli/{hive-promoter-y2daybf6.js → hive-promoter-56mfysq6.js} +37 -36
  16. package/dist/cli/{index-0a0jsbhg.js → index-0jpv5z94.js} +1 -1
  17. package/dist/cli/{index-bysyj3z4.js → index-1aex5zd9.js} +1 -1
  18. package/dist/cli/{index-p0r5fn7y.js → index-251vrmge.js} +2 -2
  19. package/dist/cli/{index-sxsyd7kf.js → index-2c7eabkr.js} +6 -6
  20. package/dist/cli/{index-sxe3t040.js → index-2w0beg3s.js} +2 -2
  21. package/dist/cli/{index-kd68b6mg.js → index-3a2xznmd.js} +2 -2
  22. package/dist/cli/{index-9ccxcjdm.js → index-3f1tr4ha.js} +4 -4
  23. package/dist/cli/{index-jr6tppv9.js → index-3nm1b3t2.js} +7 -7
  24. package/dist/cli/{index-3wtfrjcx.js → index-4c50tm9j.js} +3 -3
  25. package/dist/cli/{index-e0bjbadr.js → index-4mgggb8x.js} +8 -3
  26. package/dist/cli/{index-ft1tnx0e.js → index-5bd84nxc.js} +1 -1
  27. package/dist/cli/{index-7pp8fz4j.js → index-6d4dc99f.js} +1 -1
  28. package/dist/cli/{index-nthqfxzz.js → index-75f9jj3h.js} +2 -2
  29. package/dist/cli/{index-x4azb6qj.js → index-87wqes24.js} +2 -2
  30. package/dist/cli/{index-22sannyk.js → index-8cky7ksv.js} +36 -10
  31. package/dist/cli/{index-x8cvbkjs.js → index-9wv6a3jx.js} +2 -2
  32. package/dist/cli/{index-qmp4gxac.js → index-b7ra4hwj.js} +1 -1
  33. package/dist/cli/{index-8nv3bc9h.js → index-bwvbj3fp.js} +4 -4
  34. package/dist/cli/{index-st47knj6.js → index-ch293kd3.js} +3 -3
  35. package/dist/cli/{index-ytsts0zj.js → index-d5gvr6z4.js} +1 -1
  36. package/dist/cli/{index-gy55mc55.js → index-dvhecfa9.js} +3369 -2820
  37. package/dist/cli/{index-bks56jbg.js → index-f6zgz02s.js} +3 -3
  38. package/dist/cli/{index-z1kmkh72.js → index-gbv76wf7.js} +2 -2
  39. package/dist/cli/{index-2n1v8ft1.js → index-gk1w1h9k.js} +5 -1
  40. package/dist/cli/{index-ty0wg9yp.js → index-h92cqbqa.js} +5 -5
  41. package/dist/cli/{index-hbjax6hy.js → index-hfrb77tj.js} +8 -8
  42. package/dist/cli/{index-19hjpqsy.js → index-m21x1bkx.js} +17 -9
  43. package/dist/cli/{index-j81kpway.js → index-m3tx1q9v.js} +1 -1
  44. package/dist/cli/{index-7mxrqy4r.js → index-ms16gaa4.js} +7 -7
  45. package/dist/cli/{index-jgtje76m.js → index-qa7t42e7.js} +94 -29
  46. package/dist/cli/{index-hgphhnrp.js → index-qd619x3r.js} +2 -2
  47. package/dist/cli/{index-fkk7x6sy.js → index-qd726agw.js} +2 -2
  48. package/dist/cli/{index-c23w8t46.js → index-qww0h314.js} +11 -6
  49. package/dist/cli/{index-y3dtdn2f.js → index-rk10x4zr.js} +1 -1
  50. package/dist/cli/{index-4kwxpnf8.js → index-sahf5yz3.js} +1 -1
  51. package/dist/cli/{index-14z9en94.js → index-t8tw1bhs.js} +1 -1
  52. package/dist/cli/{index-wz258yje.js → index-t9kjxzdr.js} +11 -11
  53. package/dist/cli/{index-3nww2vnx.js → index-tzq6t9wc.js} +8 -8
  54. package/dist/cli/index-vzm6zre7.js +167 -0
  55. package/dist/cli/{index-nrdj94za.js → index-w50dk71y.js} +39 -38
  56. package/dist/cli/{index-c0eyq4rp.js → index-xn16akay.js} +4 -4
  57. package/dist/cli/index.js +37 -36
  58. package/dist/cli/{knowledge-escalator-aq7gzhpd.js → knowledge-escalator-stnveccq.js} +13 -12
  59. package/dist/cli/{knowledge-events-9z5sskyv.js → knowledge-events-ph6txm8h.js} +10 -10
  60. package/dist/cli/{knowledge-link-ps2v4s18.js → knowledge-link-w1fwqts4.js} +4 -4
  61. package/dist/cli/{knowledge-store-1hzt2a0t.js → knowledge-store-tgyhr9nf.js} +8 -5
  62. package/dist/cli/{knowledge-validator-xe1fza7c.js → knowledge-validator-2g547bcn.js} +8 -7
  63. package/dist/cli/{pending-delegations-0nfjg7vp.js → pending-delegations-873dtyw6.js} +12 -11
  64. package/dist/cli/{pr-subscriptions-8974hwa0.js → pr-subscriptions-xmxdrj1z.js} +12 -11
  65. package/dist/cli/{pr-workflow-gate-xgak5wvz.js → pr-workflow-gate-h7644byf.js} +37 -36
  66. package/dist/cli/{runner-7zqbp81n.js → runner-nmrjv7te.js} +5 -5
  67. package/dist/cli/{scan-cursor-hc4v0c90.js → scan-cursor-tx72gxp0.js} +7 -6
  68. package/dist/cli/{schema-w1hsvw1h.js → schema-cpc92vq0.js} +3 -1
  69. package/dist/cli/{scope-persistence-k17003v4.js → scope-persistence-xy3xs55f.js} +15 -14
  70. package/dist/cli/{skill-generator-tbxgpc9x.js → skill-generator-4f1v5zwx.js} +15 -14
  71. package/dist/cli/{snapshot-coordination-init-vaf34wf0.js → snapshot-coordination-init-w2nw33pn.js} +37 -36
  72. package/dist/cli/{telemetry-8qn4eag5.js → telemetry-ce0tx41h.js} +1 -1
  73. package/dist/cli/{workspace-snapshot-y85jy6gs.js → workspace-snapshot-0kxj2grt.js} +3 -3
  74. package/dist/cli/{worktree-collision-ownership-r3jdke7h.js → worktree-collision-ownership-1g1qz8wc.js} +13 -12
  75. package/dist/cli/{worktree-isolation-sa1tbqff.js → worktree-isolation-jwxtrh3z.js} +37 -36
  76. package/dist/commands/close.d.ts +82 -0
  77. package/dist/config/schema.d.ts +9 -0
  78. package/dist/context-map/capsule-persistence.d.ts +13 -8
  79. package/dist/hooks/delegate-ack-collector.d.ts +7 -0
  80. package/dist/hooks/knowledge-store.d.ts +7 -0
  81. package/dist/hooks/review-receipt.d.ts +29 -1
  82. package/dist/index.js +554 -551
  83. package/dist/knowledge/curation-policy.d.ts +7 -0
  84. package/dist/memory/consolidation-log.d.ts +9 -0
  85. package/dist/memory/injector.d.ts +7 -0
  86. package/dist/memory/run-log.d.ts +8 -0
  87. package/dist/retention/caps.d.ts +33 -0
  88. package/dist/retention/dir-prune.d.ts +72 -0
  89. package/dist/retention/jsonl-cap.d.ts +84 -0
  90. package/dist/retention/sweep.d.ts +67 -0
  91. package/dist/services/compaction-service.d.ts +14 -0
  92. package/dist/services/skill-changelog.d.ts +20 -0
  93. package/dist/summaries/manager.d.ts +41 -4
  94. package/dist/test-impact/history-store.d.ts +16 -0
  95. package/dist/turbo/epic/calibration.d.ts +16 -1
  96. package/dist/turbo/epic/divergence-recorder.d.ts +11 -0
  97. package/opencode-swarm.schema.json +15 -0
  98. package/package.json +1 -1
  99. package/dist/cli/curator-llm-factory-cwg62ynw.js +0 -70
  100. package/dist/cli/guardrail-explain-zskpzgsr.js +0 -71
@@ -157,6 +157,77 @@ declare function countSessionKnowledgeEntries(entries: CloseKnowledgeEntry[], se
157
157
  * Use copyDirRecursiveWithFailures when per-file failure tracking is needed.
158
158
  */
159
159
  declare function copyDirRecursive(src: string, dest: string): Promise<number>;
160
+ /**
161
+ * Flat-file artifacts to include in the archive bundle.
162
+ * Each entry is a relative path under .swarm/.
163
+ *
164
+ * plan-ledger.jsonl is included so the archive bundle is a self-contained
165
+ * forensic snapshot of the session: the ledger holds the full audit trail of
166
+ * task state transitions and snapshot events that plan.json/plan.md don't
167
+ * preserve.
168
+ */
169
+ export declare const ARCHIVE_ARTIFACTS: string[];
170
+ /**
171
+ * Active-state flat files to clean after archiving so future swarms start clean.
172
+ *
173
+ * plan.json, plan.md, and plan-ledger.jsonl are all removed so the next /swarm
174
+ * session starts with a clean slate. The user's original ask for /swarm close
175
+ * was to "archive plan files so future swarms aren't confused" — leaving a
176
+ * terminal-state plan.json in place violates that invariant because the next
177
+ * session's loadPlan() would pick it up as if it were still active.
178
+ *
179
+ * CRITICAL: the ledger must also be removed. Without this, loadPlan()'s Step 4
180
+ * would see no plan.json but a surviving ledger, call replayFromLedger(), and
181
+ * materialize the CLOSED plan back into plan.json on the next session. The
182
+ * ledger is a second backing store for the same "terminal-state plan" and
183
+ * leaving it behind re-enables the exact bug this cleanup is meant to fix.
184
+ * The archive-first guard below ensures we only delete files we successfully
185
+ * copied to the archive bundle, so the audit trail is preserved in the bundle.
186
+ *
187
+ * knowledge-rejected.jsonl, repo-graph.json, doc-manifest.json,
188
+ * dark-matter.md, telemetry.jsonl, and swarm.db are
189
+ * session-generated artifacts that do not persist meaningfully across sessions —
190
+ * they are recreated on next session init and must be removed to avoid stale-state
191
+ * interference.
192
+ *
193
+ * The SQLite WAL sidecars swarm.db-shm and swarm.db-wal are deliberately NOT in
194
+ * either list (the archive-first guard would preserve them anyway): since #2483
195
+ * they are removed immediately AFTER the swarm.db unlink by
196
+ * removeSqliteSidecarsAfterClose, deliberately reversing #1692. Post-unlink the
197
+ * sidecar paths are meaningless for future opens (no new opener can attach),
198
+ * live processes keep their already-open fds so deleting the PATH cannot
199
+ * corrupt them, and a Windows open-handle collision yields EBUSY which the
200
+ * helper skips fail-open.
201
+ *
202
+ * Note: knowledge.jsonl is intentionally NOT cleaned because it contains cumulative
203
+ * project knowledge (lessons learned) that should persist across sessions and finalize
204
+ * cycles. The archive step still creates a backup for safety.
205
+ * close-summary.md is NOT cleaned because it is written as the final close output
206
+ * AFTER the clean stage runs. spec.md IS cleaned: it is single-session state coupled
207
+ * to the plan lifecycle (the plan it produced is removed above), so leaving it behind
208
+ * makes the next session pick up a stale spec via readEffectiveSpecSync and mis-route
209
+ * the architect into CLARIFY-SPEC/overwrite prompts. It is archived first (archive-first
210
+ * guard), so the forensic copy is preserved in the bundle. The earlier "spec.md may not
211
+ * exist" rationale was wrong — handoff.md is equally optional and is cleaned the same way.
212
+ * session-reflection.md is a single-session snapshot (not cumulative like
213
+ * knowledge.jsonl) so it IS cleaned to maintain the clean-slate invariant.
214
+ * spec-staleness.json and spec-snapshot.md are the same class of single-session
215
+ * spec-drift state as spec.md. spec-staleness.json is an existence-only gate
216
+ * checked unconditionally by enforceSpecDriftGate, which hard-blocks the core
217
+ * write tools (save_plan, update_task_status, phase_complete,
218
+ * lean_turbo_run_phase, lean_turbo_acquire_locks) with SPEC_DRIFT_BLOCK — a
219
+ * survivor would block the NEXT session against drift that no longer applies.
220
+ * spec-snapshot.md is its companion diff source, feeding the mismatch shown in
221
+ * the SPEC_DRIFT_BLOCK message. Both are archived first (archive-first guard),
222
+ * then cleaned so the next session starts drift-free.
223
+ */
224
+ export declare const ACTIVE_STATE_TO_CLEAN: string[];
225
+ /**
226
+ * Active-state directories to archive and clean after archiving.
227
+ * These contain session-generated data that must be removed so future
228
+ * swarms start clean. Each entry is a relative path under .swarm/.
229
+ */
230
+ export declare const ACTIVE_STATE_DIRS_TO_CLEAN: string[];
160
231
  /**
161
232
  * Guarantee all phases and tasks in a plan are marked complete/closed.
162
233
  * Mutates planData in place. Returns actual IDs of newly closed phases and
@@ -226,6 +297,16 @@ export declare function runArchiveEvidenceRetention(ctx: ArchiveStageContext): P
226
297
  * 375 ms so `/swarm close` remains responsive.
227
298
  */
228
299
  declare function unlinkActiveStateFileWithRetry(filePath: string): Promise<void>;
300
+ /**
301
+ * Remove the SQLite WAL sidecars (swarm.db-wal / swarm.db-shm) immediately
302
+ * after the clean stage unlinks swarm.db (#2483, deliberately reversing the
303
+ * #1692 preserve decision): once the main db is unlinked the sidecar paths
304
+ * are meaningless for future opens — no new opener can attach — and live
305
+ * processes keep their already-open fds, so deleting the PATH cannot corrupt
306
+ * them. Best-effort and per-file fail-open: ENOENT (already gone) and EBUSY
307
+ * (Windows open-handle collision) are skipped silently.
308
+ */
309
+ export declare function removeSqliteSidecarsAfterClose(swarmDir: string): void;
229
310
  export declare function runCleanStage(ctx: CloseStageContext): Promise<CleanStageResult>;
230
311
  /**
231
312
  * STAGE 4: ALIGN
@@ -282,6 +363,7 @@ export declare const _internals: {
282
363
  closeRepoMemory: typeof closeRepoMemory;
283
364
  unlinkActiveStateFileWithRetry: typeof unlinkActiveStateFileWithRetry;
284
365
  unlink: typeof fsSync.promises.unlink;
366
+ unlinkSidecarSync: typeof fsSync.unlinkSync;
285
367
  sleep: typeof sleep;
286
368
  collectGarbageBestEffort: typeof collectGarbageBestEffort;
287
369
  ACTIVE_STATE_DIRS_TO_CLEAN: string[];
@@ -445,6 +445,11 @@ export declare const SummaryConfigSchema: z.ZodObject<{
445
445
  exempt_tools: z.ZodDefault<z.ZodArray<z.ZodString>>;
446
446
  }, z.core.$strip>;
447
447
  export type SummaryConfig = z.infer<typeof SummaryConfigSchema>;
448
+ export declare const RetentionConfigSchema: z.ZodPrefault<z.ZodObject<{
449
+ enabled: z.ZodDefault<z.ZodBoolean>;
450
+ dry_run: z.ZodDefault<z.ZodBoolean>;
451
+ }, z.core.$strip>>;
452
+ export type RetentionConfig = z.infer<typeof RetentionConfigSchema>;
448
453
  export declare const ReviewPassesConfigSchema: z.ZodObject<{
449
454
  always_security_review: z.ZodDefault<z.ZodBoolean>;
450
455
  security_globs: z.ZodDefault<z.ZodArray<z.ZodString>>;
@@ -2218,6 +2223,10 @@ export declare const PluginConfigSchema: z.ZodObject<{
2218
2223
  retention_days: z.ZodDefault<z.ZodNumber>;
2219
2224
  exempt_tools: z.ZodDefault<z.ZodArray<z.ZodString>>;
2220
2225
  }, z.core.$strip>>;
2226
+ retention: z.ZodPrefault<z.ZodObject<{
2227
+ enabled: z.ZodDefault<z.ZodBoolean>;
2228
+ dry_run: z.ZodDefault<z.ZodBoolean>;
2229
+ }, z.core.$strip>>;
2221
2230
  review_passes: z.ZodOptional<z.ZodObject<{
2222
2231
  always_security_review: z.ZodDefault<z.ZodBoolean>;
2223
2232
  security_globs: z.ZodDefault<z.ZodArray<z.ZodString>>;
@@ -29,6 +29,7 @@ export declare const _internals: {
29
29
  readonly existsSync: typeof fs.existsSync;
30
30
  readonly mkdirSync: typeof fs.mkdirSync;
31
31
  readonly readdirSync: typeof fs.readdirSync;
32
+ readonly statSync: fs.StatSyncFn;
32
33
  readonly unlinkSync: typeof fs.unlinkSync;
33
34
  readonly renameSync: typeof fs.renameSync;
34
35
  };
@@ -50,17 +51,21 @@ export declare function saveCapsule(capsule: ContextCapsule, directory: string):
50
51
  */
51
52
  export declare function loadCapsule(taskId: string, directory: string): ContextCapsule | null;
52
53
  /**
53
- * Delete a capsule from `.swarm/capsules/{task_id}.json`.
54
- *
55
- * Returns `true` if the file was deleted, `false` if it didn't exist.
56
- * Never throws.
54
+ * Listing cap for `.swarm/capsules/` enumeration (issue #2483 §2, R12): the
55
+ * list returns NEWEST-first (mtime descending, code-unit filename
56
+ * tie-break never localeCompare) and is capped, so every listing read is
57
+ * O(cap), not O(unbounded capsule history). The effective value resolves
58
+ * through `resolveRetentionCap` so the #2483 acceptance checks can shrink it.
57
59
  */
58
- export declare function deleteCapsule(taskId: string, directory: string): boolean;
60
+ export declare const MAX_CAPSULES_LISTED = 500;
59
61
  /**
60
- * List all saved capsule task IDs in `.swarm/capsules/`.
62
+ * List saved capsule task IDs in `.swarm/capsules/`, newest-first.
61
63
  *
62
64
  * Returns an array of task IDs derived from filenames (stripping the
63
- * `.json` extension). Returns an empty array if the directory doesn't
64
- * exist. Never throws.
65
+ * `.json` extension), ordered by capsule file mtime descending (code-unit
66
+ * filename tie-break) and capped at {@link MAX_CAPSULES_LISTED} entries.
67
+ * A capsule whose file cannot be `stat`-ed sorts oldest (fail-open per
68
+ * entry). Returns an empty array if the directory doesn't exist. Never
69
+ * throws.
65
70
  */
66
71
  export declare function listCapsules(directory: string): string[];
@@ -39,6 +39,13 @@ export interface DelegateAckOutput {
39
39
  }
40
40
  /** Best-effort extraction of a task id from a delegation prompt envelope. */
41
41
  export declare function resolveDelegateAckTaskId(args: Record<string, unknown>, knownPlanTaskIds?: ReadonlySet<string>, planContextOverLimit?: boolean): string | undefined;
42
+ /**
43
+ * Global FIFO cap on the unacknowledged-criticals audit stream (issue #2483
44
+ * §2). Enforcement resolves the effective value through `resolveRetentionCap`
45
+ * so the #2483 acceptance checks can shrink the cap below this default and
46
+ * prove the writer clamps.
47
+ */
48
+ export declare const MAX_UNACKNOWLEDGED_CRITICALS = 500;
42
49
  export interface CollectDelegateAcksResult {
43
50
  emitted: Array<{
44
51
  id: string;
@@ -29,6 +29,13 @@ export interface KnowledgeRetractionRecord {
29
29
  matched_swarm_ids: string[];
30
30
  matched_hive_ids: string[];
31
31
  }
32
+ /**
33
+ * Global FIFO cap on the retraction audit stream (issue #2483 §2). Enforcement
34
+ * resolves the effective value through {@link resolveRetentionCap} so the
35
+ * #2483 acceptance checks can shrink the cap below this default and prove the
36
+ * writer clamps.
37
+ */
38
+ export declare const MAX_RETRACTION_RECORDS = 500;
32
39
  export declare function readRetractionRecords(directory: string): Promise<KnowledgeRetractionRecord[]>;
33
40
  export declare function appendRetractionRecord(directory: string, record: KnowledgeRetractionRecord): Promise<void>;
34
41
  /**
@@ -224,6 +224,25 @@ export declare function persistReviewReceipt(directory: string, receipt: ReviewR
224
224
  * orphan file, never a dangling index entry that points at missing evidence.
225
225
  */
226
226
  export declare function removeReviewReceipt(directory: string, receiptPath: string, receiptId: string): Promise<void>;
227
+ export interface PruneDanglingReceiptIndexEntriesOptions {
228
+ /** Count dangling entries without rewriting the index (sweep dry-run). */
229
+ dryRun?: boolean;
230
+ }
231
+ /**
232
+ * Drop index entries whose receipt file no longer exists (issue #2483).
233
+ *
234
+ * The retention sweep prunes receipt FILES by age/count; without this pass
235
+ * the manifest keeps naming pruned evidence forever. Entries whose
236
+ * `filename` is not a bare basename (the poisoned-entry class the read path
237
+ * already refuses) count as dangling and are dropped with the rest.
238
+ *
239
+ * The rewrite is atomic (temp+rename via {@link writeReceiptIndex}) under
240
+ * the same `_indexLockChain` as appends, so an interleaved append is never
241
+ * lost. Returns the number of entries dropped (or, with `dryRun`, the
242
+ * number that WOULD be dropped). A missing/unparseable index, or a receipts
243
+ * directory that does not exist, is a 0 — this helper never creates state.
244
+ */
245
+ export declare function pruneDanglingReceiptIndexEntries(directory: string, options?: PruneDanglingReceiptIndexEntriesOptions): Promise<number>;
227
246
  /**
228
247
  * Atomically attach independent finding-validation results to an existing
229
248
  * receipt. The receipt identity and index entry remain unchanged.
@@ -238,9 +257,18 @@ export declare function readReceiptById(directory: string, receiptId: string): P
238
257
  * Useful for drift verification to find prior reviews of the same scope.
239
258
  */
240
259
  export declare function readReceiptsByScopeHash(directory: string, scopeHash: string): Promise<ReviewReceipt[]>;
260
+ /**
261
+ * Read cap for the receipts index reader (issue #2483 §2, R12): the index is
262
+ * append-ordered (newest last), so bounding the read to the LAST
263
+ * {@link MAX_RECEIPTS_READ} entries keeps every read O(cap) while still
264
+ * returning the newest receipts. The effective value resolves through
265
+ * `resolveRetentionCap` so the #2483 acceptance checks can shrink it.
266
+ */
267
+ export declare const MAX_RECEIPTS_READ = 1000;
241
268
  /**
242
269
  * Read all receipts from the index (all verdicts, latest first).
243
- * Useful for drift verification context.
270
+ * Useful for drift verification context. Bounded to the newest
271
+ * {@link MAX_RECEIPTS_READ} index entries (see the constant's docblock).
244
272
  */
245
273
  export declare function readAllReceipts(directory: string): Promise<ReviewReceipt[]>;
246
274
  /**