@secondlayer/shared 11.11.2 → 11.12.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.
@@ -1321,6 +1321,24 @@ declare function applyDecoderReceipts(state: RunnerState, receipts: readonly Dec
1321
1321
  * rejected ack never opens a transaction.
1322
1322
  */
1323
1323
  declare function commitDecoderAdapter(db: Kysely<Database>, input: DecoderAdapterCommit): Promise<void>;
1324
+ /**
1325
+ * Same commit as {@link commitDecoderAdapter}, for several decoders sharing
1326
+ * ONE outer transaction and ONE read of the source events they were fed
1327
+ * from — the in-process classic-decoder loop's shape (plan-066): 11
1328
+ * checkpoints + their decoded rows land together, so a crash mid-batch
1329
+ * cannot leave one type's checkpoint ahead of another's rows.
1330
+ *
1331
+ * Steps run in four PASSES across the whole batch, not step-by-step per
1332
+ * entry, so the global order stays output → checkpoint → receipt → failure
1333
+ * (matching the single-entry commit) while every entry's output — including
1334
+ * its `assertCheckpointUnmoved` FOR UPDATE check — lands before any entry's
1335
+ * new checkpoint is written. Entries are locked in the order given, which
1336
+ * callers must keep identical to `handleDecodedEventsReorg`'s decoder-name
1337
+ * order so the two paths never take checkpoint-row locks in conflicting
1338
+ * order (deadlock risk otherwise). No per-entry `crashAfter` probe — that
1339
+ * stays on the single-entry path.
1340
+ */
1341
+ declare function commitDecoderAdapterBatch(db: Kysely<Database>, inputs: readonly Omit<DecoderAdapterCommit, "crashAfter">[]): Promise<void>;
1324
1342
  type SealableReceipt = {
1325
1343
  height: number
1326
1344
  hash: string
@@ -1526,4 +1544,4 @@ declare function reportVerify(opts: {
1526
1544
  diverged?: boolean
1527
1545
  detail?: string
1528
1546
  }): VerifyReport;
1529
- export { BootstrapSource, COVERAGE_REPORT_SCHEMA_VERSION, COVERAGE_STATES, CanonicalBlock, CoverageRange, CoverageReport, CoverageState, DECODER_COMMIT_STEPS, DEFAULT_MAX_RETRIES, DecoderAdapterCommit, DecoderAdapterCrash, DecoderAdapterFailure, DecoderAdapterReceipt, DecoderClockEvent, DecoderClockInput, DecoderClockReceipt, DecoderClockResult, DecoderCommitStep, DeepVerifyResult, EffectMutation, EffectOp, EvaluatorInput, EvaluatorOptions, FAILURE_CLASSES, FAILURE_RETENTION_DAYS, FAILURE_UNITS, FailureClass, FailureRow, FailureUnit, NATIVE_CLOCKS, NativeClock, OpenFailure, QUEUE_STAGES, QueueApply, QueueCounters, QueueEvent, QueueStage, QueueState, REPAIR_MODES, RETRY_STATES, RUNNER_EVENT_TYPES, RUNNER_STATUSES, RUNNER_TRANSITION_TABLE, RUN_STATUSES, ReceiptRow, RepairDefect, RepairMode, RepairPlan, RetryState, RowSnapshot, RunStatus, RunnerEffect, RunnerEvent, RunnerEventType, RunnerFailure, RunnerResult, RunnerState, RunnerStatus, RunnerVersion, SAFE_REPAIR_MODES, STAGE_KINDS, SUBGRAPH_COMMIT_STEPS, SealResult, SealableReceipt, SealedSegment, SourceClock, StageCoverage, StageDeclaration, StageEvidence, StageKind, StageRunView, SubgraphAdapterCrash, SubgraphCommitInput, SubgraphCommitStep, SyncScope, TransitionRule, VERIFY_EXIT, VerifyExit, VerifyMode, VerifyReport, VerifyTarget, applyDecoderReceipts, applyMutations, applyQueueEvent, applyRunnerEvent, canonicalizeMutations, commitDecoderAdapter, commitSubgraphAdapter, contiguousThrough, createRunnerState, cursorHeight, cursorIsAfterBlock, cursorIsBeforeBlock, datasetMatchesTarget, deepVerify, defaultRetainUntil, emptyQueueState, evaluateCoverage, expectedAckHeight, failureRangeHolds, failureRetentionHolds, finalRowDigest, findRangeGaps, hashEffectManifest, inputDigest, isFailureClass, isFailureUnit, isNativeClock, isNonNegativeInt, isRepairMode, isRetryState, isRunStatus, isStageKind, lookupTransition, manifestsEqual, mergeRanges, parseVerifyTarget, planDecoderReceipts, planRepair, proofsAgree, queueCaughtUp, rangeDigestOf, rangeIsOrdered, receiptRetentionHolds, receiptsAfterReorg, reportVerify, runDecoderCommitSteps, runSubgraphCommitSteps, sealFinalizedRange, segmentsOverlap, segmentsSurviveReorg, sequentialDigests, sparseDigests, topoSort, versionsEqual };
1547
+ export { BootstrapSource, COVERAGE_REPORT_SCHEMA_VERSION, COVERAGE_STATES, CanonicalBlock, CoverageRange, CoverageReport, CoverageState, DECODER_COMMIT_STEPS, DEFAULT_MAX_RETRIES, DecoderAdapterCommit, DecoderAdapterCrash, DecoderAdapterFailure, DecoderAdapterReceipt, DecoderClockEvent, DecoderClockInput, DecoderClockReceipt, DecoderClockResult, DecoderCommitStep, DeepVerifyResult, EffectMutation, EffectOp, EvaluatorInput, EvaluatorOptions, FAILURE_CLASSES, FAILURE_RETENTION_DAYS, FAILURE_UNITS, FailureClass, FailureRow, FailureUnit, NATIVE_CLOCKS, NativeClock, OpenFailure, QUEUE_STAGES, QueueApply, QueueCounters, QueueEvent, QueueStage, QueueState, REPAIR_MODES, RETRY_STATES, RUNNER_EVENT_TYPES, RUNNER_STATUSES, RUNNER_TRANSITION_TABLE, RUN_STATUSES, ReceiptRow, RepairDefect, RepairMode, RepairPlan, RetryState, RowSnapshot, RunStatus, RunnerEffect, RunnerEvent, RunnerEventType, RunnerFailure, RunnerResult, RunnerState, RunnerStatus, RunnerVersion, SAFE_REPAIR_MODES, STAGE_KINDS, SUBGRAPH_COMMIT_STEPS, SealResult, SealableReceipt, SealedSegment, SourceClock, StageCoverage, StageDeclaration, StageEvidence, StageKind, StageRunView, SubgraphAdapterCrash, SubgraphCommitInput, SubgraphCommitStep, SyncScope, TransitionRule, VERIFY_EXIT, VerifyExit, VerifyMode, VerifyReport, VerifyTarget, applyDecoderReceipts, applyMutations, applyQueueEvent, applyRunnerEvent, canonicalizeMutations, commitDecoderAdapter, commitDecoderAdapterBatch, commitSubgraphAdapter, contiguousThrough, createRunnerState, cursorHeight, cursorIsAfterBlock, cursorIsBeforeBlock, datasetMatchesTarget, deepVerify, defaultRetainUntil, emptyQueueState, evaluateCoverage, expectedAckHeight, failureRangeHolds, failureRetentionHolds, finalRowDigest, findRangeGaps, hashEffectManifest, inputDigest, isFailureClass, isFailureUnit, isNativeClock, isNonNegativeInt, isRepairMode, isRetryState, isRunStatus, isStageKind, lookupTransition, manifestsEqual, mergeRanges, parseVerifyTarget, planDecoderReceipts, planRepair, proofsAgree, queueCaughtUp, rangeDigestOf, rangeIsOrdered, receiptRetentionHolds, receiptsAfterReorg, reportVerify, runDecoderCommitSteps, runSubgraphCommitSteps, sealFinalizedRange, segmentsOverlap, segmentsSurviveReorg, sequentialDigests, sparseDigests, topoSort, versionsEqual };
@@ -1011,6 +1011,28 @@ async function commitDecoderAdapter(db, input) {
1011
1011
  }, input.crashAfter);
1012
1012
  });
1013
1013
  }
1014
+ async function commitDecoderAdapterBatch(db, inputs) {
1015
+ await db.transaction().execute(async (tx) => {
1016
+ for (const input of inputs) {
1017
+ await upsertRegistry(tx, input.stage_id);
1018
+ }
1019
+ for (const input of inputs) {
1020
+ await input.writeOutput(tx);
1021
+ }
1022
+ for (const input of inputs) {
1023
+ await writeCheckpoint(tx, input.decoder_name, input.checkpoint_cursor);
1024
+ }
1025
+ for (const input of inputs) {
1026
+ await writeReceipts(tx, input.stage_id, input.run_id ?? null, input.receipts);
1027
+ }
1028
+ for (const input of inputs) {
1029
+ const failure = input.failure ?? null;
1030
+ if (failure) {
1031
+ await writeFailure(tx, input.stage_id, input.run_id ?? null, failure);
1032
+ }
1033
+ }
1034
+ });
1035
+ }
1014
1036
  // src/coverage/sealer.ts
1015
1037
  import { createHash as createHash2 } from "node:crypto";
1016
1038
  function rangeDigestOf(parts) {
@@ -1419,6 +1441,7 @@ export {
1419
1441
  applyRunnerEvent,
1420
1442
  canonicalizeMutations,
1421
1443
  commitDecoderAdapter,
1444
+ commitDecoderAdapterBatch,
1422
1445
  commitSubgraphAdapter,
1423
1446
  contiguousThrough,
1424
1447
  createRunnerState,
@@ -1469,5 +1492,5 @@ export {
1469
1492
  versionsEqual
1470
1493
  };
1471
1494
 
1472
- //# debugId=67A673CA618D58BA64756E2164756E21
1495
+ //# debugId=0D226DB359FAEB5064756E2164756E21
1473
1496
  //# sourceMappingURL=index.js.map
@@ -7,7 +7,7 @@
7
7
  "/**\n * Coverage evaluator — one library for stage state.\n *\n * Pure. Callers assemble evidence; this file does not touch the database.\n * `complete` is coverage through the recorded target, not currency.\n * `caught_up` additionally requires a fresh source tip and coverage through\n * the finalized boundary. `complete_through` is never conflated with\n * `source_tip`.\n */\n\nimport { decodeStreamsCursor } from \"../streams-cursor.ts\";\nimport {\n\ttype CoverageRange,\n\ttype FailureClass,\n\ttype FailureUnit,\n\ttype NativeClock,\n\ttype RepairMode,\n\ttype RetryState,\n\ttype RunStatus,\n\ttype StageKind,\n\trangeIsOrdered,\n} from \"./constraints.ts\";\n\nexport const COVERAGE_REPORT_SCHEMA_VERSION = 1 as const;\n\nexport const COVERAGE_STATES = [\n\t\"complete\",\n\t\"syncing\",\n\t\"lagging\",\n\t\"gap\",\n\t\"stale\",\n\t\"failed\",\n\t\"unverified_import\",\n\t\"unanchored\",\n\t\"source_unavailable\",\n\t\"out_of_scope\",\n\t\"disabled\",\n] as const;\nexport type CoverageState = (typeof COVERAGE_STATES)[number];\n\nconst HARD_DEP_STATES = new Set<CoverageState>([\n\t\"disabled\",\n\t\"failed\",\n\t\"source_unavailable\",\n\t\"out_of_scope\",\n\t\"unverified_import\",\n\t\"unanchored\",\n\t\"gap\",\n]);\n\nconst DEFAULT_MAX_BLOCKS_BEHIND_FINALIZED = 256;\nconst DEFAULT_MAX_SOURCE_AGE_SECONDS = 300;\n\nexport type BootstrapSource = \"archive\" | \"genesis\" | \"import\";\n\nexport type SyncScope = {\n\tnetwork: string;\n\tstart_height: number;\n\ttarget_height: number | null;\n\tbootstrap: {\n\t\tsource: BootstrapSource;\n\t\tmanifest_digest: string | null;\n\t\tgenesis_hash: string | null;\n\t};\n};\n\nexport type StageDeclaration = {\n\tid: string;\n\tkind: StageKind;\n\tdepends_on: string | null;\n\tnative_clock: NativeClock;\n\tproducer_version: string;\n\trepair_mode: RepairMode;\n\tenabled: boolean;\n};\n\nexport type StageRunView = {\n\tstage_id: string;\n\tcode_hash: string;\n\tconfig_hash: string;\n\thandler_hash: string | null;\n\ttarget_height: number | null;\n\ttarget_cursor: string | null;\n\tstatus: RunStatus;\n\tcomplete_through: number | null;\n};\n\nexport type OpenFailure = {\n\tunit_kind: FailureUnit;\n\tclass: FailureClass;\n\tretry_state: Exclude<RetryState, \"resolved\">;\n\tfrom_height: number | null;\n\tto_height: number | null;\n};\n\nexport type QueueCounters = {\n\taccepted: number;\n\tdecided: number;\n\tenqueued: number;\n\tdelivered: number;\n\tdead: number;\n\tfence_cursor: string | null;\n};\n\nexport type StageEvidence = {\n\tstage_id: string;\n\tranges: CoverageRange[];\n\topen_failures: OpenFailure[];\n\tcursor: string | null;\n\tqueue: QueueCounters | null;\n\tunanchored: boolean;\n\tunverified_import: boolean;\n\t/** False when this stage's native source (node, bitcoin RPC, …) is down. */\n\tsource_available: boolean;\n};\n\nexport type SourceClock = {\n\ttip_height: number | null;\n\tfinalized_height: number | null;\n\tobserved_at: string | null;\n};\n\nexport type EvaluatorOptions = {\n\tnow: Date;\n\tmaxBlocksBehindFinalized?: number;\n\tmaxSourceAgeSeconds?: number;\n};\n\nexport type EvaluatorInput = {\n\tscope: SyncScope;\n\tstages: StageDeclaration[];\n\truns: StageRunView[];\n\tevidence: StageEvidence[];\n\tsource: SourceClock;\n\toptions: EvaluatorOptions;\n};\n\nexport type StageCoverage = {\n\tstage_id: string;\n\tkind: StageKind;\n\tnative_clock: NativeClock;\n\tdepends_on: string | null;\n\tstate: CoverageState;\n\tdetail: string;\n\tcomplete_through: number | null;\n\tsource_tip: number | null;\n\tfinalized_height: number | null;\n\trecorded_target: number | null;\n\tdeclared_range: { from_height: number; to_height: number } | null;\n\tgaps: CoverageRange[];\n\tcaught_up: boolean;\n\tblocked_by: string | null;\n};\n\nexport type CoverageReport = {\n\tschema_version: typeof COVERAGE_REPORT_SCHEMA_VERSION;\n\tnetwork: string;\n\tgenerated_at: string;\n\tsource_tip: number | null;\n\tfinalized_height: number | null;\n\tstages: StageCoverage[];\n\tevaluation_order: string[];\n\tcycles: string[][];\n};\n\nexport function mergeRanges(ranges: readonly CoverageRange[]): CoverageRange[] {\n\tconst sorted = ranges\n\t\t.filter((r) => rangeIsOrdered(r.from_height, r.to_height))\n\t\t.map((r) => ({ from_height: r.from_height, to_height: r.to_height }))\n\t\t.sort((a, b) => a.from_height - b.from_height || a.to_height - b.to_height);\n\tconst out: CoverageRange[] = [];\n\tfor (const range of sorted) {\n\t\tconst last = out[out.length - 1];\n\t\tif (last && range.from_height <= last.to_height + 1) {\n\t\t\tlast.to_height = Math.max(last.to_height, range.to_height);\n\t\t} else {\n\t\t\tout.push(range);\n\t\t}\n\t}\n\treturn out;\n}\n\n/** Highest height reachable from `start` without a hole. */\nexport function contiguousThrough(\n\tranges: readonly CoverageRange[],\n\tstart: number,\n): number | null {\n\tconst merged = mergeRanges(ranges);\n\tlet through: number | null = null;\n\tlet need = start;\n\tfor (const range of merged) {\n\t\tif (range.to_height < need) continue;\n\t\tif (range.from_height > need) break;\n\t\tthrough = range.to_height;\n\t\tneed = range.to_height + 1;\n\t}\n\treturn through;\n}\n\nexport function findRangeGaps(\n\tranges: readonly CoverageRange[],\n\tfrom: number,\n\tto: number,\n): CoverageRange[] {\n\tif (to < from) return [];\n\tconst merged = mergeRanges(ranges);\n\tconst gaps: CoverageRange[] = [];\n\tlet cursor = from;\n\tfor (const range of merged) {\n\t\tif (range.to_height < from) continue;\n\t\tif (range.from_height > to) break;\n\t\tif (range.from_height > cursor) {\n\t\t\tgaps.push({\n\t\t\t\tfrom_height: cursor,\n\t\t\t\tto_height: Math.min(range.from_height - 1, to),\n\t\t\t});\n\t\t}\n\t\tcursor = Math.max(cursor, range.to_height + 1);\n\t\tif (cursor > to) break;\n\t}\n\tif (cursor <= to) {\n\t\tgaps.push({ from_height: cursor, to_height: to });\n\t}\n\treturn gaps;\n}\n\nexport function cursorHeight(cursor: string | null): number | null {\n\tif (!cursor) return null;\n\ttry {\n\t\treturn decodeStreamsCursor(cursor).block_height;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport function topoSort(stages: readonly StageDeclaration[]): {\n\torder: string[];\n\tcycles: string[][];\n} {\n\tconst ids = new Set(stages.map((s) => s.id));\n\tconst incoming = new Map<string, number>();\n\tconst outgoing = new Map<string, string[]>();\n\tfor (const stage of stages) {\n\t\tincoming.set(stage.id, 0);\n\t\toutgoing.set(stage.id, []);\n\t}\n\tfor (const stage of stages) {\n\t\tif (!stage.depends_on || !ids.has(stage.depends_on)) continue;\n\t\toutgoing.get(stage.depends_on)?.push(stage.id);\n\t\tincoming.set(stage.id, (incoming.get(stage.id) ?? 0) + 1);\n\t}\n\tconst queue = [...incoming.entries()]\n\t\t.filter(([, n]) => n === 0)\n\t\t.map(([id]) => id)\n\t\t.sort();\n\tconst order: string[] = [];\n\twhile (queue.length > 0) {\n\t\tconst id = queue.shift();\n\t\tif (!id) break;\n\t\torder.push(id);\n\t\tfor (const next of outgoing.get(id) ?? []) {\n\t\t\tconst left = (incoming.get(next) ?? 1) - 1;\n\t\t\tincoming.set(next, left);\n\t\t\tif (left === 0) queue.push(next);\n\t\t\tqueue.sort();\n\t\t}\n\t}\n\tconst leftover = stages.map((s) => s.id).filter((id) => !order.includes(id));\n\treturn { order, cycles: leftover.length > 0 ? [leftover.sort()] : [] };\n}\n\nfunction lastByStage<T extends { stage_id: string }>(\n\trows: readonly T[],\n): Map<string, T> {\n\tconst map = new Map<string, T>();\n\tfor (const row of rows) map.set(row.stage_id, row);\n\treturn map;\n}\n\nfunction emptyEvidence(stageId: string): StageEvidence {\n\treturn {\n\t\tstage_id: stageId,\n\t\tranges: [],\n\t\topen_failures: [],\n\t\tcursor: null,\n\t\tqueue: null,\n\t\tunanchored: false,\n\t\tunverified_import: false,\n\t\tsource_available: true,\n\t};\n}\n\nfunction declaredEnd(args: {\n\trun: StageRunView | undefined;\n\tscope: SyncScope;\n\tsource: SourceClock;\n}): number | null {\n\treturn (\n\t\targs.run?.target_height ??\n\t\targs.scope.target_height ??\n\t\targs.source.finalized_height ??\n\t\targs.source.tip_height\n\t);\n}\n\nfunction clockRanges(\n\tstage: StageDeclaration,\n\tevidence: StageEvidence,\n): {\n\tranges: CoverageRange[];\n\tinvalidCursor: boolean;\n} {\n\tif (stage.native_clock === \"block\") {\n\t\treturn { ranges: evidence.ranges, invalidCursor: false };\n\t}\n\tconst cursor =\n\t\tstage.native_clock === \"cursor\"\n\t\t\t? evidence.cursor\n\t\t\t: (evidence.queue?.fence_cursor ?? null);\n\tif (!cursor) return { ranges: evidence.ranges, invalidCursor: false };\n\tconst height = cursorHeight(cursor);\n\tif (height === null) return { ranges: evidence.ranges, invalidCursor: true };\n\treturn {\n\t\tranges: mergeRanges([\n\t\t\t...evidence.ranges,\n\t\t\t{ from_height: 0, to_height: height },\n\t\t]),\n\t\tinvalidCursor: false,\n\t};\n}\n\nfunction queueCaught(queue: QueueCounters | null): boolean {\n\tif (!queue) return false;\n\treturn (\n\t\tqueue.accepted === queue.decided &&\n\t\tqueue.delivered + queue.dead === queue.accepted\n\t);\n}\n\nfunction sourceAgeSeconds(source: SourceClock, now: Date): number | null {\n\tif (!source.observed_at) return source.tip_height === null ? null : 0;\n\tconst observed = Date.parse(source.observed_at);\n\tif (Number.isNaN(observed)) return null;\n\treturn Math.max(0, Math.round((now.getTime() - observed) / 1000));\n}\n\nfunction evaluateOne(\n\tstage: StageDeclaration,\n\tinput: EvaluatorInput,\n\trun: StageRunView | undefined,\n\tevidence: StageEvidence,\n\tdep: StageCoverage | null,\n\tmissingDep: boolean,\n\tinCycle: boolean,\n): StageCoverage {\n\tconst sourceTip = input.source.tip_height;\n\tconst finalized = input.source.finalized_height;\n\tconst recordedTarget = run?.target_height ?? input.scope.target_height;\n\tconst maxBehind =\n\t\tinput.options.maxBlocksBehindFinalized ??\n\t\tDEFAULT_MAX_BLOCKS_BEHIND_FINALIZED;\n\tconst maxAge =\n\t\tinput.options.maxSourceAgeSeconds ?? DEFAULT_MAX_SOURCE_AGE_SECONDS;\n\tconst age = sourceAgeSeconds(input.source, input.options.now);\n\tconst sourceFresh =\n\t\tsourceTip !== null && finalized !== null && (age === null || age <= maxAge);\n\n\tconst base = {\n\t\tstage_id: stage.id,\n\t\tkind: stage.kind,\n\t\tnative_clock: stage.native_clock,\n\t\tdepends_on: stage.depends_on,\n\t\tsource_tip: sourceTip,\n\t\tfinalized_height: finalized,\n\t\trecorded_target: recordedTarget,\n\t};\n\n\tconst done = (\n\t\tstate: CoverageState,\n\t\tdetail: string,\n\t\textra: Partial<StageCoverage> = {},\n\t): StageCoverage => {\n\t\tconst completeThrough = extra.complete_through ?? null;\n\t\tconst caughtUp =\n\t\t\textra.caught_up ??\n\t\t\t(state !== \"disabled\" &&\n\t\t\t\tstate !== \"failed\" &&\n\t\t\t\tstate !== \"gap\" &&\n\t\t\t\tstate !== \"out_of_scope\" &&\n\t\t\t\tstate !== \"unverified_import\" &&\n\t\t\t\tstate !== \"unanchored\" &&\n\t\t\t\tstate !== \"source_unavailable\" &&\n\t\t\t\tcompleteThrough !== null &&\n\t\t\t\tfinalized !== null &&\n\t\t\t\tcompleteThrough >= finalized &&\n\t\t\t\tsourceFresh);\n\t\treturn {\n\t\t\t...base,\n\t\t\tstate,\n\t\t\tdetail,\n\t\t\tcomplete_through: completeThrough,\n\t\t\tdeclared_range: extra.declared_range ?? null,\n\t\t\tgaps: extra.gaps ?? [],\n\t\t\tcaught_up: caughtUp,\n\t\t\tblocked_by: extra.blocked_by ?? null,\n\t\t};\n\t};\n\n\tif (!stage.enabled) {\n\t\treturn done(\"disabled\", \"stage is disabled\");\n\t}\n\tif (inCycle) {\n\t\treturn done(\"failed\", \"dependency cycle\");\n\t}\n\tif (missingDep) {\n\t\treturn done(\"failed\", `depends on unknown stage ${stage.depends_on}`);\n\t}\n\tif (dep && HARD_DEP_STATES.has(dep.state)) {\n\t\treturn done(dep.state, `blocked by ${dep.stage_id}: ${dep.detail}`, {\n\t\t\tcomplete_through: dep.complete_through,\n\t\t\tblocked_by: dep.stage_id,\n\t\t\tdeclared_range: dep.declared_range,\n\t\t\tgaps: dep.gaps,\n\t\t\tcaught_up: false,\n\t\t});\n\t}\n\n\tif (evidence.open_failures.length > 0 || run?.status === \"failed\") {\n\t\tconst first = evidence.open_failures[0];\n\t\treturn done(\n\t\t\t\"failed\",\n\t\t\tfirst\n\t\t\t\t? `open ${first.class} failure (${first.retry_state})`\n\t\t\t\t: \"run marked failed\",\n\t\t);\n\t}\n\tif (evidence.unverified_import || run?.status === \"unverified_import\") {\n\t\treturn done(\"unverified_import\", \"imported data has not been audited\");\n\t}\n\tif (evidence.unanchored || run?.status === \"unanchored\") {\n\t\treturn done(\n\t\t\t\"unanchored\",\n\t\t\t\"receipts are missing a block hash or node anchor\",\n\t\t);\n\t}\n\tif (!evidence.source_available) {\n\t\treturn done(\"source_unavailable\", \"native source is unavailable\");\n\t}\n\n\tconst { ranges, invalidCursor } = clockRanges(stage, evidence);\n\tif (invalidCursor) {\n\t\treturn done(\"failed\", \"native clock cursor is not a valid streams cursor\");\n\t}\n\n\tconst end = declaredEnd({ run, scope: input.scope, source: input.source });\n\tif (end !== null && end < input.scope.start_height) {\n\t\treturn done(\"out_of_scope\", \"recorded target is below the instance start\");\n\t}\n\n\tconst sourceSilent =\n\t\tsourceTip === null && finalized === null && recordedTarget === null;\n\tif (sourceSilent) {\n\t\treturn done(\n\t\t\t\"source_unavailable\",\n\t\t\t\"the chain source could not be reached, so the declared range is unknown\",\n\t\t);\n\t}\n\n\tif (end === null) {\n\t\treturn done(\n\t\t\t\"source_unavailable\",\n\t\t\t\"no recorded target and the source tip is unknown\",\n\t\t);\n\t}\n\n\tconst declaredRange = {\n\t\tfrom_height: input.scope.start_height,\n\t\tto_height: end,\n\t};\n\tlet completeThrough = contiguousThrough(ranges, input.scope.start_height);\n\tif (dep?.complete_through !== null && dep?.complete_through !== undefined) {\n\t\tif (completeThrough === null) {\n\t\t\t// stay null\n\t\t} else {\n\t\t\tcompleteThrough = Math.min(completeThrough, dep.complete_through);\n\t\t}\n\t} else if (dep && dep.complete_through === null) {\n\t\tcompleteThrough = null;\n\t}\n\n\tconst gaps = findRangeGaps(\n\t\tranges,\n\t\tdeclaredRange.from_height,\n\t\tdeclaredRange.to_height,\n\t);\n\tconst tiled =\n\t\tgaps.length === 0 &&\n\t\tcompleteThrough !== null &&\n\t\tcompleteThrough >= declaredRange.to_height;\n\t// A single suffix still ahead of the prefix is unfinished work, not a hole.\n\tconst trailingGap =\n\t\tgaps.length === 1 &&\n\t\tgaps[0].to_height === declaredRange.to_height &&\n\t\t(completeThrough === null\n\t\t\t? gaps[0].from_height === declaredRange.from_height\n\t\t\t: gaps[0].from_height === completeThrough + 1);\n\n\tconst queueIncomplete =\n\t\tstage.native_clock === \"queue\" && !queueCaught(evidence.queue);\n\n\tif (gaps.length > 0 && !trailingGap) {\n\t\tconst first = gaps[0];\n\t\treturn done(\"gap\", `missing ${first.from_height}–${first.to_height}`, {\n\t\t\tcomplete_through: completeThrough,\n\t\t\tdeclared_range: declaredRange,\n\t\t\tgaps,\n\t\t\tcaught_up: false,\n\t\t});\n\t}\n\n\tif (queueIncomplete || !tiled) {\n\t\treturn done(\n\t\t\t\"syncing\",\n\t\t\t\"contiguous from start, not yet through the recorded target\",\n\t\t\t{\n\t\t\t\tcomplete_through: completeThrough,\n\t\t\t\tdeclared_range: declaredRange,\n\t\t\t\tgaps,\n\t\t\t\tcaught_up: false,\n\t\t\t},\n\t\t);\n\t}\n\n\tconst sourceStale = age !== null && age > maxAge;\n\tconst behindFinalized =\n\t\tfinalized !== null && completeThrough !== null\n\t\t\t? Math.max(0, finalized - completeThrough)\n\t\t\t: null;\n\tconst behindTip =\n\t\tsourceTip !== null && completeThrough !== null\n\t\t\t? Math.max(0, sourceTip - completeThrough)\n\t\t\t: null;\n\t// A target below the current finalized height is a pin, not a live follow.\n\t// That instance is complete through what it asked for — not lagging.\n\tconst pinned =\n\t\trecordedTarget !== null && finalized !== null && recordedTarget < finalized;\n\n\tif (sourceStale) {\n\t\treturn done(\n\t\t\t\"stale\",\n\t\t\t`source observation is ${age}s old, beyond the ${maxAge}s freshness objective`,\n\t\t\t{\n\t\t\t\tcomplete_through: completeThrough,\n\t\t\t\tdeclared_range: declaredRange,\n\t\t\t\tgaps,\n\t\t\t\tcaught_up: false,\n\t\t\t},\n\t\t);\n\t}\n\n\tif (behindFinalized !== null && behindFinalized > maxBehind) {\n\t\treturn done(\n\t\t\t\"stale\",\n\t\t\t`${behindFinalized} blocks behind the finalized height, beyond the ${maxBehind} threshold`,\n\t\t\t{\n\t\t\t\tcomplete_through: completeThrough,\n\t\t\t\tdeclared_range: declaredRange,\n\t\t\t\tgaps,\n\t\t\t\tcaught_up: false,\n\t\t\t},\n\t\t);\n\t}\n\n\tif (!pinned && behindFinalized !== null && behindFinalized > 0) {\n\t\treturn done(\n\t\t\t\"lagging\",\n\t\t\t`${behindFinalized} blocks behind the finalized height`,\n\t\t\t{\n\t\t\t\tcomplete_through: completeThrough,\n\t\t\t\tdeclared_range: declaredRange,\n\t\t\t\tgaps,\n\t\t\t\tcaught_up: false,\n\t\t\t},\n\t\t);\n\t}\n\n\tif (!pinned && behindTip !== null && behindTip > 0) {\n\t\treturn done(\"lagging\", `${behindTip} blocks behind the chain tip`, {\n\t\t\tcomplete_through: completeThrough,\n\t\t\tdeclared_range: declaredRange,\n\t\t\tgaps,\n\t\t});\n\t}\n\n\treturn done(\"complete\", \"processed every unit through the recorded target\", {\n\t\tcomplete_through: completeThrough,\n\t\tdeclared_range: declaredRange,\n\t\tgaps,\n\t});\n}\n\nexport function evaluateCoverage(input: EvaluatorInput): CoverageReport {\n\tconst { order, cycles } = topoSort(input.stages);\n\tconst cyclic = new Set(cycles.flat());\n\tconst known = new Set(input.stages.map((s) => s.id));\n\tconst runs = lastByStage(input.runs);\n\tconst evidence = lastByStage(input.evidence);\n\tconst byId = new Map(input.stages.map((s) => [s.id, s]));\n\tconst evaluated = new Map<string, StageCoverage>();\n\n\tconst visit = (id: string): void => {\n\t\tconst stage = byId.get(id);\n\t\tif (!stage || evaluated.has(id)) return;\n\t\tconst depId = stage.depends_on;\n\t\tconst missingDep = Boolean(depId && !known.has(depId));\n\t\tconst dep = depId && !missingDep ? (evaluated.get(depId) ?? null) : null;\n\t\tevaluated.set(\n\t\t\tid,\n\t\t\tevaluateOne(\n\t\t\t\tstage,\n\t\t\t\tinput,\n\t\t\t\truns.get(id),\n\t\t\t\tevidence.get(id) ?? emptyEvidence(id),\n\t\t\t\tdep,\n\t\t\t\tmissingDep,\n\t\t\t\tcyclic.has(id),\n\t\t\t),\n\t\t);\n\t};\n\n\tfor (const id of order) visit(id);\n\tfor (const id of cyclic) visit(id);\n\n\tconst stages = [...evaluated.values()].sort((a, b) =>\n\t\ta.stage_id.localeCompare(b.stage_id),\n\t);\n\n\treturn {\n\t\tschema_version: COVERAGE_REPORT_SCHEMA_VERSION,\n\t\tnetwork: input.scope.network,\n\t\tgenerated_at: input.options.now.toISOString(),\n\t\tsource_tip: input.source.tip_height,\n\t\tfinalized_height: input.source.finalized_height,\n\t\tstages,\n\t\tevaluation_order: order,\n\t\tcycles,\n\t};\n}\n",
8
8
  "/**\n * Stage runner state machine.\n *\n * Pure. Adapters (P4.5+) persist the returned state and effects.\n * Acknowledgements are ordered; a reorg invalidates overlapping receipts\n * before any replacement ack is accepted. A version change cannot continue\n * the current run — it seals or halts and asks for a new one.\n */\n\nimport type { FailureClass, FailureUnit, RetryState } from \"./constraints.ts\";\nimport type { CoverageRange } from \"./constraints.ts\";\n\nexport const RUNNER_STATUSES = [\n\t\"pending\",\n\t\"running\",\n\t\"complete\",\n\t\"failed\",\n\t\"halted\",\n] as const;\nexport type RunnerStatus = (typeof RUNNER_STATUSES)[number];\n\nexport const RUNNER_EVENT_TYPES = [\n\t\"start\",\n\t\"ack\",\n\t\"fail\",\n\t\"retry\",\n\t\"halt\",\n\t\"resume\",\n\t\"reorg\",\n\t\"version\",\n\t\"finish\",\n] as const;\nexport type RunnerEventType = (typeof RUNNER_EVENT_TYPES)[number];\n\nexport const DEFAULT_MAX_RETRIES = 3;\n\nexport type RunnerVersion = {\n\tcode_hash: string;\n\tconfig_hash: string;\n\thandler_hash: string | null;\n};\n\nexport type RunnerFailure = {\n\tunit_kind: FailureUnit;\n\tclass: FailureClass;\n\tretry_state: Exclude<RetryState, \"resolved\">;\n\tfrom_height: number | null;\n\tto_height: number | null;\n\terror: string | null;\n};\n\nexport type RunnerState = {\n\tstage_id: string;\n\tstatus: RunnerStatus;\n\tversion: RunnerVersion;\n\tstart_height: number;\n\ttarget_height: number | null;\n\tcomplete_through: number | null;\n\tlast_acked_hash: string | null;\n\tretry_count: number;\n\topen_failure: RunnerFailure | null;\n};\n\nexport type RunnerEvent =\n\t| { type: \"start\" }\n\t| {\n\t\t\ttype: \"ack\";\n\t\t\theight: number;\n\t\t\thash: string;\n\t\t\tinput_count: number;\n\t\t\tinput_digest: string;\n\t\t\teffect_digest: string;\n\t }\n\t| {\n\t\t\ttype: \"fail\";\n\t\t\tunit_kind: FailureUnit;\n\t\t\tclass: FailureClass;\n\t\t\tfrom_height: number | null;\n\t\t\tto_height: number | null;\n\t\t\terror: string | null;\n\t }\n\t| { type: \"retry\" }\n\t| { type: \"halt\" }\n\t| { type: \"resume\" }\n\t| { type: \"reorg\"; fork_point: number }\n\t| { type: \"version\"; version: RunnerVersion }\n\t| { type: \"finish\" };\n\nexport type RunnerEffect =\n\t| { type: \"invalidate_receipts\"; range: CoverageRange }\n\t| { type: \"spawn_run\"; version: RunnerVersion }\n\t| { type: \"open_failure\"; failure: RunnerFailure }\n\t| { type: \"resolve_failure\" };\n\nexport type RunnerResult =\n\t| { ok: true; state: RunnerState; effects: RunnerEffect[] }\n\t| { ok: false; reason: string; state: RunnerState };\n\nexport type TransitionRule = {\n\tfrom: RunnerStatus;\n\tevent: RunnerEventType;\n\tto: RunnerStatus | \"reject\";\n};\n\n/**\n * Structural transition table. Guards (order, retry budget, version\n * equality, reorg overlap) are applied on top in `applyRunnerEvent`.\n */\nexport const RUNNER_TRANSITION_TABLE: readonly TransitionRule[] = [\n\t{ from: \"pending\", event: \"start\", to: \"running\" },\n\t{ from: \"pending\", event: \"ack\", to: \"reject\" },\n\t{ from: \"pending\", event: \"fail\", to: \"reject\" },\n\t{ from: \"pending\", event: \"retry\", to: \"reject\" },\n\t{ from: \"pending\", event: \"halt\", to: \"reject\" },\n\t{ from: \"pending\", event: \"resume\", to: \"reject\" },\n\t{ from: \"pending\", event: \"reorg\", to: \"reject\" },\n\t{ from: \"pending\", event: \"version\", to: \"pending\" },\n\t{ from: \"pending\", event: \"finish\", to: \"reject\" },\n\n\t{ from: \"running\", event: \"start\", to: \"reject\" },\n\t{ from: \"running\", event: \"ack\", to: \"running\" },\n\t{ from: \"running\", event: \"fail\", to: \"failed\" },\n\t{ from: \"running\", event: \"retry\", to: \"reject\" },\n\t{ from: \"running\", event: \"halt\", to: \"halted\" },\n\t{ from: \"running\", event: \"resume\", to: \"running\" },\n\t{ from: \"running\", event: \"reorg\", to: \"running\" },\n\t{ from: \"running\", event: \"version\", to: \"halted\" },\n\t{ from: \"running\", event: \"finish\", to: \"complete\" },\n\n\t{ from: \"complete\", event: \"start\", to: \"reject\" },\n\t{ from: \"complete\", event: \"ack\", to: \"reject\" },\n\t{ from: \"complete\", event: \"fail\", to: \"reject\" },\n\t{ from: \"complete\", event: \"retry\", to: \"reject\" },\n\t{ from: \"complete\", event: \"halt\", to: \"reject\" },\n\t{ from: \"complete\", event: \"resume\", to: \"reject\" },\n\t{ from: \"complete\", event: \"reorg\", to: \"running\" },\n\t{ from: \"complete\", event: \"version\", to: \"complete\" },\n\t{ from: \"complete\", event: \"finish\", to: \"complete\" },\n\n\t{ from: \"failed\", event: \"start\", to: \"reject\" },\n\t{ from: \"failed\", event: \"ack\", to: \"reject\" },\n\t{ from: \"failed\", event: \"fail\", to: \"reject\" },\n\t{ from: \"failed\", event: \"retry\", to: \"running\" },\n\t{ from: \"failed\", event: \"halt\", to: \"halted\" },\n\t{ from: \"failed\", event: \"resume\", to: \"running\" },\n\t{ from: \"failed\", event: \"reorg\", to: \"failed\" },\n\t{ from: \"failed\", event: \"version\", to: \"halted\" },\n\t{ from: \"failed\", event: \"finish\", to: \"reject\" },\n\n\t{ from: \"halted\", event: \"start\", to: \"reject\" },\n\t{ from: \"halted\", event: \"ack\", to: \"reject\" },\n\t{ from: \"halted\", event: \"fail\", to: \"reject\" },\n\t{ from: \"halted\", event: \"retry\", to: \"running\" },\n\t{ from: \"halted\", event: \"halt\", to: \"halted\" },\n\t{ from: \"halted\", event: \"resume\", to: \"running\" },\n\t{ from: \"halted\", event: \"reorg\", to: \"halted\" },\n\t{ from: \"halted\", event: \"version\", to: \"halted\" },\n\t{ from: \"halted\", event: \"finish\", to: \"reject\" },\n];\n\nconst RULE_INDEX = new Map<string, TransitionRule>(\n\tRUNNER_TRANSITION_TABLE.map((rule) => [`${rule.from}:${rule.event}`, rule]),\n);\n\nexport function lookupTransition(\n\tfrom: RunnerStatus,\n\tevent: RunnerEventType,\n): TransitionRule {\n\tconst rule = RULE_INDEX.get(`${from}:${event}`);\n\tif (!rule) {\n\t\tthrow new Error(`missing transition ${from} + ${event}`);\n\t}\n\treturn rule;\n}\n\nexport function versionsEqual(a: RunnerVersion, b: RunnerVersion): boolean {\n\treturn (\n\t\ta.code_hash === b.code_hash &&\n\t\ta.config_hash === b.config_hash &&\n\t\ta.handler_hash === b.handler_hash\n\t);\n}\n\n/** Next height this run must acknowledge. */\nexport function expectedAckHeight(state: RunnerState): number {\n\treturn state.complete_through === null\n\t\t? state.start_height\n\t\t: state.complete_through + 1;\n}\n\nexport function createRunnerState(init: {\n\tstage_id: string;\n\tstart_height: number;\n\ttarget_height?: number | null;\n\tversion: RunnerVersion;\n}): RunnerState {\n\treturn {\n\t\tstage_id: init.stage_id,\n\t\tstatus: \"pending\",\n\t\tversion: init.version,\n\t\tstart_height: init.start_height,\n\t\ttarget_height: init.target_height ?? null,\n\t\tcomplete_through: null,\n\t\tlast_acked_hash: null,\n\t\tretry_count: 0,\n\t\topen_failure: null,\n\t};\n}\n\nfunction ok(state: RunnerState, effects: RunnerEffect[] = []): RunnerResult {\n\treturn { ok: true, state, effects };\n}\n\nfunction reject(state: RunnerState, reason: string): RunnerResult {\n\treturn { ok: false, reason, state };\n}\n\nfunction clone(state: RunnerState, patch: Partial<RunnerState>): RunnerState {\n\treturn { ...state, ...patch };\n}\n\nfunction rewind(\n\tstate: RunnerState,\n\tforkPoint: number,\n): { next: RunnerState; effects: RunnerEffect[] } {\n\tconst from = Math.max(forkPoint, state.start_height);\n\tconst through = state.complete_through;\n\tif (through === null || through < from) {\n\t\treturn { next: state, effects: [] };\n\t}\n\tconst completeThrough = from <= state.start_height ? null : from - 1;\n\treturn {\n\t\tnext: clone(state, {\n\t\t\tcomplete_through: completeThrough,\n\t\t\tlast_acked_hash: null,\n\t\t}),\n\t\teffects: [\n\t\t\t{\n\t\t\t\ttype: \"invalidate_receipts\",\n\t\t\t\trange: { from_height: from, to_height: through },\n\t\t\t},\n\t\t],\n\t};\n}\n\nfunction applyRetry(state: RunnerState, maxRetries: number): RunnerResult {\n\tif (state.retry_count >= maxRetries) {\n\t\tconst failure = state.open_failure\n\t\t\t? { ...state.open_failure, retry_state: \"halted\" as const }\n\t\t\t: null;\n\t\treturn ok(clone(state, { status: \"halted\", open_failure: failure }));\n\t}\n\tconst failure = state.open_failure\n\t\t? { ...state.open_failure, retry_state: \"retrying\" as const }\n\t\t: null;\n\treturn ok(\n\t\tclone(state, {\n\t\t\tstatus: \"running\",\n\t\t\tretry_count: state.retry_count + 1,\n\t\t\topen_failure: failure,\n\t\t}),\n\t);\n}\n\nexport function applyRunnerEvent(\n\tstate: RunnerState,\n\tevent: RunnerEvent,\n\topts?: { maxRetries?: number },\n): RunnerResult {\n\tconst maxRetries = opts?.maxRetries ?? DEFAULT_MAX_RETRIES;\n\tconst rule = lookupTransition(state.status, event.type);\n\tif (rule.to === \"reject\") {\n\t\treturn reject(state, `${state.status} cannot ${event.type}`);\n\t}\n\tconst nextStatus = rule.to;\n\n\tswitch (event.type) {\n\t\tcase \"start\":\n\t\t\treturn ok(clone(state, { status: \"running\" }));\n\n\t\tcase \"ack\": {\n\t\t\tif (event.height === state.complete_through) {\n\t\t\t\tif (event.hash === state.last_acked_hash) return ok(state);\n\t\t\t\treturn reject(\n\t\t\t\t\tstate,\n\t\t\t\t\t`ack at ${event.height} has a different hash; reorg first`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst expected = expectedAckHeight(state);\n\t\t\tif (event.height !== expected) {\n\t\t\t\treturn reject(\n\t\t\t\t\tstate,\n\t\t\t\t\t`ack at ${event.height} skips ${expected}; acknowledgements must be ordered`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst effects: RunnerEffect[] = [];\n\t\t\tconst failure = state.open_failure;\n\t\t\tconst coversFailure =\n\t\t\t\tfailure &&\n\t\t\t\tfailure.from_height !== null &&\n\t\t\t\tevent.height >= failure.from_height &&\n\t\t\t\t(failure.to_height === null || event.height <= failure.to_height);\n\t\t\tif (coversFailure) effects.push({ type: \"resolve_failure\" });\n\t\t\treturn ok(\n\t\t\t\tclone(state, {\n\t\t\t\t\tstatus: \"running\",\n\t\t\t\t\tcomplete_through: event.height,\n\t\t\t\t\tlast_acked_hash: event.hash,\n\t\t\t\t\topen_failure: coversFailure ? null : failure,\n\t\t\t\t}),\n\t\t\t\teffects,\n\t\t\t);\n\t\t}\n\n\t\tcase \"fail\": {\n\t\t\tconst failure: RunnerFailure = {\n\t\t\t\tunit_kind: event.unit_kind,\n\t\t\t\tclass: event.class,\n\t\t\t\tretry_state: \"open\",\n\t\t\t\tfrom_height: event.from_height,\n\t\t\t\tto_height: event.to_height,\n\t\t\t\terror: event.error,\n\t\t\t};\n\t\t\treturn ok(clone(state, { status: \"failed\", open_failure: failure }), [\n\t\t\t\t{ type: \"open_failure\", failure },\n\t\t\t]);\n\t\t}\n\n\t\tcase \"retry\":\n\t\t\treturn applyRetry(state, maxRetries);\n\n\t\tcase \"halt\": {\n\t\t\tconst failure = state.open_failure\n\t\t\t\t? { ...state.open_failure, retry_state: \"halted\" as const }\n\t\t\t\t: state.open_failure;\n\t\t\treturn ok(clone(state, { status: \"halted\", open_failure: failure }));\n\t\t}\n\n\t\tcase \"resume\":\n\t\t\tif (state.status === \"running\") return ok(state);\n\t\t\tif (state.open_failure) return applyRetry(state, maxRetries);\n\t\t\treturn ok(clone(state, { status: \"running\" }));\n\n\t\tcase \"reorg\": {\n\t\t\tif (event.fork_point < state.start_height) {\n\t\t\t\treturn reject(\n\t\t\t\t\tstate,\n\t\t\t\t\t`reorg fork ${event.fork_point} is below start ${state.start_height}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst { next, effects } = rewind(state, event.fork_point);\n\t\t\tif (effects.length === 0) return ok(state);\n\t\t\treturn ok(clone(next, { status: nextStatus }), effects);\n\t\t}\n\n\t\tcase \"version\": {\n\t\t\tif (versionsEqual(state.version, event.version)) return ok(state);\n\t\t\tif (state.status === \"pending\") {\n\t\t\t\treturn ok(clone(state, { version: event.version }));\n\t\t\t}\n\t\t\tconst sealed: RunnerStatus =\n\t\t\t\tstate.status === \"complete\" ? \"complete\" : \"halted\";\n\t\t\treturn ok(clone(state, { status: sealed }), [\n\t\t\t\t{ type: \"spawn_run\", version: event.version },\n\t\t\t]);\n\t\t}\n\n\t\tcase \"finish\": {\n\t\t\tif (state.status === \"complete\") return ok(state);\n\t\t\tif (state.target_height === null) {\n\t\t\t\treturn reject(state, \"cannot finish a follow-the-chain run\");\n\t\t\t}\n\t\t\tif (\n\t\t\t\tstate.complete_through === null ||\n\t\t\t\tstate.complete_through < state.target_height\n\t\t\t) {\n\t\t\t\treturn reject(\n\t\t\t\t\tstate,\n\t\t\t\t\t`cannot finish: complete_through ${state.complete_through} is short of target ${state.target_height}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn ok(clone(state, { status: \"complete\" }));\n\t\t}\n\t}\n}\n",
9
9
  "/**\n * Decoder clock — pair Streams cursor order with per-block receipts.\n *\n * A filtered firehose can jump from `100:5` to `105:0` and never mention\n * 101–104. Coverage still needs a receipt for every canonical height,\n * including no-match blocks. This library is that seam: cursors stay\n * monotonic, receipts stay one-per-height, empty blocks still ack.\n *\n * Only fully closed blocks in `(from_cursor, to_cursor]` emit receipts.\n * Mid-block resumes wait until the cursor is past the block.\n */\n\nimport { createHash } from \"node:crypto\";\nimport {\n\ttype StreamsCursor,\n\tblockEndCursor,\n\tcompareStreamsCursor,\n\tdecodeStreamsCursor,\n\tencodeStreamsCursor,\n\tisEmptyRangeCursor,\n} from \"../streams-cursor.ts\";\n\nexport type CanonicalBlock = {\n\theight: number;\n\thash: string;\n};\n\nexport type DecoderClockEvent = {\n\tcursor: string;\n\tblock_hash: string;\n\tmatched: boolean;\n};\n\nexport type DecoderClockInput = {\n\tstart_height: number;\n\t/** Exclusive. Null = before `start_height`. */\n\tfrom_cursor: string | null;\n\t/** Exclusive high-water after this batch. */\n\tto_cursor: string;\n\tblocks: readonly CanonicalBlock[];\n\tevents: readonly DecoderClockEvent[];\n};\n\nexport type DecoderClockReceipt = {\n\theight: number;\n\thash: string;\n\tinput_count: number;\n\tinput_cursors: string[];\n\tinput_digest: string;\n\tthrough_cursor: string;\n\tno_match: boolean;\n};\n\nexport type DecoderClockResult =\n\t| { ok: true; receipts: DecoderClockReceipt[]; through_cursor: string }\n\t| { ok: false; reason: string; receipts: DecoderClockReceipt[] };\n\nexport function inputDigest(cursors: readonly string[]): string {\n\tif (cursors.length === 0) {\n\t\treturn createHash(\"sha256\").update(\"no-match\\n\").digest(\"hex\");\n\t}\n\tconst hash = createHash(\"sha256\");\n\tfor (const cursor of cursors) hash.update(`${cursor}\\n`);\n\treturn hash.digest(\"hex\");\n}\n\nexport function cursorIsAfterBlock(\n\tcursor: StreamsCursor,\n\theight: number,\n): boolean {\n\treturn compareStreamsCursor(cursor, blockEndCursor(height)) >= 0;\n}\n\n/** True when `from` is strictly before the first event that can live in `height`. */\nexport function cursorIsBeforeBlock(\n\tcursor: StreamsCursor,\n\theight: number,\n): boolean {\n\treturn cursor.block_height < height;\n}\n\nfunction parseCursor(\n\tvalue: string,\n\tlabel: string,\n): { ok: true; cursor: StreamsCursor } | { ok: false; reason: string } {\n\ttry {\n\t\treturn { ok: true, cursor: decodeStreamsCursor(value) };\n\t} catch {\n\t\treturn { ok: false, reason: `${label} is not a valid streams cursor` };\n\t}\n}\n\nexport function planDecoderReceipts(\n\tinput: DecoderClockInput,\n): DecoderClockResult {\n\tconst to = parseCursor(input.to_cursor, \"to_cursor\");\n\tif (!to.ok) return { ok: false, reason: to.reason, receipts: [] };\n\n\tlet from: StreamsCursor | null = null;\n\tif (input.from_cursor !== null) {\n\t\tconst parsed = parseCursor(input.from_cursor, \"from_cursor\");\n\t\tif (!parsed.ok) return { ok: false, reason: parsed.reason, receipts: [] };\n\t\tfrom = parsed.cursor;\n\t\tif (compareStreamsCursor(from, to.cursor) >= 0) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: \"to_cursor must be after from_cursor\",\n\t\t\t\treceipts: [],\n\t\t\t};\n\t\t}\n\t}\n\n\t// A mid-block from_cursor (100:2) or a closed one (100:SENTINEL) both\n\t// mean the next fully-visible block is 101. Receipts are whole blocks.\n\tconst startFull = from === null ? input.start_height : from.block_height + 1;\n\tconst lastFull = isEmptyRangeCursor(to.cursor)\n\t\t? to.cursor.block_height\n\t\t: to.cursor.block_height - 1;\n\n\tif (lastFull < startFull) {\n\t\treturn { ok: true, receipts: [], through_cursor: input.to_cursor };\n\t}\n\n\tif (startFull < input.start_height) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\treason: `window starts at ${startFull}, below start_height ${input.start_height}`,\n\t\t\treceipts: [],\n\t\t};\n\t}\n\n\tconst byHeight = new Map<number, CanonicalBlock>();\n\tlet prevHeight: number | null = null;\n\tfor (const block of input.blocks) {\n\t\tif (prevHeight !== null && block.height !== prevHeight + 1) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `blocks are not contiguous (${prevHeight} → ${block.height})`,\n\t\t\t\treceipts: [],\n\t\t\t};\n\t\t}\n\t\tif (byHeight.has(block.height)) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `duplicate canonical height ${block.height}`,\n\t\t\t\treceipts: [],\n\t\t\t};\n\t\t}\n\t\tbyHeight.set(block.height, block);\n\t\tprevHeight = block.height;\n\t}\n\n\tfor (let height = startFull; height <= lastFull; height++) {\n\t\tif (!byHeight.has(height)) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `missing canonical block ${height}`,\n\t\t\t\treceipts: [],\n\t\t\t};\n\t\t}\n\t}\n\n\tconst decoded: {\n\t\tcursor: StreamsCursor;\n\t\tencoded: string;\n\t\tblock_hash: string;\n\t\tmatched: boolean;\n\t}[] = [];\n\tlet previous: StreamsCursor | null = from;\n\tfor (const event of input.events) {\n\t\tconst parsed = parseCursor(event.cursor, \"event.cursor\");\n\t\tif (!parsed.ok) return { ok: false, reason: parsed.reason, receipts: [] };\n\t\tif (previous && compareStreamsCursor(parsed.cursor, previous) <= 0) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `event cursor ${event.cursor} is not after ${encodeStreamsCursor(previous)}`,\n\t\t\t\treceipts: [],\n\t\t\t};\n\t\t}\n\t\tif (compareStreamsCursor(parsed.cursor, to.cursor) >= 0) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `event cursor ${event.cursor} is not before to_cursor`,\n\t\t\t\treceipts: [],\n\t\t\t};\n\t\t}\n\t\tif (from && compareStreamsCursor(parsed.cursor, from) <= 0) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `event cursor ${event.cursor} is not after from_cursor`,\n\t\t\t\treceipts: [],\n\t\t\t};\n\t\t}\n\t\tconst block = byHeight.get(parsed.cursor.block_height);\n\t\tif (!block) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `event ${event.cursor} has no canonical block`,\n\t\t\t\treceipts: [],\n\t\t\t};\n\t\t}\n\t\tif (block.hash !== event.block_hash) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `event ${event.cursor} hash ${event.block_hash} does not match canonical ${block.hash}`,\n\t\t\t\treceipts: [],\n\t\t\t};\n\t\t}\n\t\tdecoded.push({\n\t\t\tcursor: parsed.cursor,\n\t\t\tencoded: event.cursor,\n\t\t\tblock_hash: event.block_hash,\n\t\t\tmatched: event.matched,\n\t\t});\n\t\tprevious = parsed.cursor;\n\t}\n\n\tconst receipts: DecoderClockReceipt[] = [];\n\tfor (let height = startFull; height <= lastFull; height++) {\n\t\tconst block = byHeight.get(height);\n\t\tif (!block) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `missing canonical block ${height}`,\n\t\t\t\treceipts,\n\t\t\t};\n\t\t}\n\t\tconst inBlock = decoded.filter((e) => e.cursor.block_height === height);\n\t\tconst matched = inBlock.filter((e) => e.matched);\n\t\tconst last = inBlock[inBlock.length - 1];\n\t\tconst through = last\n\t\t\t? last.encoded\n\t\t\t: encodeStreamsCursor(blockEndCursor(height));\n\t\treceipts.push({\n\t\t\theight,\n\t\t\thash: block.hash,\n\t\t\tinput_count: matched.length,\n\t\t\tinput_cursors: matched.map((e) => e.encoded),\n\t\t\tinput_digest: inputDigest(matched.map((e) => e.encoded)),\n\t\t\tthrough_cursor: through,\n\t\t\tno_match: matched.length === 0,\n\t\t});\n\t}\n\n\treturn { ok: true, receipts, through_cursor: input.to_cursor };\n}\n",
10
- "/**\n * Atomic decoder adapter.\n *\n * One transaction writes decoded output, the decoder checkpoint, block\n * receipts, and an optional failure. A crash after any step rolls all\n * four back — the property `commitDecodedBatch` already had for rows+\n * checkpoint, now covering the coverage kernel too.\n *\n * `crashAfter` is a test probe. It throws inside the transaction so the\n * matrix can abort after each step without simulating a real process kill.\n */\n\nimport { sql } from \"kysely\";\nimport type { Kysely } from \"kysely\";\nimport type { Database } from \"../db/types.ts\";\nimport type { FailureClass, FailureUnit, RetryState } from \"./constraints.ts\";\nimport type { DecoderClockReceipt } from \"./decoder-clock.ts\";\nimport {\n\ttype RunnerEvent,\n\ttype RunnerResult,\n\ttype RunnerState,\n\tapplyRunnerEvent,\n} from \"./runner.ts\";\n\nexport const DECODER_COMMIT_STEPS = [\n\t\"output\",\n\t\"checkpoint\",\n\t\"receipt\",\n\t\"failure\",\n] as const;\nexport type DecoderCommitStep = (typeof DECODER_COMMIT_STEPS)[number];\n\nexport class DecoderAdapterCrash extends Error {\n\treadonly name = \"DecoderAdapterCrash\";\n\tconstructor(readonly step: DecoderCommitStep) {\n\t\tsuper(`decoder adapter crash after ${step}`);\n\t}\n}\n\nexport type DecoderAdapterFailure = {\n\tunit_kind: FailureUnit;\n\tclass: FailureClass;\n\tretry_state: Exclude<RetryState, \"resolved\">;\n\tfrom_height: number | null;\n\tto_height: number | null;\n\terror: string | null;\n\tretry_count?: number;\n};\n\nexport type DecoderAdapterReceipt = DecoderClockReceipt & {\n\teffect_digest: string;\n};\n\nexport type DecoderAdapterCommit = {\n\tstage_id: string;\n\trun_id?: string | null;\n\tdecoder_name: string;\n\t/** Null = do not move the checkpoint (empty page). */\n\tcheckpoint_cursor: string | null;\n\treceipts: readonly DecoderAdapterReceipt[];\n\tfailure?: DecoderAdapterFailure | null;\n\twriteOutput: (tx: Kysely<Database>) => Promise<void>;\n\tcrashAfter?: DecoderCommitStep;\n};\n\nexport async function runDecoderCommitSteps(\n\tsteps: Record<DecoderCommitStep, () => Promise<void>>,\n\tcrashAfter?: DecoderCommitStep,\n): Promise<void> {\n\tfor (const step of DECODER_COMMIT_STEPS) {\n\t\tawait steps[step]();\n\t\tif (crashAfter === step) throw new DecoderAdapterCrash(step);\n\t}\n}\n\nexport function applyDecoderReceipts(\n\tstate: RunnerState,\n\treceipts: readonly DecoderAdapterReceipt[],\n): RunnerResult {\n\tlet current = state;\n\tif (current.status === \"pending\") {\n\t\tconst started = applyRunnerEvent(current, { type: \"start\" });\n\t\tif (!started.ok) return started;\n\t\tcurrent = started.state;\n\t}\n\tfor (const receipt of receipts) {\n\t\tconst event: RunnerEvent = {\n\t\t\ttype: \"ack\",\n\t\t\theight: receipt.height,\n\t\t\thash: receipt.hash,\n\t\t\tinput_count: receipt.input_count,\n\t\t\tinput_digest: receipt.input_digest,\n\t\t\teffect_digest: receipt.effect_digest,\n\t\t};\n\t\tconst next = applyRunnerEvent(current, event);\n\t\tif (!next.ok) return next;\n\t\tcurrent = next.state;\n\t}\n\treturn { ok: true, state: current, effects: [] };\n}\n\nasync function upsertRegistry(\n\ttx: Kysely<Database>,\n\tstageId: string,\n): Promise<void> {\n\tawait tx\n\t\t.insertInto(\"stage_registry\")\n\t\t.values({\n\t\t\tid: stageId,\n\t\t\tkind: \"decode\",\n\t\t\tdepends_on: null,\n\t\t\tnative_clock: \"block\",\n\t\t\tproducer_version: \"v1\",\n\t\t\trepair_mode: \"full_reindex\",\n\t\t})\n\t\t.onConflict((oc) => oc.column(\"id\").doNothing())\n\t\t.execute();\n}\n\nasync function writeCheckpoint(\n\ttx: Kysely<Database>,\n\tdecoderName: string,\n\tcursor: string | null,\n): Promise<void> {\n\tif (cursor === null) return;\n\t// An idle decoder still calls onBatch on every empty poll (the SDK's\n\t// no-sink consume loop, packages/sdk/src/streams/consumer.ts, invokes it\n\t// unconditionally — see `onBatch` in the no-sink branch), which re-commits\n\t// the SAME cursor every `DECODER_EMPTY_BACKOFF_MS`. With ~15 decoders\n\t// idling on ~1s backoff, an unconditional write+NOTIFY here fired\n\t// `index:tip` up to ~15x/sec with ZERO actual progress, waking every\n\t// pending Index long-poll to recheck for nothing. The `WHERE` makes \"did\n\t// this actually change\" an atomic compare-and-skip at the database: the\n\t// conflicting row is left untouched (and `RETURNING` yields nothing)\n\t// whenever the incoming cursor matches what's already stored, so a\n\t// no-op poll costs one INSERT attempt, not a write + a NOTIFY fan-out.\n\t// `IS DISTINCT FROM`, not `!=`: `last_cursor` starts out NULL for a\n\t// decoder that has never committed, and SQL's `NULL != x` evaluates to\n\t// NULL (falsy in a WHERE) — a plain `!=` silently treated \"still unset\"\n\t// as \"unchanged\" and dropped a decoder's very first commit entirely.\n\tconst written = await tx\n\t\t.insertInto(\"decoder_checkpoints\")\n\t\t.values({\n\t\t\tdecoder_name: decoderName,\n\t\t\tlast_cursor: cursor,\n\t\t})\n\t\t.onConflict((oc) =>\n\t\t\toc\n\t\t\t\t.column(\"decoder_name\")\n\t\t\t\t.doUpdateSet({\n\t\t\t\t\tlast_cursor: cursor,\n\t\t\t\t\tupdated_at: new Date(),\n\t\t\t\t})\n\t\t\t\t.where(\"decoder_checkpoints.last_cursor\", \"is distinct from\", cursor),\n\t\t)\n\t\t.returning(\"last_cursor\")\n\t\t.execute();\n\tif (written.length === 0) return;\n\n\t// Every decoder (classic + protocol) funnels its checkpoint write through\n\t// here, so this is the one place a `index:tip` NOTIFY can cover the whole\n\t// decoder set. Postgres defers delivery until the transaction commits,\n\t// so a rewound/rolled-back commit never fires it. A caller (the Index\n\t// API's long-poll wake, plan-063) only needs to know \"something committed,\n\t// go recheck\" — it re-reads the real committed height itself, so the\n\t// payload doesn't need to be more specific than the decoder name.\n\tawait sql`SELECT pg_notify('index:tip', ${decoderName})`.execute(tx);\n}\n\nasync function writeReceipts(\n\ttx: Kysely<Database>,\n\tstageId: string,\n\trunId: string | null,\n\treceipts: readonly DecoderAdapterReceipt[],\n): Promise<void> {\n\tif (receipts.length === 0) return;\n\tawait tx\n\t\t.insertInto(\"stage_block_receipts\")\n\t\t.values(\n\t\t\treceipts.map((receipt) => ({\n\t\t\t\tstage_id: stageId,\n\t\t\t\trun_id: runId,\n\t\t\t\tblock_height: receipt.height,\n\t\t\t\tblock_hash: receipt.hash,\n\t\t\t\tinput_count: receipt.input_count,\n\t\t\t\tinput_digest: receipt.input_digest,\n\t\t\t\teffect_digest: receipt.effect_digest,\n\t\t\t})),\n\t\t)\n\t\t.onConflict((oc) =>\n\t\t\toc\n\t\t\t\t.columns([\"stage_id\", \"block_height\", \"block_hash\"])\n\t\t\t\t.doUpdateSet((eb) => ({\n\t\t\t\t\tinput_count: eb.ref(\"excluded.input_count\"),\n\t\t\t\t\tinput_digest: eb.ref(\"excluded.input_digest\"),\n\t\t\t\t\teffect_digest: eb.ref(\"excluded.effect_digest\"),\n\t\t\t\t\trun_id: eb.ref(\"excluded.run_id\"),\n\t\t\t\t})),\n\t\t)\n\t\t.execute();\n}\n\nasync function writeFailure(\n\ttx: Kysely<Database>,\n\tstageId: string,\n\trunId: string | null,\n\tfailure: DecoderAdapterFailure,\n): Promise<void> {\n\tawait tx\n\t\t.insertInto(\"stage_failures\")\n\t\t.values({\n\t\t\tstage_id: stageId,\n\t\t\trun_id: runId,\n\t\t\tunit_kind: failure.unit_kind,\n\t\t\tfrom_height: failure.from_height,\n\t\t\tto_height: failure.to_height,\n\t\t\tclass: failure.class,\n\t\t\tretry_state: failure.retry_state,\n\t\t\tretry_count: failure.retry_count ?? 0,\n\t\t\tlast_error: failure.error,\n\t\t})\n\t\t.execute();\n}\n\n/**\n * Persist output + checkpoint + receipts + failure in one transaction.\n * Runner validation is the caller's job (`applyDecoderReceipts`) so a\n * rejected ack never opens a transaction.\n */\nexport async function commitDecoderAdapter(\n\tdb: Kysely<Database>,\n\tinput: DecoderAdapterCommit,\n): Promise<void> {\n\tconst runId = input.run_id ?? null;\n\tconst failure = input.failure ?? null;\n\tawait db.transaction().execute(async (tx) => {\n\t\tawait upsertRegistry(tx, input.stage_id);\n\t\tawait runDecoderCommitSteps(\n\t\t\t{\n\t\t\t\toutput: () => input.writeOutput(tx),\n\t\t\t\tcheckpoint: () =>\n\t\t\t\t\twriteCheckpoint(tx, input.decoder_name, input.checkpoint_cursor),\n\t\t\t\treceipt: () => writeReceipts(tx, input.stage_id, runId, input.receipts),\n\t\t\t\tfailure: () =>\n\t\t\t\t\tfailure\n\t\t\t\t\t\t? writeFailure(tx, input.stage_id, runId, failure)\n\t\t\t\t\t\t: Promise.resolve(),\n\t\t\t},\n\t\t\tinput.crashAfter,\n\t\t);\n\t});\n}\n",
10
+ "/**\n * Atomic decoder adapter.\n *\n * One transaction writes decoded output, the decoder checkpoint, block\n * receipts, and an optional failure. A crash after any step rolls all\n * four back — the property `commitDecodedBatch` already had for rows+\n * checkpoint, now covering the coverage kernel too.\n *\n * `crashAfter` is a test probe. It throws inside the transaction so the\n * matrix can abort after each step without simulating a real process kill.\n */\n\nimport { sql } from \"kysely\";\nimport type { Kysely } from \"kysely\";\nimport type { Database } from \"../db/types.ts\";\nimport type { FailureClass, FailureUnit, RetryState } from \"./constraints.ts\";\nimport type { DecoderClockReceipt } from \"./decoder-clock.ts\";\nimport {\n\ttype RunnerEvent,\n\ttype RunnerResult,\n\ttype RunnerState,\n\tapplyRunnerEvent,\n} from \"./runner.ts\";\n\nexport const DECODER_COMMIT_STEPS = [\n\t\"output\",\n\t\"checkpoint\",\n\t\"receipt\",\n\t\"failure\",\n] as const;\nexport type DecoderCommitStep = (typeof DECODER_COMMIT_STEPS)[number];\n\nexport class DecoderAdapterCrash extends Error {\n\treadonly name = \"DecoderAdapterCrash\";\n\tconstructor(readonly step: DecoderCommitStep) {\n\t\tsuper(`decoder adapter crash after ${step}`);\n\t}\n}\n\nexport type DecoderAdapterFailure = {\n\tunit_kind: FailureUnit;\n\tclass: FailureClass;\n\tretry_state: Exclude<RetryState, \"resolved\">;\n\tfrom_height: number | null;\n\tto_height: number | null;\n\terror: string | null;\n\tretry_count?: number;\n};\n\nexport type DecoderAdapterReceipt = DecoderClockReceipt & {\n\teffect_digest: string;\n};\n\nexport type DecoderAdapterCommit = {\n\tstage_id: string;\n\trun_id?: string | null;\n\tdecoder_name: string;\n\t/** Null = do not move the checkpoint (empty page). */\n\tcheckpoint_cursor: string | null;\n\treceipts: readonly DecoderAdapterReceipt[];\n\tfailure?: DecoderAdapterFailure | null;\n\twriteOutput: (tx: Kysely<Database>) => Promise<void>;\n\tcrashAfter?: DecoderCommitStep;\n};\n\nexport async function runDecoderCommitSteps(\n\tsteps: Record<DecoderCommitStep, () => Promise<void>>,\n\tcrashAfter?: DecoderCommitStep,\n): Promise<void> {\n\tfor (const step of DECODER_COMMIT_STEPS) {\n\t\tawait steps[step]();\n\t\tif (crashAfter === step) throw new DecoderAdapterCrash(step);\n\t}\n}\n\nexport function applyDecoderReceipts(\n\tstate: RunnerState,\n\treceipts: readonly DecoderAdapterReceipt[],\n): RunnerResult {\n\tlet current = state;\n\tif (current.status === \"pending\") {\n\t\tconst started = applyRunnerEvent(current, { type: \"start\" });\n\t\tif (!started.ok) return started;\n\t\tcurrent = started.state;\n\t}\n\tfor (const receipt of receipts) {\n\t\tconst event: RunnerEvent = {\n\t\t\ttype: \"ack\",\n\t\t\theight: receipt.height,\n\t\t\thash: receipt.hash,\n\t\t\tinput_count: receipt.input_count,\n\t\t\tinput_digest: receipt.input_digest,\n\t\t\teffect_digest: receipt.effect_digest,\n\t\t};\n\t\tconst next = applyRunnerEvent(current, event);\n\t\tif (!next.ok) return next;\n\t\tcurrent = next.state;\n\t}\n\treturn { ok: true, state: current, effects: [] };\n}\n\nasync function upsertRegistry(\n\ttx: Kysely<Database>,\n\tstageId: string,\n): Promise<void> {\n\tawait tx\n\t\t.insertInto(\"stage_registry\")\n\t\t.values({\n\t\t\tid: stageId,\n\t\t\tkind: \"decode\",\n\t\t\tdepends_on: null,\n\t\t\tnative_clock: \"block\",\n\t\t\tproducer_version: \"v1\",\n\t\t\trepair_mode: \"full_reindex\",\n\t\t})\n\t\t.onConflict((oc) => oc.column(\"id\").doNothing())\n\t\t.execute();\n}\n\nasync function writeCheckpoint(\n\ttx: Kysely<Database>,\n\tdecoderName: string,\n\tcursor: string | null,\n): Promise<void> {\n\tif (cursor === null) return;\n\t// An idle decoder still calls onBatch on every empty poll (the SDK's\n\t// no-sink consume loop, packages/sdk/src/streams/consumer.ts, invokes it\n\t// unconditionally — see `onBatch` in the no-sink branch), which re-commits\n\t// the SAME cursor every `DECODER_EMPTY_BACKOFF_MS`. With ~15 decoders\n\t// idling on ~1s backoff, an unconditional write+NOTIFY here fired\n\t// `index:tip` up to ~15x/sec with ZERO actual progress, waking every\n\t// pending Index long-poll to recheck for nothing. The `WHERE` makes \"did\n\t// this actually change\" an atomic compare-and-skip at the database: the\n\t// conflicting row is left untouched (and `RETURNING` yields nothing)\n\t// whenever the incoming cursor matches what's already stored, so a\n\t// no-op poll costs one INSERT attempt, not a write + a NOTIFY fan-out.\n\t// `IS DISTINCT FROM`, not `!=`: `last_cursor` starts out NULL for a\n\t// decoder that has never committed, and SQL's `NULL != x` evaluates to\n\t// NULL (falsy in a WHERE) — a plain `!=` silently treated \"still unset\"\n\t// as \"unchanged\" and dropped a decoder's very first commit entirely.\n\tconst written = await tx\n\t\t.insertInto(\"decoder_checkpoints\")\n\t\t.values({\n\t\t\tdecoder_name: decoderName,\n\t\t\tlast_cursor: cursor,\n\t\t})\n\t\t.onConflict((oc) =>\n\t\t\toc\n\t\t\t\t.column(\"decoder_name\")\n\t\t\t\t.doUpdateSet({\n\t\t\t\t\tlast_cursor: cursor,\n\t\t\t\t\tupdated_at: new Date(),\n\t\t\t\t})\n\t\t\t\t.where(\"decoder_checkpoints.last_cursor\", \"is distinct from\", cursor),\n\t\t)\n\t\t.returning(\"last_cursor\")\n\t\t.execute();\n\tif (written.length === 0) return;\n\n\t// Every decoder (classic + protocol) funnels its checkpoint write through\n\t// here, so this is the one place a `index:tip` NOTIFY can cover the whole\n\t// decoder set. Postgres defers delivery until the transaction commits,\n\t// so a rewound/rolled-back commit never fires it. A caller (the Index\n\t// API's long-poll wake, plan-063) only needs to know \"something committed,\n\t// go recheck\" — it re-reads the real committed height itself, so the\n\t// payload doesn't need to be more specific than the decoder name.\n\tawait sql`SELECT pg_notify('index:tip', ${decoderName})`.execute(tx);\n}\n\nasync function writeReceipts(\n\ttx: Kysely<Database>,\n\tstageId: string,\n\trunId: string | null,\n\treceipts: readonly DecoderAdapterReceipt[],\n): Promise<void> {\n\tif (receipts.length === 0) return;\n\tawait tx\n\t\t.insertInto(\"stage_block_receipts\")\n\t\t.values(\n\t\t\treceipts.map((receipt) => ({\n\t\t\t\tstage_id: stageId,\n\t\t\t\trun_id: runId,\n\t\t\t\tblock_height: receipt.height,\n\t\t\t\tblock_hash: receipt.hash,\n\t\t\t\tinput_count: receipt.input_count,\n\t\t\t\tinput_digest: receipt.input_digest,\n\t\t\t\teffect_digest: receipt.effect_digest,\n\t\t\t})),\n\t\t)\n\t\t.onConflict((oc) =>\n\t\t\toc\n\t\t\t\t.columns([\"stage_id\", \"block_height\", \"block_hash\"])\n\t\t\t\t.doUpdateSet((eb) => ({\n\t\t\t\t\tinput_count: eb.ref(\"excluded.input_count\"),\n\t\t\t\t\tinput_digest: eb.ref(\"excluded.input_digest\"),\n\t\t\t\t\teffect_digest: eb.ref(\"excluded.effect_digest\"),\n\t\t\t\t\trun_id: eb.ref(\"excluded.run_id\"),\n\t\t\t\t})),\n\t\t)\n\t\t.execute();\n}\n\nasync function writeFailure(\n\ttx: Kysely<Database>,\n\tstageId: string,\n\trunId: string | null,\n\tfailure: DecoderAdapterFailure,\n): Promise<void> {\n\tawait tx\n\t\t.insertInto(\"stage_failures\")\n\t\t.values({\n\t\t\tstage_id: stageId,\n\t\t\trun_id: runId,\n\t\t\tunit_kind: failure.unit_kind,\n\t\t\tfrom_height: failure.from_height,\n\t\t\tto_height: failure.to_height,\n\t\t\tclass: failure.class,\n\t\t\tretry_state: failure.retry_state,\n\t\t\tretry_count: failure.retry_count ?? 0,\n\t\t\tlast_error: failure.error,\n\t\t})\n\t\t.execute();\n}\n\n/**\n * Persist output + checkpoint + receipts + failure in one transaction.\n * Runner validation is the caller's job (`applyDecoderReceipts`) so a\n * rejected ack never opens a transaction.\n */\nexport async function commitDecoderAdapter(\n\tdb: Kysely<Database>,\n\tinput: DecoderAdapterCommit,\n): Promise<void> {\n\tconst runId = input.run_id ?? null;\n\tconst failure = input.failure ?? null;\n\tawait db.transaction().execute(async (tx) => {\n\t\tawait upsertRegistry(tx, input.stage_id);\n\t\tawait runDecoderCommitSteps(\n\t\t\t{\n\t\t\t\toutput: () => input.writeOutput(tx),\n\t\t\t\tcheckpoint: () =>\n\t\t\t\t\twriteCheckpoint(tx, input.decoder_name, input.checkpoint_cursor),\n\t\t\t\treceipt: () => writeReceipts(tx, input.stage_id, runId, input.receipts),\n\t\t\t\tfailure: () =>\n\t\t\t\t\tfailure\n\t\t\t\t\t\t? writeFailure(tx, input.stage_id, runId, failure)\n\t\t\t\t\t\t: Promise.resolve(),\n\t\t\t},\n\t\t\tinput.crashAfter,\n\t\t);\n\t});\n}\n\n/**\n * Same commit as {@link commitDecoderAdapter}, for several decoders sharing\n * ONE outer transaction and ONE read of the source events they were fed\n * from — the in-process classic-decoder loop's shape (plan-066): 11\n * checkpoints + their decoded rows land together, so a crash mid-batch\n * cannot leave one type's checkpoint ahead of another's rows.\n *\n * Steps run in four PASSES across the whole batch, not step-by-step per\n * entry, so the global order stays output → checkpoint → receipt → failure\n * (matching the single-entry commit) while every entry's output — including\n * its `assertCheckpointUnmoved` FOR UPDATE check — lands before any entry's\n * new checkpoint is written. Entries are locked in the order given, which\n * callers must keep identical to `handleDecodedEventsReorg`'s decoder-name\n * order so the two paths never take checkpoint-row locks in conflicting\n * order (deadlock risk otherwise). No per-entry `crashAfter` probe — that\n * stays on the single-entry path.\n */\nexport async function commitDecoderAdapterBatch(\n\tdb: Kysely<Database>,\n\tinputs: readonly Omit<DecoderAdapterCommit, \"crashAfter\">[],\n): Promise<void> {\n\tawait db.transaction().execute(async (tx) => {\n\t\tfor (const input of inputs) {\n\t\t\tawait upsertRegistry(tx, input.stage_id);\n\t\t}\n\t\tfor (const input of inputs) {\n\t\t\tawait input.writeOutput(tx);\n\t\t}\n\t\tfor (const input of inputs) {\n\t\t\tawait writeCheckpoint(tx, input.decoder_name, input.checkpoint_cursor);\n\t\t}\n\t\tfor (const input of inputs) {\n\t\t\tawait writeReceipts(\n\t\t\t\ttx,\n\t\t\t\tinput.stage_id,\n\t\t\t\tinput.run_id ?? null,\n\t\t\t\tinput.receipts,\n\t\t\t);\n\t\t}\n\t\tfor (const input of inputs) {\n\t\t\tconst failure = input.failure ?? null;\n\t\t\tif (failure) {\n\t\t\t\tawait writeFailure(tx, input.stage_id, input.run_id ?? null, failure);\n\t\t\t}\n\t\t}\n\t});\n}\n",
11
11
  "/**\n * Segment sealer — compact only finalized receipts after recomputing\n * range digests. A crash or deep reorg must not leave a sealed green\n * range over unfinalized or invalidated receipts.\n */\n\nimport { createHash } from \"node:crypto\";\nimport type { CoverageRange } from \"./constraints.ts\";\nimport type { DecoderClockReceipt } from \"./decoder-clock.ts\";\n\nexport type SealableReceipt = {\n\theight: number;\n\thash: string;\n\tinput_digest: string;\n\teffect_digest: string;\n\tfinalized: boolean;\n};\n\nexport type SealedSegment = {\n\tfrom_height: number;\n\tto_height: number;\n\tchain_digest: string;\n\tinput_digest: string;\n\toutput_digest: string;\n};\n\nexport type SealResult =\n\t| { ok: true; segment: SealedSegment; compacted: number }\n\t| { ok: false; reason: string };\n\nexport function rangeDigestOf(parts: readonly string[]): string {\n\tconst hash = createHash(\"sha256\");\n\tfor (const part of parts) hash.update(`${part}\\n`);\n\treturn hash.digest(\"hex\");\n}\n\nexport function sealFinalizedRange(\n\treceipts: readonly SealableReceipt[],\n\trange: CoverageRange,\n): SealResult {\n\tconst inRange = receipts\n\t\t.filter((r) => r.height >= range.from_height && r.height <= range.to_height)\n\t\t.sort((a, b) => a.height - b.height);\n\tif (inRange.length === 0) {\n\t\treturn { ok: false, reason: \"no receipts in range\" };\n\t}\n\tlet expected = range.from_height;\n\tfor (const receipt of inRange) {\n\t\tif (!receipt.finalized) {\n\t\t\treturn { ok: false, reason: `unfinalized receipt at ${receipt.height}` };\n\t\t}\n\t\tif (receipt.height !== expected) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `gap at ${expected} before ${receipt.height}`,\n\t\t\t};\n\t\t}\n\t\texpected += 1;\n\t}\n\tif (inRange[inRange.length - 1]?.height !== range.to_height) {\n\t\treturn { ok: false, reason: \"range is not fully covered\" };\n\t}\n\treturn {\n\t\tok: true,\n\t\tcompacted: inRange.length,\n\t\tsegment: {\n\t\t\tfrom_height: range.from_height,\n\t\t\tto_height: range.to_height,\n\t\t\tchain_digest: rangeDigestOf(inRange.map((r) => `${r.height}:${r.hash}`)),\n\t\t\tinput_digest: rangeDigestOf(inRange.map((r) => r.input_digest)),\n\t\t\toutput_digest: rangeDigestOf(inRange.map((r) => r.effect_digest)),\n\t\t},\n\t};\n}\n\n/** After a reorg at `fork`, any sealed segment that overlaps cannot stay green. */\nexport function segmentsSurviveReorg(\n\tsegments: readonly SealedSegment[],\n\tfork: number,\n): SealedSegment[] {\n\treturn segments.filter((s) => s.to_height < fork);\n}\n\nexport function receiptsAfterReorg(\n\treceipts: readonly SealableReceipt[],\n\tfork: number,\n): SealableReceipt[] {\n\treturn receipts.filter((r) => r.height < fork);\n}\n\nexport type ClockReceipt = DecoderClockReceipt;\n",
12
12
  "/**\n * Effect manifests — canonical hash of ordered subgraph mutations per block.\n * Retry and equivalent reorderings of the same ops are stable; a historical\n * defect (different op, table, key, or value) differs.\n */\n\nimport { createHash } from \"node:crypto\";\n\nexport type EffectOp = \"insert\" | \"update\" | \"delete\" | \"increment\";\n\nexport type EffectMutation = {\n\top: EffectOp;\n\ttable: string;\n\tkey: Record<string, string | number | boolean | null>;\n\tvalue?: Record<string, string | number | boolean | null>;\n};\n\nexport function canonicalizeMutations(\n\tops: readonly EffectMutation[],\n): EffectMutation[] {\n\treturn ops.map((op) => ({\n\t\top: op.op,\n\t\ttable: op.table,\n\t\tkey: sortRecord(op.key),\n\t\tvalue: op.value ? sortRecord(op.value) : undefined,\n\t}));\n}\n\nfunction sortRecord(\n\trecord: Record<string, string | number | boolean | null>,\n): Record<string, string | number | boolean | null> {\n\tconst out: Record<string, string | number | boolean | null> = {};\n\tfor (const key of Object.keys(record).sort()) out[key] = record[key] ?? null;\n\treturn out;\n}\n\nexport function hashEffectManifest(ops: readonly EffectMutation[]): string {\n\tconst canonical = canonicalizeMutations(ops);\n\tconst hash = createHash(\"sha256\");\n\thash.update(JSON.stringify(canonical));\n\treturn hash.digest(\"hex\");\n}\n\nexport function manifestsEqual(\n\ta: readonly EffectMutation[],\n\tb: readonly EffectMutation[],\n): boolean {\n\treturn hashEffectManifest(a) === hashEffectManifest(b);\n}\n",
13
13
  "/**\n * Atomic subgraph adapter — commit effects, rows, journal, cursor,\n * receipt, and failure in one transaction.\n */\n\nimport type { DecoderAdapterFailure } from \"./adapter.ts\";\nimport type { DecoderClockReceipt } from \"./decoder-clock.ts\";\nimport type { EffectMutation } from \"./effect-manifest.ts\";\n\nexport const SUBGRAPH_COMMIT_STEPS = [\n\t\"effects\",\n\t\"rows\",\n\t\"journal\",\n\t\"cursor\",\n\t\"receipt\",\n\t\"failure\",\n] as const;\nexport type SubgraphCommitStep = (typeof SUBGRAPH_COMMIT_STEPS)[number];\n\nexport class SubgraphAdapterCrash extends Error {\n\treadonly name = \"SubgraphAdapterCrash\";\n\tconstructor(readonly step: SubgraphCommitStep) {\n\t\tsuper(`subgraph adapter crash after ${step}`);\n\t}\n}\n\nexport type SubgraphCommitInput = {\n\tstage_id: string;\n\teffects: readonly EffectMutation[];\n\treceipts: readonly (DecoderClockReceipt & { effect_digest: string })[];\n\tfailure?: DecoderAdapterFailure | null;\n\twriteEffects: () => Promise<void>;\n\twriteRows: () => Promise<void>;\n\twriteJournal: () => Promise<void>;\n\twriteCursor: () => Promise<void>;\n\twriteReceipts: () => Promise<void>;\n\twriteFailure: () => Promise<void>;\n\tcrashAfter?: SubgraphCommitStep;\n};\n\nexport async function runSubgraphCommitSteps(\n\tsteps: Record<SubgraphCommitStep, () => Promise<void>>,\n\tcrashAfter?: SubgraphCommitStep,\n): Promise<void> {\n\tfor (const step of SUBGRAPH_COMMIT_STEPS) {\n\t\tawait steps[step]();\n\t\tif (crashAfter === step) throw new SubgraphAdapterCrash(step);\n\t}\n}\n\nexport async function commitSubgraphAdapter(\n\tinput: SubgraphCommitInput,\n\twrap: (fn: () => Promise<void>) => Promise<void> = (fn) => fn(),\n): Promise<void> {\n\tawait wrap(() =>\n\t\trunSubgraphCommitSteps(\n\t\t\t{\n\t\t\t\teffects: input.writeEffects,\n\t\t\t\trows: input.writeRows,\n\t\t\t\tjournal: input.writeJournal,\n\t\t\t\tcursor: input.writeCursor,\n\t\t\t\treceipt: input.writeReceipts,\n\t\t\t\tfailure: input.writeFailure,\n\t\t\t},\n\t\t\tinput.crashAfter,\n\t\t),\n\t);\n}\n",
@@ -17,7 +17,7 @@
17
17
  "/**\n * Repair SAFETY GATE — decides whether a proposed repair is allowed to run.\n * Only registered safe modes pass; unsafe ranges and mode/defect mismatches are\n * refused.\n *\n * This file plans and refuses. It does not repair. The executor that actually\n * writes is `secondlayer repair --apply` (packages/cli/src/commands/repair.ts),\n * which rewrites blocks from a signed archive inside a transaction.\n *\n * There used to be an `applyRepair` here that returned `{applied: true}`\n * without touching anything. It was removed in 2026-08 rather than\n * implemented: a second executor would have been a fake one, and drills that\n * \"recovered\" through it would have proven nothing.\n */\n\nimport type { RepairMode } from \"./constraints.ts\";\nimport type { CoverageRange } from \"./constraints.ts\";\n\nexport const SAFE_REPAIR_MODES: readonly RepairMode[] = [\n\t\"range_safe\",\n\t\"full_reindex\",\n\t\"archive_replay\",\n];\n\nexport type RepairDefect =\n\t| \"gap\"\n\t| \"digest_mismatch\"\n\t| \"omission\"\n\t| \"version\"\n\t| \"reorg\"\n\t| \"source_gap\";\n\nexport type RepairPlan = {\n\tstage_id: string;\n\trange: CoverageRange;\n\tmode: RepairMode;\n\tdefect: RepairDefect;\n\tsafe: boolean;\n\treason: string;\n};\n\nexport function planRepair(input: {\n\tstage_id: string;\n\trange: CoverageRange;\n\tmode: RepairMode;\n\tdefect: RepairDefect;\n\trange_safe_proven?: boolean;\n}): RepairPlan {\n\tif (input.range.from_height > input.range.to_height) {\n\t\treturn {\n\t\t\t...input,\n\t\t\tsafe: false,\n\t\t\treason: \"inverted range\",\n\t\t};\n\t}\n\tif (!(SAFE_REPAIR_MODES as readonly string[]).includes(input.mode)) {\n\t\treturn {\n\t\t\t...input,\n\t\t\tsafe: false,\n\t\t\treason: `mode ${input.mode} is not registered`,\n\t\t};\n\t}\n\tif (input.mode === \"range_safe\" && !input.range_safe_proven) {\n\t\treturn {\n\t\t\t...input,\n\t\t\tsafe: false,\n\t\t\treason: \"range_safe requires a proven range\",\n\t\t};\n\t}\n\tif (input.defect === \"source_gap\" && input.mode !== \"archive_replay\") {\n\t\treturn {\n\t\t\t...input,\n\t\t\tsafe: false,\n\t\t\treason: \"raw/source gaps require archive_replay\",\n\t\t};\n\t}\n\treturn {\n\t\t...input,\n\t\tsafe: true,\n\t\treason: `dry-run ${input.mode} for ${input.defect}`,\n\t};\n}\n",
18
18
  "/**\n * Unified verify targets — library used by CLI (and REST later).\n * Exit codes match `sl verify`: 0 clean, 1 diverged, 2 unanchored.\n */\n\nexport const VERIFY_EXIT = {\n\tCLEAN: 0,\n\tDIVERGED: 1,\n\tUNANCHORED: 2,\n} as const;\nexport type VerifyExit = (typeof VERIFY_EXIT)[keyof typeof VERIFY_EXIT];\n\nexport type VerifyTarget =\n\t| { kind: \"all\" }\n\t| { kind: \"raw\" }\n\t| { kind: \"decode\"; name: string }\n\t| { kind: \"subgraph\"; name: string };\n\nexport type VerifyMode = \"quick\" | \"deep\" | \"anchor\";\n\nexport function parseVerifyTarget(value: string | undefined): VerifyTarget {\n\tconst raw = (value ?? \"raw\").trim();\n\tif (raw === \"all\") return { kind: \"all\" };\n\tif (raw === \"raw\" || raw === \"\") return { kind: \"raw\" };\n\tif (raw.startsWith(\"decode:\")) {\n\t\tconst name = raw.slice(\"decode:\".length).trim();\n\t\tif (!name) throw new Error(\"decode: target needs a decoder name\");\n\t\treturn { kind: \"decode\", name };\n\t}\n\tif (raw.startsWith(\"subgraph:\")) {\n\t\tconst name = raw.slice(\"subgraph:\".length).trim();\n\t\tif (!name) throw new Error(\"subgraph: target needs a subgraph name\");\n\t\treturn { kind: \"subgraph\", name };\n\t}\n\tthrow new Error(\n\t\t`verify target must be all | raw | decode:<name> | subgraph:<name> (got ${value})`,\n\t);\n}\n\nconst RAW_DATASETS = new Set([\"blocks\", \"transactions\", \"events\"]);\n\n/** Whether an archive/coverage dataset belongs to this verify target. */\nexport function datasetMatchesTarget(\n\tdataset: string,\n\ttarget: VerifyTarget,\n): boolean {\n\tif (target.kind === \"all\") return true;\n\tconst name = dataset.toLowerCase();\n\tif (target.kind === \"raw\") return RAW_DATASETS.has(name);\n\tif (target.kind === \"decode\") {\n\t\treturn (\n\t\t\tname === target.name.toLowerCase() ||\n\t\t\tname === `decode:${target.name.toLowerCase()}` ||\n\t\t\tname.endsWith(`_${target.name.toLowerCase()}`)\n\t\t);\n\t}\n\treturn (\n\t\tname === target.name.toLowerCase() ||\n\t\tname === `subgraph:${target.name.toLowerCase()}` ||\n\t\tname.startsWith(`${target.name.toLowerCase()}_`)\n\t);\n}\n\nexport type VerifyReport = {\n\ttarget: VerifyTarget;\n\tmode: VerifyMode;\n\texit: VerifyExit;\n\tstatus: \"clean\" | \"diverged\" | \"unanchored\";\n\tdetail: string;\n};\n\nexport function reportVerify(opts: {\n\ttarget: VerifyTarget;\n\tmode?: VerifyMode;\n\tanchored?: boolean;\n\tdiverged?: boolean;\n\tdetail?: string;\n}): VerifyReport {\n\tconst mode = opts.mode ?? \"quick\";\n\tif (opts.anchored === false) {\n\t\treturn {\n\t\t\ttarget: opts.target,\n\t\t\tmode,\n\t\t\texit: VERIFY_EXIT.UNANCHORED,\n\t\t\tstatus: \"unanchored\",\n\t\t\tdetail: opts.detail ?? \"reference unavailable or unverifiable\",\n\t\t};\n\t}\n\tif (opts.diverged) {\n\t\treturn {\n\t\t\ttarget: opts.target,\n\t\t\tmode,\n\t\t\texit: VERIFY_EXIT.DIVERGED,\n\t\t\tstatus: \"diverged\",\n\t\t\tdetail: opts.detail ?? \"coverage or archive diverged\",\n\t\t};\n\t}\n\tconst label =\n\t\topts.target.kind === \"decode\"\n\t\t\t? `decode:${opts.target.name}`\n\t\t\t: opts.target.kind === \"subgraph\"\n\t\t\t\t? `subgraph:${opts.target.name}`\n\t\t\t\t: opts.target.kind;\n\treturn {\n\t\ttarget: opts.target,\n\t\tmode,\n\t\texit: VERIFY_EXIT.CLEAN,\n\t\tstatus: \"clean\",\n\t\tdetail: opts.detail ?? `${label} ${mode} is clean`,\n\t};\n}\n"
19
19
  ],
20
- "mappings": "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",
21
- "debugId": "67A673CA618D58BA64756E2164756E21",
20
+ "mappings": "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",
21
+ "debugId": "0D226DB359FAEB5064756E2164756E21",
22
22
  "names": []
23
23
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@secondlayer/shared",
3
- "version": "11.11.2",
3
+ "version": "11.12.0",
4
4
  "description": "Internal building blocks shared across Secondlayer packages.",
5
5
  "license": "MIT",
6
6
  "repository": {