@uwmd/core 1.3.0 → 1.5.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.
Files changed (47) hide show
  1. package/dist/browser.d.ts +10 -4
  2. package/dist/browser.d.ts.map +1 -1
  3. package/dist/browser.js +5 -2
  4. package/dist/browser.js.map +1 -1
  5. package/dist/cascade.d.ts +60 -6
  6. package/dist/cascade.d.ts.map +1 -1
  7. package/dist/cascade.js +93 -14
  8. package/dist/cascade.js.map +1 -1
  9. package/dist/cli.js +269 -11
  10. package/dist/cli.js.map +1 -1
  11. package/dist/composition.d.ts +182 -0
  12. package/dist/composition.d.ts.map +1 -0
  13. package/dist/composition.js +536 -0
  14. package/dist/composition.js.map +1 -0
  15. package/dist/context.js +23 -23
  16. package/dist/index.d.ts +10 -4
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +5 -2
  19. package/dist/index.js.map +1 -1
  20. package/dist/lite-bridge.d.ts +9 -0
  21. package/dist/lite-bridge.d.ts.map +1 -1
  22. package/dist/lite-bridge.js +44 -5
  23. package/dist/lite-bridge.js.map +1 -1
  24. package/dist/lite.js +37 -1
  25. package/dist/lite.js.map +1 -1
  26. package/dist/market-data.d.ts +134 -0
  27. package/dist/market-data.d.ts.map +1 -0
  28. package/dist/market-data.js +292 -0
  29. package/dist/market-data.js.map +1 -0
  30. package/dist/protocol.d.ts +57 -8
  31. package/dist/protocol.d.ts.map +1 -1
  32. package/dist/protocol.js +74 -4
  33. package/dist/protocol.js.map +1 -1
  34. package/dist/receipts.d.ts +189 -9
  35. package/dist/receipts.d.ts.map +1 -1
  36. package/dist/receipts.js +373 -14
  37. package/dist/receipts.js.map +1 -1
  38. package/dist/report.js +165 -165
  39. package/dist/types.d.ts +54 -1
  40. package/dist/types.d.ts.map +1 -1
  41. package/dist/types.js.map +1 -1
  42. package/dist/validator.d.ts.map +1 -1
  43. package/dist/validator.js +17 -0
  44. package/dist/validator.js.map +1 -1
  45. package/dist/version.d.ts +1 -1
  46. package/dist/version.js +1 -1
  47. package/package.json +1 -1
package/dist/receipts.js CHANGED
@@ -28,9 +28,39 @@ import { detectUWSourceRepresentation, UW_LITE_REPRESENTATION_ID, UW_LITE_REPRES
28
28
  import { validateUWFile } from './validator.js';
29
29
  import { CORE_PACKAGE_NAME, CORE_VERSION } from './version.js';
30
30
  // ─── Constants ───────────────────────────────────────────────────────────────
31
- export const UW_RECEIPT_VERSION = '1.0';
31
+ /**
32
+ * Receipt format version.
33
+ *
34
+ * **1.1 covers two RFCs, and bumps only once.** RFC 0021 (rollup verification)
35
+ * and RFC 0022 (`inputs_provenance`) were accepted the same day and both amend
36
+ * the format RFC 0016 owns. Each RFC records the same rule — whichever is
37
+ * implemented first establishes the extension section, the second amends it —
38
+ * because two independent bumps for two simultaneously-accepted RFCs would make
39
+ * the version number meaningless. RFC 0022 landed first; RFC 0021's rollup
40
+ * entries are additive within the section established here and MUST NOT bump
41
+ * this again. See `UW_RECEIPT_v1.md` §10.
42
+ */
43
+ export const UW_RECEIPT_VERSION = '1.1';
44
+ /**
45
+ * Receipt versions this verifier can read. A 1.0 receipt is still valid: every
46
+ * 1.1 addition is optional, so absence means "the issuer stated nothing", not
47
+ * "non-conforming".
48
+ */
49
+ export const SUPPORTED_RECEIPT_VERSIONS = Object.freeze(['1.0', '1.1']);
32
50
  /** Canonicalization used for the Lite representation (UW_LITE_SPEC §6). */
33
51
  export const UW_LITE_CANONICALIZATION = 'uw-lite-financial';
52
+ /**
53
+ * Version of the *canonicalization rules*, which is not the version of the Lite
54
+ * *grammar* — the two move independently, and this field previously carried
55
+ * `UW_LITE_REPRESENTATION_VERSION`, which conflated them. RFC 0025 changed how a
56
+ * percent display normalizes without changing a single production of the
57
+ * grammar: `5.51%` parsed before and parses now, it just canonicalizes to a
58
+ * different double. Stamping the grammar version would have claimed a source
59
+ * change that did not happen, and left the change that *did* happen unstamped.
60
+ * `UWX_CANONICALIZATION_VERSION` is separate for the same reason.
61
+ */
62
+ export const UW_LITE_CANONICALIZATION_VERSION = '1.1';
63
+ export const UWX_CANONICALIZATION_VERSION = '1.0';
34
64
  /** Canonicalization used for structured records (Document Envelope 1.0). */
35
65
  export const UWX_CANONICALIZATION = 'uw-envelope-semantic';
36
66
  /**
@@ -47,6 +77,8 @@ export const RECEIPT_RESULT_TOLERANCE = 1e-6;
47
77
  /** The policy set a receipt names when the host applies core's built-in rules. */
48
78
  export const BUILTIN_POLICY_SET = 'builtin';
49
79
  export const BUILTIN_POLICY_SET_VERSION = '1.0';
80
+ /** `sha256:<64 lowercase hex>` — the only digest spelling a receipt may carry. */
81
+ const DIGEST_PATTERN = /^sha256:[0-9a-f]{64}$/;
50
82
  /** Typed error, consistent with `ProtocolError` / `CalcError` / `ExcelEmitError`. */
51
83
  export class ReceiptError extends Error {
52
84
  code;
@@ -84,7 +116,7 @@ export async function resolveReceiptSubject(content, options = {}) {
84
116
  representation: UW_LITE_REPRESENTATION_ID,
85
117
  representation_version: UW_LITE_REPRESENTATION_VERSION,
86
118
  canonicalization: UW_LITE_CANONICALIZATION,
87
- canonicalization_version: UW_LITE_REPRESENTATION_VERSION,
119
+ canonicalization_version: UW_LITE_CANONICALIZATION_VERSION,
88
120
  digest: await digestOf(canonical),
89
121
  },
90
122
  canonical,
@@ -106,7 +138,7 @@ export async function resolveReceiptSubject(content, options = {}) {
106
138
  representation: UWX_REPRESENTATION_ID,
107
139
  representation_version: UWX_REPRESENTATION_VERSION,
108
140
  canonicalization: UWX_CANONICALIZATION,
109
- canonicalization_version: '1.0',
141
+ canonicalization_version: UWX_CANONICALIZATION_VERSION,
110
142
  digest: await digestOf(canonical),
111
143
  },
112
144
  canonical,
@@ -186,6 +218,14 @@ export async function issueReceipt(content, options = {}) {
186
218
  warnings: validation.warnings.length,
187
219
  },
188
220
  },
221
+ // Sorted by document_id so re-issuance over an unchanged record reproduces
222
+ // byte-identical bytes regardless of the order the host listed them in —
223
+ // the re-issuance-stability invariant the conformance suite asserts.
224
+ ...(options.inputs_provenance && options.inputs_provenance.length > 0
225
+ ? {
226
+ inputs_provenance: [...options.inputs_provenance].sort((a, b) => a.document_id < b.document_id ? -1 : a.document_id > b.document_id ? 1 : 0),
227
+ }
228
+ : {}),
189
229
  issued_at: options.issued_at ?? new Date().toISOString(),
190
230
  issuer: options.issuer ?? `${CORE_PACKAGE_NAME}@${CORE_VERSION}`,
191
231
  signature: null,
@@ -215,15 +255,28 @@ export function receiptSigningPayload(receipt) {
215
255
  * Reports exactly one of three verdicts and never collapses `unverifiable` into
216
256
  * either of the others. Precedence:
217
257
  *
218
- * 1. A digest mismatch is decisive — the record changed. `failed`.
219
- * 2. Otherwise, anything this verifier cannot decide (unknown pack, pack
220
- * version it does not hold, a signature with no backend) `unverifiable`.
221
- * 3. Otherwise, recomputation disagreement `failed`, unless the issuing
258
+ * 1. A digest mismatch is decisive — the record changed. `failed` — unless the
259
+ * receipt was canonicalized under different rules than this verifier
260
+ * applies, in which case the two digests were never comparable and the
261
+ * disagreement is attributable to the rules rather than to the record:
262
+ * `unverifiable` (RCP-10). This mirrors the engine-identity carve-out at
263
+ * step 3, and exists for the same reason RFC 0023 gave — a verifier must
264
+ * not report corruption when the only thing that changed is its own
265
+ * arithmetic. See RFC 0025.
266
+ * 2. A referenced input that resolves but whose digest disagrees is also
267
+ * decisive — the observation set or child record changed after issuance.
268
+ * `failed` (RCP-12). Placed here, above the indeterminate group, because a
269
+ * reference the verifier *does* hold and *can* compare is real evidence,
270
+ * and burying it under a later step would let an unknown pack mask it.
271
+ * 3. Otherwise, anything this verifier cannot decide (unknown pack, pack
272
+ * version it does not hold, a signature with no backend, or a referenced
273
+ * input it does not hold — RCP-11) → `unverifiable`.
274
+ * 4. Otherwise, recomputation disagreement → `failed`, unless the issuing
222
275
  * engine identity (name *and* version) differs from this verifier's, in
223
276
  * which case the disagreement is attributable to the engine and the
224
277
  * verdict is `unverifiable` (RFC 0016 open question, resolved in
225
278
  * `spec/UW_RECEIPT_v1.md` §5).
226
- * 4. Otherwise `verified`.
279
+ * 5. Otherwise `verified`.
227
280
  *
228
281
  * The verifier always recomputes; `results_digest` is checked only as a cheap
229
282
  * corruption signal and never authorizes skipping the recomputation.
@@ -251,8 +304,24 @@ export async function verifyReceipt(receipt, content, options = {}) {
251
304
  ],
252
305
  };
253
306
  }
254
- // 1 — digest. Decisive on mismatch.
307
+ // 1 — digest. Decisive on mismatch, but only between comparable digests: two
308
+ // canonicalization versions can disagree about a document neither side
309
+ // touched, so the version is checked before the mismatch is attributed.
255
310
  if (resolved.subject.digest !== receipt.subject.digest) {
311
+ if (resolved.subject.canonicalization_version !== receipt.subject.canonicalization_version) {
312
+ return {
313
+ verdict: 'unverifiable',
314
+ issues: [
315
+ {
316
+ code: 'RCP-10',
317
+ severity: 'indeterminate',
318
+ message: `The receipt was canonicalized under '${receipt.subject.canonicalization}' version ${receipt.subject.canonicalization_version}; this verifier applies version ${resolved.subject.canonicalization_version}. The digests are not comparable, so this is not evidence the record changed.`,
319
+ expected: receipt.subject.digest,
320
+ actual: resolved.subject.digest,
321
+ },
322
+ ],
323
+ };
324
+ }
256
325
  return {
257
326
  verdict: 'failed',
258
327
  issues: [
@@ -266,7 +335,43 @@ export async function verifyReceipt(receipt, content, options = {}) {
266
335
  ],
267
336
  };
268
337
  }
269
- // 2 — can this verifier decide at all?
338
+ // 2 — referenced inputs (receipt format 1.1). A reference we hold and can
339
+ // compare is decisive; one we do not hold is indeterminate, and the two must
340
+ // not be collapsed. Held references are checked first so a mutated
341
+ // observation set is not masked by an unrelated missing one.
342
+ const references = receipt.inputs_provenance ?? [];
343
+ const held = options.inputs ?? {};
344
+ const unresolved = [];
345
+ for (const reference of references) {
346
+ const actual = held[reference.document_id];
347
+ if (actual === undefined) {
348
+ unresolved.push(reference);
349
+ continue;
350
+ }
351
+ if (actual !== reference.digest) {
352
+ return {
353
+ verdict: 'failed',
354
+ issues: [
355
+ {
356
+ code: 'RCP-12',
357
+ severity: 'failure',
358
+ message: `The ${reference.source} input '${reference.document_id}'${reference.as_of ? ` (as of ${reference.as_of})` : ''} has changed since the receipt was issued, so the stated results no longer follow from the inputs named.`,
359
+ expected: reference.digest,
360
+ actual,
361
+ },
362
+ ],
363
+ };
364
+ }
365
+ }
366
+ for (const reference of unresolved) {
367
+ issues.push({
368
+ code: 'RCP-11',
369
+ severity: 'indeterminate',
370
+ message: `This verifier does not hold the ${reference.source} input '${reference.document_id}'${reference.as_of ? ` (as of ${reference.as_of})` : ''}, so it cannot confirm the inputs the computation used. This is not evidence the record changed.`,
371
+ expected: reference.digest,
372
+ });
373
+ }
374
+ // 3 — can this verifier decide at all?
270
375
  const pack = lookupPack(receipt.computation.pack, options.packs);
271
376
  if (!pack) {
272
377
  issues.push({
@@ -294,7 +399,7 @@ export async function verifyReceipt(receipt, content, options = {}) {
294
399
  if (issues.some((issue) => issue.severity === 'indeterminate')) {
295
400
  return { verdict: 'unverifiable', issues };
296
401
  }
297
- // 3 — recompute. `pack` is non-null here: a null pack produced RCP-05 above.
402
+ // 4 — recompute. `pack` is non-null here: a null pack produced RCP-05 above.
298
403
  const resolvedPack = pack;
299
404
  let recomputed;
300
405
  try {
@@ -462,6 +567,225 @@ function valuesAgree(stated, actual) {
462
567
  return stated === actual;
463
568
  }
464
569
  // ─── Shape validation ────────────────────────────────────────────────────────
570
+ // ─── Rollup receipts (RFC 0021 §6) ───────────────────────────────────────────
571
+ //
572
+ // A composite states aggregate figures. It does not compute them in the calc
573
+ // engine, because the Tier-3 sandbox has no iteration and no array indexing —
574
+ // RFC 0019 hit exactly this wall for `mixed_use` components, and a portfolio
575
+ // total over N assets is the same problem at a different scale.
576
+ //
577
+ // Rather than change the sandbox, the verifier evaluates a fixed, tiny,
578
+ // non-extensible aggregation vocabulary over the named children. Nothing here
579
+ // lets a module or a document author introduce a new aggregation, and nothing
580
+ // here makes the Tier-3 evaluator iterate. If a general aggregation primitive
581
+ // ever lands, it supersedes this rather than sitting beside it.
582
+ /** The complete permitted set. Deliberately closed. */
583
+ export const ROLLUP_FUNCTIONS = Object.freeze([
584
+ 'sum',
585
+ 'count',
586
+ 'min',
587
+ 'max',
588
+ 'weighted_average',
589
+ ]);
590
+ /** The section a composite carries its stated aggregates in. */
591
+ export const PORTFOLIO_ROLLUP_SECTION = 'portfolio_rollup';
592
+ export function validateRollupAggregate(candidate) {
593
+ const errors = [];
594
+ if (typeof candidate !== 'object' || candidate === null || Array.isArray(candidate)) {
595
+ return [{ category: 'validate', code: 'COMP-ROLLUP-DISAGREES', message: 'Aggregate must be an object.' }];
596
+ }
597
+ const a = candidate;
598
+ const fail = (message, pointer) => {
599
+ errors.push({ category: 'validate', code: 'COMP-ROLLUP-DISAGREES', message, ...(pointer ? { pointer } : {}) });
600
+ };
601
+ if (typeof a.id !== 'string' || a.id.length === 0)
602
+ fail('Aggregate requires an id.', 'id');
603
+ if (!ROLLUP_FUNCTIONS.includes(a.fn)) {
604
+ fail(`fn must be one of ${ROLLUP_FUNCTIONS.join(', ')}; got '${String(a.fn)}'.`, 'fn');
605
+ }
606
+ if (typeof a.over !== 'string' || a.over.length === 0)
607
+ fail('Aggregate requires an over path.', 'over');
608
+ if (!Array.isArray(a.members) || a.members.length === 0) {
609
+ fail('Aggregate requires a non-empty members array.', 'members');
610
+ }
611
+ else if (new Set(a.members).size !== a.members.length) {
612
+ // A member counted twice would inflate a sum, and a portfolio total is
613
+ // exactly the number nobody re-checks by hand.
614
+ fail('Aggregate names a member more than once.', 'members');
615
+ }
616
+ if (typeof a.value !== 'number' || !Number.isFinite(a.value)) {
617
+ fail('Aggregate requires a finite stated value.', 'value');
618
+ }
619
+ if (a.fn === 'weighted_average') {
620
+ if (typeof a.weight_by !== 'string' || a.weight_by.length === 0) {
621
+ fail('weighted_average requires weight_by.', 'weight_by');
622
+ }
623
+ }
624
+ else if (a.weight_by !== undefined) {
625
+ fail(`weight_by is only meaningful for weighted_average, not '${String(a.fn)}'.`, 'weight_by');
626
+ }
627
+ return errors;
628
+ }
629
+ /**
630
+ * Evaluate one aggregate over member values.
631
+ *
632
+ * Returns `null` when it cannot be evaluated — a missing member or a
633
+ * non-numeric value. Null is *not* zero: a portfolio NOI that silently treats
634
+ * an unreadable child as contributing nothing is the failure this whole design
635
+ * exists to prevent.
636
+ */
637
+ export function evaluateRollup(aggregate, values, weights) {
638
+ const xs = [];
639
+ for (const member of aggregate.members) {
640
+ const v = values.get(member);
641
+ if (v === undefined || !Number.isFinite(v)) {
642
+ // `count` is not exempt: counting members whose value could not be read
643
+ // would report a count over a set the verifier never actually saw.
644
+ return null;
645
+ }
646
+ xs.push(v);
647
+ }
648
+ if (xs.length === 0)
649
+ return null;
650
+ switch (aggregate.fn) {
651
+ case 'sum':
652
+ return xs.reduce((acc, x) => acc + x, 0);
653
+ case 'count':
654
+ return xs.length;
655
+ case 'min':
656
+ return Math.min(...xs);
657
+ case 'max':
658
+ return Math.max(...xs);
659
+ case 'weighted_average': {
660
+ if (!weights)
661
+ return null;
662
+ let numerator = 0;
663
+ let denominator = 0;
664
+ for (const [i, member] of aggregate.members.entries()) {
665
+ const w = weights.get(member);
666
+ if (w === undefined || !Number.isFinite(w))
667
+ return null;
668
+ numerator += xs[i] * w;
669
+ denominator += w;
670
+ }
671
+ // Zero total weight has no meaningful average; refuse rather than divide.
672
+ if (denominator === 0)
673
+ return null;
674
+ return numerator / denominator;
675
+ }
676
+ }
677
+ }
678
+ /**
679
+ * Stage 2 of rollup verification: recompute each stated aggregate over exactly
680
+ * the members it names.
681
+ *
682
+ * Stage 1 — verifying each child's own receipt — is existing behaviour applied
683
+ * per child, so the caller performs it and passes the verdicts in. Splitting it
684
+ * this way keeps this function synchronous and free of I/O, and lets a host
685
+ * that already verified its children reuse that work.
686
+ *
687
+ * Verdict precedence mirrors `verifyReceipt`, and for the same reasons:
688
+ *
689
+ * - any child `failed` → `failed` (the parent's total rests on it)
690
+ * - any child `unverifiable`,
691
+ * or a named member absent → `unverifiable`
692
+ * - a stated aggregate disagrees → `failed` (`COMP-ROLLUP-DISAGREES`)
693
+ * - otherwise → `verified`
694
+ *
695
+ * A verified rollup means the stated total follows deterministically from those
696
+ * child records as they stand. It does **not** mean the children are complete,
697
+ * that the portfolio contains every asset it should, or that any input is true.
698
+ */
699
+ export function verifyRollup(aggregates, members) {
700
+ const issues = [];
701
+ const results = [];
702
+ const byId = new Map(members.map((m) => [m.document_id, m]));
703
+ for (const aggregate of aggregates) {
704
+ const structural = validateRollupAggregate(aggregate);
705
+ if (structural.length > 0) {
706
+ issues.push({
707
+ code: 'RCP-02',
708
+ severity: 'failure',
709
+ message: `Aggregate '${String(aggregate.id)}' is malformed: ${structural.map((e) => e.message).join('; ')}`,
710
+ });
711
+ }
712
+ }
713
+ if (issues.length > 0)
714
+ return { verdict: 'failed', issues, aggregates: results };
715
+ // Stage 1 verdicts, decided before any arithmetic: a total computed over a
716
+ // child whose own receipt failed is not worth reporting as agreeing.
717
+ let sawUnverifiable = false;
718
+ for (const member of members) {
719
+ if (member.verdict === 'failed') {
720
+ return {
721
+ verdict: 'failed',
722
+ issues: [{
723
+ code: 'RCP-03',
724
+ severity: 'failure',
725
+ message: `Child record '${member.document_id}' failed its own receipt verification, so no aggregate over it can be trusted.`,
726
+ }],
727
+ aggregates: results,
728
+ };
729
+ }
730
+ if (member.verdict === 'unverifiable')
731
+ sawUnverifiable = true;
732
+ }
733
+ for (const aggregate of aggregates) {
734
+ const values = new Map();
735
+ const weights = new Map();
736
+ let missing = null;
737
+ for (const id of aggregate.members) {
738
+ const member = byId.get(id);
739
+ if (!member || member.value === null || member.value === undefined) {
740
+ missing = id;
741
+ break;
742
+ }
743
+ values.set(id, member.value);
744
+ if (aggregate.fn === 'weighted_average') {
745
+ if (member.weight === null || member.weight === undefined) {
746
+ missing = id;
747
+ break;
748
+ }
749
+ weights.set(id, member.weight);
750
+ }
751
+ }
752
+ if (missing !== null) {
753
+ issues.push({
754
+ code: 'RCP-11',
755
+ severity: 'indeterminate',
756
+ message: `Aggregate '${aggregate.id}' names member '${missing}', whose value at '${aggregate.over}' is not available to this verifier.`,
757
+ });
758
+ results.push({ id: aggregate.id, stated: aggregate.value, recomputed: null, agrees: false });
759
+ continue;
760
+ }
761
+ const recomputed = evaluateRollup(aggregate, values, weights);
762
+ const agrees = recomputed !== null && valuesAgree(aggregate.value, recomputed);
763
+ results.push({ id: aggregate.id, stated: aggregate.value, recomputed, agrees });
764
+ if (!agrees) {
765
+ issues.push({
766
+ code: 'COMP-ROLLUP-DISAGREES',
767
+ severity: 'failure',
768
+ message: `Aggregate '${aggregate.id}' states ${aggregate.value} but ${aggregate.fn} over ${aggregate.members.length} member(s) at '${aggregate.over}' recomputes to ${recomputed === null ? 'nothing evaluable' : recomputed}.`,
769
+ expected: String(aggregate.value),
770
+ actual: recomputed === null ? 'unevaluable' : String(recomputed),
771
+ });
772
+ }
773
+ }
774
+ if (issues.some((i) => i.severity === 'failure')) {
775
+ return { verdict: 'failed', issues, aggregates: results };
776
+ }
777
+ if (sawUnverifiable || issues.some((i) => i.severity === 'indeterminate')) {
778
+ if (!issues.some((i) => i.severity === 'indeterminate')) {
779
+ issues.push({
780
+ code: 'RCP-11',
781
+ severity: 'indeterminate',
782
+ message: 'At least one child record could not be verified, so the rollup over it is undecided.',
783
+ });
784
+ }
785
+ return { verdict: 'unverifiable', issues, aggregates: results };
786
+ }
787
+ return { verdict: 'verified', issues, aggregates: results };
788
+ }
465
789
  /** Structural check mirroring `spec/schemas/uw-receipt.schema.json`. */
466
790
  export function assertUWReceipt(value) {
467
791
  const fail = (message) => {
@@ -470,8 +794,12 @@ export function assertUWReceipt(value) {
470
794
  if (typeof value !== 'object' || value === null)
471
795
  fail('A receipt must be an object.');
472
796
  const receipt = value;
473
- if (receipt['receipt_version'] !== UW_RECEIPT_VERSION) {
474
- fail(`Unsupported receipt_version '${String(receipt['receipt_version'])}'.`);
797
+ // Accepts every supported version, not just the current one: each 1.1
798
+ // addition is optional, so a 1.0 receipt is still a valid receipt and
799
+ // refusing to read it would strand every receipt issued before this release.
800
+ if (typeof receipt['receipt_version'] !== 'string' ||
801
+ !SUPPORTED_RECEIPT_VERSIONS.includes(receipt['receipt_version'])) {
802
+ fail(`Unsupported receipt_version '${String(receipt['receipt_version'])}' (supported: ${SUPPORTED_RECEIPT_VERSIONS.join(', ')}).`);
475
803
  }
476
804
  const subject = receipt['subject'];
477
805
  if (typeof subject !== 'object' || subject === null)
@@ -487,7 +815,7 @@ export function assertUWReceipt(value) {
487
815
  if (typeof s[key] !== 'string')
488
816
  fail(`receipt.subject.${key} must be a string.`);
489
817
  }
490
- if (!/^sha256:[0-9a-f]{64}$/.test(s['digest'])) {
818
+ if (!DIGEST_PATTERN.test(s['digest'])) {
491
819
  fail('receipt.subject.digest must be sha256 followed by 64 lowercase hex characters.');
492
820
  }
493
821
  const computation = receipt['computation'];
@@ -536,6 +864,37 @@ export function assertUWReceipt(value) {
536
864
  fail(`receipt.policy.validation.${key} must be an integer.`);
537
865
  }
538
866
  }
867
+ // inputs_provenance (1.1). Optional, but malformed-if-present: a reference
868
+ // with no digest cannot be checked, and silently dropping it would turn an
869
+ // unverifiable receipt into an apparently clean one.
870
+ const provenance = receipt['inputs_provenance'];
871
+ if (provenance !== undefined) {
872
+ if (!Array.isArray(provenance))
873
+ fail('receipt.inputs_provenance must be an array.');
874
+ const seen = new Set();
875
+ for (const [i, raw] of provenance.entries()) {
876
+ if (typeof raw !== 'object' || raw === null) {
877
+ fail(`receipt.inputs_provenance[${i}] must be an object.`);
878
+ }
879
+ const ref = raw;
880
+ for (const key of ['source', 'document_id', 'digest']) {
881
+ if (typeof ref[key] !== 'string' || ref[key].length === 0) {
882
+ fail(`receipt.inputs_provenance[${i}].${key} must be a non-empty string.`);
883
+ }
884
+ }
885
+ if (!DIGEST_PATTERN.test(ref['digest'])) {
886
+ fail(`receipt.inputs_provenance[${i}].digest must be 'sha256:<64 lowercase hex>'.`);
887
+ }
888
+ if (ref['as_of'] !== undefined && typeof ref['as_of'] !== 'string') {
889
+ fail(`receipt.inputs_provenance[${i}].as_of must be a string when present.`);
890
+ }
891
+ // Two entries for one id would make the digest check order-dependent.
892
+ const id = ref['document_id'];
893
+ if (seen.has(id))
894
+ fail(`receipt.inputs_provenance names '${id}' more than once.`);
895
+ seen.add(id);
896
+ }
897
+ }
539
898
  if (typeof receipt['issued_at'] !== 'string')
540
899
  fail('receipt.issued_at must be a string.');
541
900
  if (typeof receipt['issuer'] !== 'string')
@@ -1 +1 @@
1
- {"version":3,"file":"receipts.js","sourceRoot":"","sources":["../src/receipts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"receipts.js","sourceRoot":"","sources":["../src/receipts.ts"],"names":[],"mappings":"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"}