@blockcast/mmt-container 0.4.1 → 0.5.0-main.2c1f81817995

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 (72) hide show
  1. package/README.md +2 -2
  2. package/dist/browser-runtime.js +3458 -356
  3. package/dist/browser-runtime.js.map +4 -4
  4. package/dist/cmcd-producer.d.ts +5 -1
  5. package/dist/cmcd-producer.d.ts.map +1 -1
  6. package/dist/cmcd-producer.js.map +2 -2
  7. package/dist/delivery-catalog.js +18 -2
  8. package/dist/delivery-catalog.js.map +2 -2
  9. package/dist/fec-manager.d.ts +21 -16
  10. package/dist/fec-manager.d.ts.map +1 -1
  11. package/dist/fec-manager.js +177 -80
  12. package/dist/fec-manager.js.map +3 -3
  13. package/dist/held-layer-admission.d.ts +58 -0
  14. package/dist/held-layer-admission.d.ts.map +1 -0
  15. package/dist/held-layer-admission.js +105 -0
  16. package/dist/held-layer-admission.js.map +7 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js.map +2 -2
  19. package/dist/mmtp-container-parser.no-modules.js +2682 -1023
  20. package/dist/mmtp-container-parser.no-modules.js.map +4 -4
  21. package/dist/mmtp-fec-session.d.ts +36 -3
  22. package/dist/mmtp-fec-session.d.ts.map +1 -1
  23. package/dist/mmtp-fec-session.js +114 -5
  24. package/dist/mmtp-fec-session.js.map +3 -3
  25. package/dist/mmtp-router.d.ts +72 -28
  26. package/dist/mmtp-router.d.ts.map +1 -1
  27. package/dist/mmtp-router.js +321 -203
  28. package/dist/mmtp-router.js.map +2 -2
  29. package/dist/multicast-auth-catalog.d.ts +10 -2
  30. package/dist/multicast-auth-catalog.d.ts.map +1 -1
  31. package/dist/multicast-auth-catalog.js +422 -22
  32. package/dist/multicast-auth-catalog.js.map +4 -4
  33. package/dist/multicast-manager.d.ts +48 -9
  34. package/dist/multicast-manager.d.ts.map +1 -1
  35. package/dist/multicast-manager.js +3406 -340
  36. package/dist/multicast-manager.js.map +4 -4
  37. package/dist/multicast-transport.d.ts +4 -1
  38. package/dist/multicast-transport.d.ts.map +1 -1
  39. package/dist/multicast-transport.js +20 -3
  40. package/dist/multicast-transport.js.map +2 -2
  41. package/dist/no-modules.d.ts +1 -2
  42. package/dist/no-modules.d.ts.map +1 -1
  43. package/dist/no-modules.js +2668 -1007
  44. package/dist/no-modules.js.map +4 -4
  45. package/dist/repair-fetch.d.ts +10 -1
  46. package/dist/repair-fetch.d.ts.map +1 -1
  47. package/dist/repair-fetch.js +5 -2
  48. package/dist/repair-fetch.js.map +2 -2
  49. package/package.json +5 -14
  50. package/src/cmcd-producer.ts +6 -1
  51. package/src/fec-manager.ts +121 -131
  52. package/src/held-layer-admission.ts +161 -0
  53. package/src/index.ts +5 -9
  54. package/src/mmtp-fec-session.ts +76 -3
  55. package/src/mmtp-router.ts +390 -272
  56. package/src/multicast-auth-catalog.ts +81 -8
  57. package/src/multicast-manager.ts +189 -48
  58. package/src/multicast-transport.ts +6 -2
  59. package/src/no-modules.ts +1 -6
  60. package/src/repair-fetch.ts +24 -4
  61. package/dist/manifest-auth-plan.d.ts +0 -31
  62. package/dist/manifest-auth-plan.d.ts.map +0 -1
  63. package/dist/manifest-auth-plan.js +0 -426
  64. package/dist/manifest-auth-plan.js.map +0 -7
  65. package/dist/source-auth.d.ts +0 -2
  66. package/dist/source-auth.d.ts.map +0 -1
  67. package/dist/source-auth.js +0 -3912
  68. package/dist/source-auth.js.map +0 -7
  69. package/src/manifest-auth-plan.ts +0 -55
  70. package/src/source-auth.ts +0 -1
  71. package/test-vectors/generate-source-auth-fixture.mjs +0 -114
  72. package/test-vectors/source-auth-v1.json +0 -61
@@ -12,6 +12,7 @@ import { type FecBlockProfile } from '@blockcast/mmt-base';
12
12
  import { type IsoBlockRange, type IsoPlacedSource, type IsoRepairPlacement } from './iso-block-locator.js';
13
13
  import { MIN_INTERLEAVE_DEPTH_MS } from './fec-state.js';
14
14
  import { type BlockClass, type BlockClassifierGeometry, type ClassifierMode, type ClassifierReason, type ReclassificationEvidence, type SourceSymbolEvidence, type TrackKind } from './block-policy.js';
15
+ import { type FecFailClosedReason } from './held-layer-admission.js';
15
16
  import type { MmtpDeliveryProvenance } from './mfu-reassembler.js';
16
17
  import type { FecWorkerClient, FecTrackStats, FrameMeta } from '@blockcast/fec-worker';
17
18
  export { MIN_INTERLEAVE_DEPTH_MS };
@@ -196,21 +197,7 @@ export interface FecRepairLayer {
196
197
  rsIdOffset: number;
197
198
  repairSymbols: number;
198
199
  }
199
- /**
200
- * Why a source track's FEC failed closed at runtime (fec-01 6.3.9): a repair
201
- * packet stated an RSB_length below a held layer's total B_i on that layer's
202
- * own repair track (`below_own_track_total`), or at or after the anchor, the
203
- * earliest block in SS_Start serial order whose repair carried >= B_i
204
- * (`below_anchored_total`). Repair for the track is refused from then on.
205
- */
206
- export interface FecFailClosedReason {
207
- code: 'below_own_track_total' | 'below_anchored_total';
208
- layer: number;
209
- total: number;
210
- rsbLength: number;
211
- ssStart: number;
212
- anchor?: number;
213
- }
200
+ export type { FecFailClosedReason } from './held-layer-admission.js';
214
201
  /** A {@link FecFailClosedReason} with the stream it closed, as reported to the fail-closed handler. */
215
202
  export interface FecFailClosedEvent extends FecFailClosedReason {
216
203
  packetId: number;
@@ -275,7 +262,12 @@ export declare class FECManager {
275
262
  onBlockResolved: ((sbn: number, packetId: number, catalogTrackName: string | undefined) => void) | null;
276
263
  /** A stream's SBN went backwards (or jumped implausibly): the source restarted. */
277
264
  onSourceDiscontinuity: ((packetId: number, catalogTrackName: string | undefined) => void) | null;
278
- onBlockRecovered: ((sbn: number, packetId: number, data: ArrayBuffer, meta: FrameMeta, catalogTrackName?: string) => void) | null;
265
+ /**
266
+ * A recovered source symbol. Return false when admission refused the
267
+ * packet it carries (bc-provenance v2, draft-ramadan-moq-multicast-01
268
+ * 7.2.7): the block is then unrecovered and stays open to its FEC deadline.
269
+ */
270
+ onBlockRecovered: ((sbn: number, packetId: number, data: ArrayBuffer, meta: FrameMeta, catalogTrackName?: string) => boolean | void) | null;
279
271
  onFecStatsUpdate: ((packetId: number, stats: FecTrackStats) => void) | null;
280
272
  /** Internal state for diagnostics — not part of the public stats API. */
281
273
  get diagnostics(): {
@@ -434,6 +426,11 @@ export declare class FECManager {
434
426
  * a block no symbol reached (one materialized because a later SBN arrived).
435
427
  */
436
428
  blockAnchorAtMs(sbn: number, packetId: number, catalogTrackName?: string): number | undefined;
429
+ /**
430
+ * How long ago (ms) the oldest open block of the stream, one with an FEC
431
+ * deadline, took its first accepted symbol; undefined with none open.
432
+ */
433
+ oldestOpenBlockAgeMs(packetId: number, catalogTrackName: string): number | undefined;
437
434
  /** Absolute fail deadline of a still-open block, or undefined. */
438
435
  blockDeadlineAtMs(sbn: number, packetId: number, catalogTrackName?: string): number | undefined;
439
436
  /**
@@ -691,6 +688,14 @@ export declare class FECManager {
691
688
  * never reads the manager-global K or timeout.
692
689
  */
693
690
  trackBlock(sbn: number, packetId: number, catalogTrackName: string | undefined, esi: number, evidence: SourceSymbolEvidence): void;
691
+ /**
692
+ * Run `fn` with `receivedAtMs` (performance.now() clock) as the receipt
693
+ * time of what it feeds. Within a consumer the bc-provenance profile
694
+ * governs, a datagram held on a miss and admitted later keeps its receipt
695
+ * time (fec-01 9): it anchors its block's ts and arms the block's
696
+ * deadlines from then, never later than they are already armed.
697
+ */
698
+ withReceiptTime(receivedAtMs: number, fn: () => void): void;
694
699
  /** Refresh deadlines after accepted block activity. */
695
700
  noteBlockActivity(sbn: number, packetId: number, catalogTrackName?: string, sourceProgress?: boolean): void;
696
701
  /** Check whether a block has already been completed (clean or recovered). */
@@ -1 +1 @@
1
- {"version":3,"file":"fec-manager.d.ts","sourceRoot":"","sources":["../src/fec-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fec-manager.d.ts","sourceRoot":"","sources":["../src/fec-manager.ts"],"names":[],"mappings":"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"}
@@ -854,6 +854,79 @@ var BlockClassifier = class {
854
854
  }
855
855
  };
856
856
 
857
+ // src/held-layer-admission.ts
858
+ var HORIZON_CAP = 1073741824;
859
+ function heldLayerAnchorHorizon(retentionBlocks, k) {
860
+ return retentionBlocks === void 0 || k <= 0 ? HORIZON_CAP : Math.min(HORIZON_CAP, retentionBlocks * k);
861
+ }
862
+ var HeldLayerAdmission = class {
863
+ #layerNames;
864
+ #states;
865
+ constructor(layers, heldLayers = [0]) {
866
+ const held = new Set(heldLayers);
867
+ this.#layerNames = new Set(layers.map((l) => l.repairTrackName));
868
+ this.#states = layers.filter((l) => held.has(l.layer)).map((l) => ({ layer: l.layer, repairTrackName: l.repairTrackName, total: l.rsIdOffset + l.repairSymbols }));
869
+ }
870
+ /**
871
+ * Judges one repair packet, after the 4.5 discards and the size check and
872
+ * before it places a block. `repairTrackName` is the subscribed repair
873
+ * track, never inferred from RS_ID; without it only (b) runs. A packet on a
874
+ * repair track the catalog does not list is `'discard'` and anchors nothing.
875
+ * `sourceFrontier` is the newest source SS_ID, if any: a repair more than
876
+ * `horizon` past it is judged without moving the anchored state.
877
+ *
878
+ * @returns undefined to admit, `'discard'`, or the fail-closed reason.
879
+ */
880
+ admit(repairTrackName, ssStart, rsbLength, horizon, sourceFrontier) {
881
+ if (repairTrackName !== void 0 && !this.#layerNames.has(repairTrackName)) return "discard";
882
+ const farAhead = sourceFrontier !== void 0 && serial32Precedes(sourceFrontier, ssStart) && serial32Distance(sourceFrontier, ssStart) > horizon;
883
+ for (const state of this.#states) {
884
+ let code;
885
+ if (farAhead) {
886
+ if (rsbLength < state.total) {
887
+ if (state.layer > 0 && repairTrackName === state.repairTrackName) code = "below_own_track_total";
888
+ else if (state.anchor !== void 0 || state.settled) code = "below_anchored_total";
889
+ }
890
+ } else {
891
+ if (state.newest === void 0 || serial32Precedes(state.newest, ssStart)) state.newest = ssStart;
892
+ const stale = (s) => serial32Distance(s, state.newest) > horizon;
893
+ if (state.latestBelow !== void 0 && stale(state.latestBelow)) {
894
+ delete state.latestBelow;
895
+ delete state.latestBelowRsb;
896
+ }
897
+ if (state.anchor !== void 0 && stale(state.anchor)) state.settled = true;
898
+ if (rsbLength < state.total) {
899
+ if (state.layer > 0 && repairTrackName === state.repairTrackName) code = "below_own_track_total";
900
+ else if (stale(ssStart)) continue;
901
+ else if (state.settled || state.anchor !== void 0 && !serial32Precedes(ssStart, state.anchor)) code = "below_anchored_total";
902
+ else if (state.latestBelow === void 0 || serial32Precedes(state.latestBelow, ssStart)) {
903
+ state.latestBelow = ssStart;
904
+ state.latestBelowRsb = rsbLength;
905
+ }
906
+ } else if (!state.settled && !stale(ssStart)) {
907
+ if (state.anchor === void 0 || serial32Precedes(ssStart, state.anchor)) state.anchor = ssStart;
908
+ if (state.latestBelow !== void 0 && !serial32Precedes(state.latestBelow, state.anchor)) {
909
+ code = "below_anchored_total";
910
+ ssStart = state.latestBelow;
911
+ rsbLength = state.latestBelowRsb;
912
+ }
913
+ }
914
+ }
915
+ if (code !== void 0) {
916
+ return {
917
+ code,
918
+ layer: state.layer,
919
+ total: state.total,
920
+ rsbLength,
921
+ ssStart,
922
+ ...state.anchor === void 0 ? {} : { anchor: state.anchor }
923
+ };
924
+ }
925
+ }
926
+ return void 0;
927
+ }
928
+ };
929
+
857
930
  // src/fec-manager.ts
858
931
  var RS_MAX_BLOCK_SYMBOLS = 255;
859
932
  var WORKER_ERROR_LOG_CAP = 5;
@@ -1010,6 +1083,9 @@ var FECManager = class _FECManager {
1010
1083
  // Receiver-local first-accepted-symbol time per block, bounded like
1011
1084
  // #blockPathCounts (see blockAnchorAtMs).
1012
1085
  this.#blockAnchorsMs = /* @__PURE__ */ new Map();
1086
+ // The receipt time of the packet being fed, when it is not now: a datagram
1087
+ // held on a miss and admitted later (withReceiptTime).
1088
+ this.#receiptAtMs = void 0;
1013
1089
  // Exact catalog identity observed on accepted symbols for each FEC block.
1014
1090
  // Conflicting identities collapse to null so recovery fails closed.
1015
1091
  this.#blockCatalogTrackNames = /* @__PURE__ */ new Map();
@@ -1057,6 +1133,9 @@ var FECManager = class _FECManager {
1057
1133
  // Worker recovery emits all K source symbols. Track recovery once per block
1058
1134
  // while routing only ESI slots that were absent from the direct source path.
1059
1135
  this.#workerRecoveredBlocks = /* @__PURE__ */ new Set();
1136
+ // Worker-recovered blocks a recovered packet of which admission refused,
1137
+ // until the decode's final symbol (7.2.7: the block is unrecovered).
1138
+ this.#refusedRecoveries = /* @__PURE__ */ new Set();
1060
1139
  // How the multicast leg delivers symbols (see MulticastSymbolDelivery). The
1061
1140
  // provider declares it per transport join; absence keeps datagram semantics.
1062
1141
  this.#multicastSymbolDelivery = "datagram";
@@ -1195,6 +1274,11 @@ var FECManager = class _FECManager {
1195
1274
  /** A stream's SBN went backwards (or jumped implausibly): the source restarted. */
1196
1275
  this.onSourceDiscontinuity = null;
1197
1276
  // Worker-path callbacks — async recovery and stats from FecWorkerClient.
1277
+ /**
1278
+ * A recovered source symbol. Return false when admission refused the
1279
+ * packet it carries (bc-provenance v2, draft-ramadan-moq-multicast-01
1280
+ * 7.2.7): the block is then unrecovered and stays open to its FEC deadline.
1281
+ */
1198
1282
  this.onBlockRecovered = null;
1199
1283
  this.onFecStatsUpdate = null;
1200
1284
  }
@@ -1247,6 +1331,7 @@ var FECManager = class _FECManager {
1247
1331
  #seenSymbols;
1248
1332
  #blockPathCounts;
1249
1333
  #blockAnchorsMs;
1334
+ #receiptAtMs;
1250
1335
  #blockCatalogTrackNames;
1251
1336
  #startupAlignedPackets;
1252
1337
  #startupPartialBlocks;
@@ -1259,6 +1344,7 @@ var FECManager = class _FECManager {
1259
1344
  #repairDeadlines;
1260
1345
  #repairDeadlineAtMs;
1261
1346
  #workerRecoveredBlocks;
1347
+ #refusedRecoveries;
1262
1348
  #multicastSymbolDelivery;
1263
1349
  #orderedFrontiers;
1264
1350
  #orderedPendingBlocks;
@@ -1398,6 +1484,7 @@ var FECManager = class _FECManager {
1398
1484
  this.#completedBlocks.delete(record.key);
1399
1485
  this.#cleanlyCompletedBlocks.delete(record.key);
1400
1486
  this.#workerRecoveredBlocks.delete(record.key);
1487
+ this.#refusedRecoveries.delete(record.key);
1401
1488
  this.#failedBlocks.delete(record.key);
1402
1489
  this.#resolvedBlockClasses.delete(record.key);
1403
1490
  this.#repairedBlocks.delete(record.key);
@@ -1736,7 +1823,7 @@ var FECManager = class _FECManager {
1736
1823
  * remainder, so repeated source progress costs no timer operation.
1737
1824
  */
1738
1825
  #armRepairDeadline(key, sbn, packetId, catalogTrackName, delayMs) {
1739
- const deadlineMs = performance.now() + delayMs;
1826
+ const deadlineMs = this.#notEarlierUnderReceipt(this.#receiptNow() + delayMs, this.#repairDeadlineAtMs.get(key));
1740
1827
  this.#repairDeadlineAtMs.set(key, deadlineMs);
1741
1828
  const armed = this.#repairDeadlines.get(key);
1742
1829
  if (armed?.handle != null) {
@@ -1756,7 +1843,7 @@ var FECManager = class _FECManager {
1756
1843
  timer.handle = null;
1757
1844
  this.#requestRepair(sbn, packetId, catalogTrackName);
1758
1845
  };
1759
- timer.handle = setTimeout(onFire, delayMs);
1846
+ timer.handle = setTimeout(onFire, Math.max(0, deadlineMs - performance.now()));
1760
1847
  this.#repairDeadlines.set(key, timer);
1761
1848
  }
1762
1849
  #requestRepair(sbn, packetId, catalogTrackName, settledByOrder = false) {
@@ -2160,7 +2247,10 @@ var FECManager = class _FECManager {
2160
2247
  }
2161
2248
  #armBlockTimeout(sbn, packetId, catalogTrackName, delayMs) {
2162
2249
  const key = this.#blockKey(sbn, packetId, catalogTrackName);
2163
- const waitAtMs = performance.now() + Math.max(1, Math.ceil(delayMs));
2250
+ const waitAtMs = this.#notEarlierUnderReceipt(
2251
+ this.#receiptNow() + Math.max(1, Math.ceil(delayMs)),
2252
+ this.#blockWaitDeadlinesMs.get(key)
2253
+ );
2164
2254
  const holdAtMs = this.#repairHoldUntilMs.get(key);
2165
2255
  this.#blockWaitDeadlinesMs.set(key, holdAtMs === void 0 ? waitAtMs : Math.min(waitAtMs, holdAtMs));
2166
2256
  this.#applyBlockDeadline(key, sbn, packetId, catalogTrackName);
@@ -2549,6 +2639,7 @@ var FECManager = class _FECManager {
2549
2639
  resetSet(this.#cleanlyCompletedBlocks);
2550
2640
  resetSet(this.#repairRequestedBlocks);
2551
2641
  resetSet(this.#workerRecoveredBlocks);
2642
+ resetSet(this.#refusedRecoveries);
2552
2643
  resetSet(this.#startupAlignedPackets);
2553
2644
  resetSet(this.#startupPartialBlocks);
2554
2645
  resetSet(this.#startupRepairReadyPackets);
@@ -2675,6 +2766,7 @@ var FECManager = class _FECManager {
2675
2766
  dropSet(this.#cleanlyCompletedBlocks);
2676
2767
  dropSet(this.#repairRequestedBlocks);
2677
2768
  dropSet(this.#workerRecoveredBlocks);
2769
+ dropSet(this.#refusedRecoveries);
2678
2770
  dropSet(this.#startupAlignedPackets);
2679
2771
  dropSet(this.#startupPartialBlocks);
2680
2772
  dropSet(this.#startupRepairReadyPackets);
@@ -2788,7 +2880,9 @@ var FECManager = class _FECManager {
2788
2880
  moqSymbols: 0,
2789
2881
  complete: false
2790
2882
  };
2791
- if (!this.#blockAnchorsMs.has(blockKey)) this.#blockAnchorsMs.set(blockKey, performance.now());
2883
+ const receivedAtMs = this.#receiptNow();
2884
+ const anchorMs = this.#blockAnchorsMs.get(blockKey);
2885
+ if (anchorMs === void 0 || receivedAtMs < anchorMs) this.#blockAnchorsMs.set(blockKey, receivedAtMs);
2792
2886
  if (source === "multicast") counts.multicastSymbols++;
2793
2887
  else counts.moqSymbols++;
2794
2888
  this.#blockPathCounts.set(blockKey, counts);
@@ -2949,6 +3043,18 @@ var FECManager = class _FECManager {
2949
3043
  blockAnchorAtMs(sbn, packetId, catalogTrackName) {
2950
3044
  return this.#blockAnchorsMs.get(this.#blockKey(sbn, packetId, catalogTrackName));
2951
3045
  }
3046
+ /**
3047
+ * How long ago (ms) the oldest open block of the stream, one with an FEC
3048
+ * deadline, took its first accepted symbol; undefined with none open.
3049
+ */
3050
+ oldestOpenBlockAgeMs(packetId, catalogTrackName) {
3051
+ let oldest = Infinity;
3052
+ for (const key of this.#activeBlocks.keys()) {
3053
+ if (!this.#belongsToStream(key, packetId, catalogTrackName)) continue;
3054
+ oldest = Math.min(oldest, this.#blockAnchorsMs.get(key) ?? Infinity);
3055
+ }
3056
+ return oldest === Infinity ? void 0 : performance.now() - oldest;
3057
+ }
2952
3058
  /** Absolute fail deadline of a still-open block, or undefined. */
2953
3059
  blockDeadlineAtMs(sbn, packetId, catalogTrackName) {
2954
3060
  return this.#activeBlockDeadlinesMs.get(this.#blockKey(sbn, packetId, catalogTrackName));
@@ -3449,7 +3555,25 @@ var FECManager = class _FECManager {
3449
3555
  const blockKey = this.#blockKey(meta.sbn, packetId, recoveredCatalogTrackName);
3450
3556
  const cleanlyCompleted = this.#cleanlyCompletedBlocks.has(blockKey);
3451
3557
  if (!cleanlyCompleted) {
3452
- if (!this.#workerRecoveredBlocks.has(blockKey)) {
3558
+ const symbolKey = `${blockKey}:${esi}`;
3559
+ if (!this.#seenSymbols.has(symbolKey)) {
3560
+ this.#seenSymbols.add(symbolKey);
3561
+ const admitted = this.onBlockRecovered?.(
3562
+ meta.sbn,
3563
+ packetId,
3564
+ data,
3565
+ meta,
3566
+ recoveredCatalogTrackName
3567
+ );
3568
+ if (admitted === false) {
3569
+ this.#refusedRecoveries.add(blockKey);
3570
+ if (this.#refusedRecoveries.size > 1e3) dropOldest(this.#refusedRecoveries, 500);
3571
+ }
3572
+ }
3573
+ }
3574
+ const refused = esi >= meta.ssbLength - 1 && this.#refusedRecoveries.delete(blockKey);
3575
+ if (esi >= meta.ssbLength - 1 && !refused && !this.#completedBlocks.has(blockKey)) {
3576
+ if (!cleanlyCompleted && !this.#workerRecoveredBlocks.has(blockKey)) {
3453
3577
  this.#traceLifecycle(
3454
3578
  "recovered",
3455
3579
  meta.sbn,
@@ -3464,19 +3588,6 @@ var FECManager = class _FECManager {
3464
3588
  }
3465
3589
  this.#noteBlockRepaired(blockKey, meta.sbn, packetId, recoveredCatalogTrackName);
3466
3590
  }
3467
- const symbolKey = `${blockKey}:${esi}`;
3468
- if (!this.#seenSymbols.has(symbolKey)) {
3469
- this.#seenSymbols.add(symbolKey);
3470
- this.onBlockRecovered?.(
3471
- meta.sbn,
3472
- packetId,
3473
- data,
3474
- meta,
3475
- recoveredCatalogTrackName
3476
- );
3477
- }
3478
- }
3479
- if (esi >= meta.ssbLength - 1 && !this.#completedBlocks.has(blockKey)) {
3480
3591
  this.cancelBlockTimeout(meta.sbn, packetId, recoveredCatalogTrackName);
3481
3592
  if (recoveredCatalogTrackName === void 0) {
3482
3593
  this.onBlockComplete?.(meta.sbn, packetId);
@@ -3771,66 +3882,26 @@ var FECManager = class _FECManager {
3771
3882
  const config = this.#trackConfigs.get(packetId);
3772
3883
  const layers = config?.repairLayers;
3773
3884
  if (layers === void 0 || layers.length === 0) return true;
3774
- if (repairTrackName !== void 0 && !layers.some((l) => l.repairTrackName === repairTrackName)) {
3775
- return false;
3885
+ let admission = this.#heldLayerStates.get(streamKey);
3886
+ if (admission === void 0) {
3887
+ admission = new HeldLayerAdmission(layers, config.heldLayers);
3888
+ this.#heldLayerStates.set(streamKey, admission);
3776
3889
  }
3777
- let states = this.#heldLayerStates.get(streamKey);
3778
- if (states === void 0) {
3779
- const held = new Set(config.heldLayers ?? [0]);
3780
- states = layers.filter((l) => held.has(l.layer)).map((l) => ({ layer: l.layer, repairTrackName: l.repairTrackName, total: l.rsIdOffset + l.repairSymbols }));
3781
- this.#heldLayerStates.set(streamKey, states);
3782
- }
3783
- const horizon = this.#layerAnchorHorizon(packetId);
3784
- const frontier = this.#sourceFrontiers.get(streamKey)?.sbn;
3785
- const farAhead = frontier !== void 0 && serial32Precedes(frontier, ssStart) && serial32Distance(frontier, ssStart) > horizon;
3786
- for (const state of states) {
3787
- let code;
3788
- if (farAhead) {
3789
- if (rsbLength < state.total) {
3790
- if (state.layer > 0 && repairTrackName === state.repairTrackName) code = "below_own_track_total";
3791
- else if (state.anchor !== void 0 || state.settled) code = "below_anchored_total";
3792
- }
3793
- } else {
3794
- if (state.newest === void 0 || serial32Precedes(state.newest, ssStart)) state.newest = ssStart;
3795
- const stale = (s) => serial32Distance(s, state.newest) > horizon;
3796
- if (state.latestBelow !== void 0 && stale(state.latestBelow)) {
3797
- delete state.latestBelow;
3798
- delete state.latestBelowRsb;
3799
- }
3800
- if (state.anchor !== void 0 && stale(state.anchor)) state.settled = true;
3801
- if (rsbLength < state.total) {
3802
- if (state.layer > 0 && repairTrackName === state.repairTrackName) code = "below_own_track_total";
3803
- else if (stale(ssStart)) continue;
3804
- else if (state.settled || state.anchor !== void 0 && !serial32Precedes(ssStart, state.anchor)) code = "below_anchored_total";
3805
- else if (state.latestBelow === void 0 || serial32Precedes(state.latestBelow, ssStart)) {
3806
- state.latestBelow = ssStart;
3807
- state.latestBelowRsb = rsbLength;
3808
- }
3809
- } else if (!state.settled && !stale(ssStart)) {
3810
- if (state.anchor === void 0 || serial32Precedes(ssStart, state.anchor)) state.anchor = ssStart;
3811
- if (state.latestBelow !== void 0 && !serial32Precedes(state.latestBelow, state.anchor)) {
3812
- code = "below_anchored_total";
3813
- ssStart = state.latestBelow;
3814
- rsbLength = state.latestBelowRsb;
3815
- }
3816
- }
3817
- }
3818
- if (code !== void 0) {
3819
- const reason = {
3820
- code,
3821
- layer: state.layer,
3822
- total: state.total,
3823
- rsbLength,
3824
- ssStart,
3825
- ...state.anchor === void 0 ? {} : { anchor: state.anchor }
3826
- };
3827
- this.#fecFailClosed.set(streamKey, reason);
3828
- this.#onFecFailClosed?.({ ...reason, packetId, catalogTrackName });
3829
- console.warn(
3830
- `[FECManager] FEC failed closed (fec-01 6.3.9) packetId=${packetId} track=${catalogTrackName ?? "-"}: ${JSON.stringify(reason)}`
3831
- );
3832
- return false;
3833
- }
3890
+ const verdict = admission.admit(
3891
+ repairTrackName,
3892
+ ssStart,
3893
+ rsbLength,
3894
+ this.#layerAnchorHorizon(packetId),
3895
+ this.#sourceFrontiers.get(streamKey)?.sbn
3896
+ );
3897
+ if (verdict === "discard") return false;
3898
+ if (verdict !== void 0) {
3899
+ this.#fecFailClosed.set(streamKey, verdict);
3900
+ this.#onFecFailClosed?.({ ...verdict, packetId, catalogTrackName });
3901
+ console.warn(
3902
+ `[FECManager] FEC failed closed (fec-01 6.3.9) packetId=${packetId} track=${catalogTrackName ?? "-"}: ${JSON.stringify(verdict)}`
3903
+ );
3904
+ return false;
3834
3905
  }
3835
3906
  return true;
3836
3907
  }
@@ -3840,15 +3911,13 @@ var FECManager = class _FECManager {
3840
3911
  * times K, capped at 2^30 so compared serials stay inside one half-window.
3841
3912
  */
3842
3913
  #layerAnchorHorizon(packetId) {
3843
- const cap = 1073741824;
3844
3914
  let blocks;
3845
3915
  try {
3846
3916
  blocks = this.isoRetentionBlocksForPacket(packetId);
3847
3917
  } catch {
3848
3918
  blocks = void 0;
3849
3919
  }
3850
- const k = this.#trackConfigs.get(packetId)?.k ?? 0;
3851
- return blocks === void 0 || k <= 0 ? cap : Math.min(cap, blocks * k);
3920
+ return heldLayerAnchorHorizon(blocks, this.#trackConfigs.get(packetId)?.k ?? 0);
3852
3921
  }
3853
3922
  /**
3854
3923
  * Report each stream whose FEC fails closed at runtime (fec-01 6.3.9), once,
@@ -4088,6 +4157,33 @@ var FECManager = class _FECManager {
4088
4157
  }
4089
4158
  queueMicrotask(() => this.#syncDecoderBlockOwners.delete(key));
4090
4159
  }
4160
+ /**
4161
+ * Run `fn` with `receivedAtMs` (performance.now() clock) as the receipt
4162
+ * time of what it feeds. Within a consumer the bc-provenance profile
4163
+ * governs, a datagram held on a miss and admitted later keeps its receipt
4164
+ * time (fec-01 9): it anchors its block's ts and arms the block's
4165
+ * deadlines from then, never later than they are already armed.
4166
+ */
4167
+ withReceiptTime(receivedAtMs, fn) {
4168
+ const outer = this.#receiptAtMs;
4169
+ this.#receiptAtMs = receivedAtMs;
4170
+ try {
4171
+ fn();
4172
+ } finally {
4173
+ this.#receiptAtMs = outer;
4174
+ }
4175
+ }
4176
+ #receiptNow() {
4177
+ return this.#receiptAtMs ?? performance.now();
4178
+ }
4179
+ /**
4180
+ * A held packet admitted late arms from its (earlier) receipt time; that
4181
+ * never pulls in a deadline later activity already armed. Outside a
4182
+ * receipt scope a re-arm replaces the deadline, as a narrower bound may.
4183
+ */
4184
+ #notEarlierUnderReceipt(deadlineMs, armedMs) {
4185
+ return this.#receiptAtMs === void 0 || armedMs === void 0 ? deadlineMs : Math.max(deadlineMs, armedMs);
4186
+ }
4091
4187
  /** Refresh deadlines after accepted block activity. */
4092
4188
  noteBlockActivity(sbn, packetId, catalogTrackName, sourceProgress = false) {
4093
4189
  if (!this.#trackConfigs.has(packetId)) return;
@@ -4266,6 +4362,7 @@ var FECManager = class _FECManager {
4266
4362
  this.#cleanlyCompletedBlocks.clear();
4267
4363
  this.#repairRequestedBlocks.clear();
4268
4364
  this.#workerRecoveredBlocks.clear();
4365
+ this.#refusedRecoveries.clear();
4269
4366
  this.#syncDecoderBlockOwners.clear();
4270
4367
  this.#startupAlignedPackets.clear();
4271
4368
  this.#startupPartialBlocks.clear();