@actuarial-ts/compliance 0.6.0 → 0.7.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 (83) hide show
  1. package/README.md +19 -9
  2. package/dist/bundle.d.ts +1 -1
  3. package/dist/bundle.d.ts.map +1 -1
  4. package/dist/bundle.js +163 -21
  5. package/dist/bundle.js.map +1 -1
  6. package/dist/diagnosticArtifactStream.d.ts +30 -0
  7. package/dist/diagnosticArtifactStream.d.ts.map +1 -0
  8. package/dist/diagnosticArtifactStream.js +128 -0
  9. package/dist/diagnosticArtifactStream.js.map +1 -0
  10. package/dist/diagnosticByteSource.d.ts +10 -0
  11. package/dist/diagnosticByteSource.d.ts.map +1 -0
  12. package/dist/diagnosticByteSource.js +70 -0
  13. package/dist/diagnosticByteSource.js.map +1 -0
  14. package/dist/diagnosticByteView.d.ts +3 -0
  15. package/dist/diagnosticByteView.d.ts.map +1 -0
  16. package/dist/diagnosticByteView.js +27 -0
  17. package/dist/diagnosticByteView.js.map +1 -0
  18. package/dist/diagnosticCompactRun.d.ts +43 -0
  19. package/dist/diagnosticCompactRun.d.ts.map +1 -0
  20. package/dist/diagnosticCompactRun.js +253 -0
  21. package/dist/diagnosticCompactRun.js.map +1 -0
  22. package/dist/diagnosticReplayFrames.d.ts +10 -0
  23. package/dist/diagnosticReplayFrames.d.ts.map +1 -0
  24. package/dist/diagnosticReplayFrames.js +99 -0
  25. package/dist/diagnosticReplayFrames.js.map +1 -0
  26. package/dist/diagnosticReplayProtocol.d.ts +17 -0
  27. package/dist/diagnosticReplayProtocol.d.ts.map +1 -0
  28. package/dist/diagnosticReplayProtocol.js +98 -0
  29. package/dist/diagnosticReplayProtocol.js.map +1 -0
  30. package/dist/diagnosticReplayReader.d.ts +41 -0
  31. package/dist/diagnosticReplayReader.d.ts.map +1 -0
  32. package/dist/diagnosticReplayReader.js +346 -0
  33. package/dist/diagnosticReplayReader.js.map +1 -0
  34. package/dist/diagnosticReplayValue.d.ts +34 -0
  35. package/dist/diagnosticReplayValue.d.ts.map +1 -0
  36. package/dist/diagnosticReplayValue.js +269 -0
  37. package/dist/diagnosticReplayValue.js.map +1 -0
  38. package/dist/diagnosticReplayWriter.d.ts +25 -0
  39. package/dist/diagnosticReplayWriter.d.ts.map +1 -0
  40. package/dist/diagnosticReplayWriter.js +148 -0
  41. package/dist/diagnosticReplayWriter.js.map +1 -0
  42. package/dist/diagnosticRun.d.ts +52 -29
  43. package/dist/diagnosticRun.d.ts.map +1 -1
  44. package/dist/diagnosticRun.js +564 -174
  45. package/dist/diagnosticRun.js.map +1 -1
  46. package/dist/diagnosticRunEvidence.d.ts +18 -0
  47. package/dist/diagnosticRunEvidence.d.ts.map +1 -0
  48. package/dist/diagnosticRunEvidence.js +195 -0
  49. package/dist/diagnosticRunEvidence.js.map +1 -0
  50. package/dist/index.d.ts +4 -0
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +4 -0
  53. package/dist/index.js.map +1 -1
  54. package/dist/ledger.d.ts.map +1 -1
  55. package/dist/ledger.js +47 -6
  56. package/dist/ledger.js.map +1 -1
  57. package/dist/metadata.d.ts.map +1 -1
  58. package/dist/metadata.js +27 -3
  59. package/dist/metadata.js.map +1 -1
  60. package/dist/sha256Stream.d.ts +6 -0
  61. package/dist/sha256Stream.d.ts.map +1 -0
  62. package/dist/sha256Stream.js +103 -0
  63. package/dist/sha256Stream.js.map +1 -0
  64. package/dist/version.d.ts +1 -1
  65. package/dist/version.js +1 -1
  66. package/package.json +6 -5
  67. package/src/bundle.ts +272 -32
  68. package/src/diagnosticArtifactStream.ts +148 -0
  69. package/src/diagnosticByteSource.ts +82 -0
  70. package/src/diagnosticByteView.ts +27 -0
  71. package/src/diagnosticCompactRun.ts +462 -0
  72. package/src/diagnosticReplayFrames.ts +99 -0
  73. package/src/diagnosticReplayProtocol.ts +99 -0
  74. package/src/diagnosticReplayReader.ts +428 -0
  75. package/src/diagnosticReplayValue.ts +269 -0
  76. package/src/diagnosticReplayWriter.ts +190 -0
  77. package/src/diagnosticRun.ts +1030 -93
  78. package/src/diagnosticRunEvidence.ts +391 -0
  79. package/src/index.ts +10 -0
  80. package/src/ledger.ts +59 -8
  81. package/src/metadata.ts +48 -7
  82. package/src/sha256Stream.ts +108 -0
  83. package/src/version.ts +1 -1
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Documentation, judgment, provenance, and reproducibility primitives for actuarial-ts. The package is designed to support compliance work under applicable ASOPs; it neither determines compliance nor replaces the actuary’s review.
4
4
 
5
5
  ```bash
6
- npm install @actuarial-ts/compliance@0.6.0 @actuarial-ts/core@0.6.0 @actuarial-ts/data@0.6.0 @actuarial-ts/interchange@0.6.0
6
+ npm install @actuarial-ts/compliance@0.7.0 @actuarial-ts/core@0.7.0 @actuarial-ts/data@0.7.0 @actuarial-ts/interchange@0.7.0
7
7
  ```
8
8
 
9
9
  Node 20+, ESM.
@@ -19,14 +19,16 @@ if (outcome.status !== "completed") throw new Error(`diagnostics blocked at ${ou
19
19
 
20
20
  const provenance = await createDiagnosticRunIdentity({
21
21
  completedRun: outcome,
22
- artifacts: [
22
+ inputArtifacts: [
23
23
  { id: "loss-run", scope: "input", assurance: "sdk-computed", bytes: lossRunBytes },
24
24
  { id: "exposures", scope: "input", assurance: "sdk-computed", bytes: exposureBytes },
25
- { id: "source-archive", scope: "input", assurance: "caller-declared", algorithm: "sha-256", value: archiveSha256, byteLength: archiveByteLength },
26
- { id: "transform-script", scope: "preparation", assurance: "caller-declared", algorithm: "git-sha", value: transformCommit, byteLength: 0 },
25
+ { id: "source-archive", scope: "input", assurance: "caller-declared", algorithm: "sha256", value: archiveSha256 },
27
26
  ],
28
- lineage: [
29
- { artifactId: "loss-run", inputArtifactIds: ["source-archive", "transform-script"] },
27
+ preparationArtifacts: [
28
+ { id: "transform-script", scope: "preparation", assurance: "caller-declared", algorithm: "git-sha", value: transformCommit },
29
+ ],
30
+ preparationLineage: [
31
+ { outputArtifactId: "loss-run", inputArtifactIds: ["source-archive"], transformationArtifactIds: ["transform-script"] },
30
32
  ],
31
33
  });
32
34
 
@@ -34,7 +36,11 @@ const bundle = createBundle({
34
36
  inputs,
35
37
  parameters,
36
38
  results: outcome.result,
37
- sdkVersions: { ...provenance.manifest.packageVersions },
39
+ sdkVersions: {
40
+ "@actuarial-ts/core": provenance.manifest.engine.packages.core,
41
+ "@actuarial-ts/data": provenance.manifest.engine.packages.data,
42
+ "@actuarial-ts/compliance": provenance.manifest.engine.packages.compliance,
43
+ },
38
44
  createdAt: "2026-09-03T00:00:00Z",
39
45
  diagnosticRuns: [provenance],
40
46
  wrap: { triangles: [], selections: [], results: [] },
@@ -47,13 +53,17 @@ The manifest contains the complete normalized definition, preparation identity a
47
53
 
48
54
  The returned `VerifiedDiagnosticRunProvenance` is frozen and registered in private owner state. A cast, clone, or parsed JSON object cannot author a new bundle. Use `verifyDiagnosticRunIdentity(stored, sameRunAndEvidence)` to regenerate and authenticate stored provenance; it reports the first mismatching JSON path and returns regenerated authentic review text rather than trusting stored prose.
49
55
 
50
- Wrapped bundles include one deduplicated typed `diagnostic-definition` document per definition and require the outer SDK versions/generator to agree with every run manifest. FNV-1a/JCS tags are deterministic integrity aids, not cryptographic authentication.
56
+ Wrapped bundles include one deduplicated typed `diagnostic-definition` document per definition and require the outer SDK versions/generator to agree with every run manifest. `verifyBundle` also recompiles serialized definitions and rechecks definition, review, result, run, and binding fingerprints plus the typed definition mirror; merely re-stamping inconsistent JSON cannot make it verify. FNV-1a/JCS tags are deterministic integrity aids, not cryptographic authentication.
51
57
 
52
58
  Material host judgments worth recording in the assumption ledger include amount basis and limit application, expense treatment, missingness, exposure timing, period convention, filters/grouping, communicated scale, and any policy that permits a failed review. Helpers never invent an actuary’s rationale.
53
59
 
54
60
  The package also provides estimate metadata, assumption ledgers, ASOP No. 41 draft disclosure generation, ASOP No. 56 model cards, actual-versus-expected roll-forward, and canonical reproducibility bundles.
55
61
 
56
- See the [formula catalog](https://github.com/yerromnitsuj/actng/blob/v0.6.0/docs/reference/diagnostic-formulas.md) and [migration guide](https://github.com/yerromnitsuj/actng/blob/v0.6.0/docs/migrations/0.6-generalized-diagnostics.md).
62
+ See the [formula catalog](https://github.com/yerromnitsuj/actng/blob/v0.7.0/docs/reference/diagnostic-formulas.md) and [migration guide](https://github.com/yerromnitsuj/actng/blob/v0.7.0/docs/migrations/0.6-generalized-diagnostics.md).
63
+
64
+ ## Compact provenance and replay streams
65
+
66
+ Version 0.7.0 adds separately authenticated compact provenance and a versioned replay stream. They retain complete audit evidence while avoiding archive-sized identity objects/strings; this is not a dataset-capacity certification. In the source checkout, `docs/reference/diagnostic-replay-stream.md` describes the APIs, host resource limits, wire version, independent verification, and assurance boundaries; that reference document is not part of the npm package. Existing eager provenance and interchange BundleDoc APIs remain unchanged.
57
67
 
58
68
  ## License
59
69
 
package/dist/bundle.d.ts CHANGED
@@ -28,7 +28,7 @@
28
28
  import { canonicalJson, fnv1a64 } from "@actuarial-ts/core";
29
29
  import { BundleDoc, MethodResultDoc, SelectionDoc, StochasticResultDoc, TriangleDoc } from "@actuarial-ts/interchange";
30
30
  import type { VerifiedDiagnosticRunProvenance } from "./diagnosticRun.js";
31
- export { ComplianceError, COMPLIANCE_ERROR_CODES, type ComplianceErrorCode } from "./errors.js";
31
+ export { ComplianceError, COMPLIANCE_ERROR_CODES, type ComplianceErrorCode, } from "./errors.js";
32
32
  export { COMPLIANCE_PACKAGE_VERSION } from "./version.js";
33
33
  export { canonicalJson, fnv1a64 };
34
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAIL,SAAS,EACT,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAI1E,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AAElC;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEzC;;;;GAIG;AAIH;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,UAA2B,CAAC;AAE3E;;;;;GAKG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,OAAO,EAAE,CAAC,eAAe,GAAG,mBAAmB,CAAC,EAAE,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAChC,gGAAgG;IAChG,MAAM,EAAE,OAAO,CAAC;IAChB,wFAAwF;IACxF,UAAU,EAAE,OAAO,CAAC;IACpB,qFAAqF;IACrF,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,qHAAqH;IACrH,cAAc,CAAC,EAAE,SAAS,+BAA+B,EAAE,CAAC;CAC7D;AAED,MAAM,WAAW,qBAAqB;IACpC,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,4EAA4E;AAC5E,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE;;;;OAIG;IACH,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GAAG,mBAAmB,CAAC;AACxG,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,CAAC;AAmD9E,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,OAAO,CAAC;IACZ,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACtC;AAyFD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,qBAAqB,GAAG,gBAAgB,EAChD,YAAY,EAAE,OAAO,GACpB,kBAAkB,CAEpB"}
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EACL,aAAa,EACb,OAAO,EAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAKL,SAAS,EACT,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAEV,+BAA+B,EAChC,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AAElC;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEzC;;;;GAIG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,UAA2B,CAAC;AAE3E;;;;;GAKG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,OAAO,EAAE,CAAC,eAAe,GAAG,mBAAmB,CAAC,EAAE,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAChC,gGAAgG;IAChG,MAAM,EAAE,OAAO,CAAC;IAChB,wFAAwF;IACxF,UAAU,EAAE,OAAO,CAAC;IACpB,qFAAqF;IACrF,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,qHAAqH;IACrH,cAAc,CAAC,EAAE,SAAS,+BAA+B,EAAE,CAAC;CAC7D;AAED,MAAM,WAAW,qBAAqB;IACpC,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,4EAA4E;AAC5E,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE;;;;OAIG;IACH,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,iBAAiB,GAAG;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACnD,mBAAmB,CAAC;AACvB,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,CAAC;AA8H9E,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,OAAO,CAAC;IACZ,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACtC;AA4OD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,qBAAqB,GAAG,gBAAgB,EAChD,YAAY,EAAE,OAAO,GACpB,kBAAkB,CAIpB"}
package/dist/bundle.js CHANGED
@@ -25,12 +25,12 @@
25
25
  * ASOP No. 41 (documentation and reproducibility of the analysis);
26
26
  * responsibility for compliance remains with the credentialed actuary.
27
27
  */
28
- import { canonicalJson, fnv1a64 } from "@actuarial-ts/core";
29
- import { INTERCHANGE_SPEC_VERSION, diagnosticDefinitionToDoc, } from "@actuarial-ts/interchange";
30
- import { assertVerifiedDiagnosticRunProvenance, verifiedDefinitionForBundle } from "./diagnosticRun.js";
28
+ import { canonicalJson, fnv1a64, isDiagnosticPlainRecord, } from "@actuarial-ts/core";
29
+ import { INTERCHANGE_SPEC_VERSION, diagnosticDefinitionToDoc, docToDiagnosticDefinition, } from "@actuarial-ts/interchange";
30
+ import { assertVerifiedDiagnosticRunProvenance, serializedDiagnosticRunMismatch, verifiedDefinitionForBundle, } from "./diagnosticRun.js";
31
31
  import { ComplianceError } from "./errors.js";
32
32
  import { COMPLIANCE_PACKAGE_VERSION } from "./version.js";
33
- export { ComplianceError, COMPLIANCE_ERROR_CODES } from "./errors.js";
33
+ export { ComplianceError, COMPLIANCE_ERROR_CODES, } from "./errors.js";
34
34
  export { COMPLIANCE_PACKAGE_VERSION } from "./version.js";
35
35
  export { canonicalJson, fnv1a64 };
36
36
  /**
@@ -59,16 +59,32 @@ export function createBundle(input) {
59
59
  if (input.diagnosticRuns !== undefined) {
60
60
  for (const run of input.diagnosticRuns)
61
61
  assertVerifiedDiagnosticRunProvenance(run);
62
+ const seenBindings = new Set();
63
+ for (const [runIndex, run] of input.diagnosticRuns.entries()) {
64
+ if (seenBindings.has(run.runResultFingerprint))
65
+ throw new ComplianceError("BAD_DIAGNOSTIC_RUN", "Duplicate diagnostic run-result fingerprint", `$.diagnosticRuns[${runIndex}].runResultFingerprint`);
66
+ seenBindings.add(run.runResultFingerprint);
67
+ }
62
68
  if (input.diagnosticRuns.length > 0) {
63
- const expected = input.diagnosticRuns[0].manifest.packageVersions;
69
+ if (!isDiagnosticPlainRecord(input.sdkVersions))
70
+ throw new ComplianceError("BAD_DIAGNOSTIC_RUN", "Diagnostic bundles require a plain SDK-version map", "$.sdkVersions");
71
+ const expected = input.diagnosticRuns[0].manifest.engine.packages;
64
72
  for (const [runIndex, run] of input.diagnosticRuns.entries()) {
65
- if (canonicalJson(run.manifest.packageVersions) !== canonicalJson(expected))
66
- throw new ComplianceError("BAD_DIAGNOSTIC_RUN", "Diagnostic runs disagree on SDK package versions", `$.diagnosticRuns[${runIndex}].manifest.packageVersions`);
73
+ if (canonicalJson(run.manifest.engine.packages) !==
74
+ canonicalJson(expected))
75
+ throw new ComplianceError("BAD_DIAGNOSTIC_RUN", "Diagnostic runs disagree on SDK package versions", `$.diagnosticRuns[${runIndex}].manifest.engine.packages`);
67
76
  }
68
- for (const [name, version] of Object.entries(expected))
77
+ for (const [name, version] of Object.entries({
78
+ "@actuarial-ts/core": expected.core,
79
+ "@actuarial-ts/data": expected.data,
80
+ "@actuarial-ts/compliance": expected.compliance,
81
+ }))
69
82
  if (input.sdkVersions[name] !== version)
70
83
  throw new ComplianceError("BAD_DIAGNOSTIC_RUN", `Outer sdkVersions must record ${name} at ${version}`, `$.sdkVersions.${name}`);
71
- if (input.wrap !== undefined && input.generator !== undefined && (input.generator.name !== "@actuarial-ts/compliance" || input.generator.version !== COMPLIANCE_PACKAGE_VERSION))
84
+ if (input.wrap !== undefined &&
85
+ input.generator !== undefined &&
86
+ (input.generator.name !== "@actuarial-ts/compliance" ||
87
+ input.generator.version !== COMPLIANCE_PACKAGE_VERSION))
72
88
  throw new ComplianceError("BAD_DIAGNOSTIC_RUN", "Wrapped diagnostic bundles require the actual compliance generator stamp", "$.generator");
73
89
  }
74
90
  body["diagnosticRuns"] = input.diagnosticRuns;
@@ -80,27 +96,43 @@ export function createBundle(input) {
80
96
  // The inner record is carried opaquely as the `bundle` segment; the outer
81
97
  // tag is fnv1a64(canonicalJson({ bundle, interchange })) — exactly
82
98
  // interchange's semanticBodyOf for kind "bundle" (spec 3.2).
83
- const bundleSegment = { hash: inner.hash, payload: inner.payload };
99
+ const bundleSegment = {
100
+ hash: inner.hash,
101
+ payload: inner.payload,
102
+ };
84
103
  const definitions = new Map();
85
104
  for (const run of input.diagnosticRuns ?? []) {
86
105
  const compiled = verifiedDefinitionForBundle(run);
87
- definitions.set(run.definitionIdentities.definition, diagnosticDefinitionToDoc(compiled, {
106
+ definitions.set(run.definition.identities.definition, diagnosticDefinitionToDoc(compiled, {
88
107
  createdAt: input.createdAt,
89
- generator: { name: "@actuarial-ts/compliance", version: COMPLIANCE_PACKAGE_VERSION },
108
+ generator: {
109
+ name: "@actuarial-ts/compliance",
110
+ version: COMPLIANCE_PACKAGE_VERSION,
111
+ },
90
112
  }));
91
113
  }
92
114
  const interchange = {
93
115
  triangles: [...input.wrap.triangles],
94
116
  selections: [...input.wrap.selections],
95
117
  results: [...input.wrap.results],
96
- ...(definitions.size === 0 ? {} : { diagnosticDefinitions: [...definitions.values()].sort((a, b) => a.diagnosticDefinition.identities.definition < b.diagnosticDefinition.identities.definition ? -1 : 1) }),
118
+ ...(definitions.size === 0
119
+ ? {}
120
+ : {
121
+ diagnosticDefinitions: [...definitions.values()].sort((a, b) => a.diagnosticDefinition.identities.definition <
122
+ b.diagnosticDefinition.identities.definition
123
+ ? -1
124
+ : 1),
125
+ }),
97
126
  };
98
127
  const wrapped = {
99
128
  interchangeVersion: WRAPPED_BUNDLE_INTERCHANGE_VERSION,
100
129
  kind: "bundle",
101
130
  generator: input.generator
102
131
  ? { ...input.generator }
103
- : { name: "@actuarial-ts/compliance", version: COMPLIANCE_PACKAGE_VERSION },
132
+ : {
133
+ name: "@actuarial-ts/compliance",
134
+ version: COMPLIANCE_PACKAGE_VERSION,
135
+ },
104
136
  createdAt: input.createdAt,
105
137
  bundle: bundleSegment,
106
138
  interchange,
@@ -117,10 +149,13 @@ function isPlainObject(value) {
117
149
  /** First differing path between two canonicalizable structures, or null when equal. */
118
150
  function firstDifference(stored, rerun, path) {
119
151
  if (isPlainObject(stored) && isPlainObject(rerun)) {
120
- const keys = [...new Set([...Object.keys(stored), ...Object.keys(rerun)])].sort();
152
+ const keys = [
153
+ ...new Set([...Object.keys(stored), ...Object.keys(rerun)]),
154
+ ].sort();
121
155
  for (const key of keys) {
122
156
  const keyPath = `${path}.${key}`;
123
- if (!(key in stored) || !(key in rerun))
157
+ if (!Object.prototype.hasOwnProperty.call(stored, key) ||
158
+ !Object.prototype.hasOwnProperty.call(rerun, key))
124
159
  return keyPath;
125
160
  const diff = firstDifference(stored[key], rerun[key], keyPath);
126
161
  if (diff !== null)
@@ -159,12 +194,44 @@ function verifyUnwrapped(bundle, rerunResults) {
159
194
  if (!isPlainObject(stored) || !("results" in stored)) {
160
195
  throw new ComplianceError("BAD_BUNDLE", 'bundle payload has no "results" segment');
161
196
  }
197
+ if (Object.prototype.hasOwnProperty.call(stored, "diagnosticRuns")) {
198
+ if (!Array.isArray(stored["diagnosticRuns"]))
199
+ throw new ComplianceError("BAD_BUNDLE", 'bundle payload "diagnosticRuns" must be an array');
200
+ const seen = new Set();
201
+ for (const [index, run] of stored["diagnosticRuns"].entries()) {
202
+ const path = `$.diagnosticRuns[${index}]`;
203
+ const mismatch = serializedDiagnosticRunMismatch(run, path);
204
+ if (mismatch !== null)
205
+ return { reproduced: false, mismatchPath: mismatch };
206
+ const fingerprint = run["runResultFingerprint"];
207
+ if (seen.has(fingerprint))
208
+ return {
209
+ reproduced: false,
210
+ mismatchPath: `${path}.runResultFingerprint`,
211
+ };
212
+ seen.add(fingerprint);
213
+ const packages = run.manifest.engine
214
+ .packages;
215
+ for (const [name, shortName] of [
216
+ ["@actuarial-ts/core", "core"],
217
+ ["@actuarial-ts/data", "data"],
218
+ ["@actuarial-ts/compliance", "compliance"],
219
+ ]) {
220
+ if (!isPlainObject(stored["sdkVersions"]) ||
221
+ stored["sdkVersions"][name] !== packages?.[shortName])
222
+ return { reproduced: false, mismatchPath: `$.sdkVersions.${name}` };
223
+ }
224
+ }
225
+ }
162
226
  const storedResults = stored["results"];
163
227
  const rerunCanonical = canonicalJson(rerunResults);
164
228
  const storedCanonical = canonicalJson(storedResults);
165
229
  if (rerunCanonical === storedCanonical)
166
230
  return { reproduced: true };
167
- return { reproduced: false, mismatchPath: firstDifference(storedResults, rerunResults, "$") ?? "$" };
231
+ return {
232
+ reproduced: false,
233
+ mismatchPath: firstDifference(storedResults, rerunResults, "$") ?? "$",
234
+ };
168
235
  }
169
236
  function isWrappedBundleDoc(value) {
170
237
  return value.kind === "bundle";
@@ -184,12 +251,85 @@ function verifyWrapped(doc, rerunResults) {
184
251
  // exactly interchange's semanticBodyOf for kind "bundle" (spec 3.2).
185
252
  const expected = fnv1a64(canonicalJson({ bundle: doc.bundle, interchange: doc.interchange }));
186
253
  const actual = typeof doc.integrity === "string" ? doc.integrity : null;
187
- const outerIntegrity = { ok: expected === actual, expected, actual };
254
+ const outerIntegrity = {
255
+ ok: expected === actual,
256
+ expected,
257
+ actual,
258
+ };
188
259
  if (!outerIntegrity.ok) {
189
260
  return { reproduced: false, mismatchPath: "$.integrity", outerIntegrity };
190
261
  }
191
- const inner = { payload: innerRaw["payload"], hash: innerRaw["hash"] };
192
- return { ...verifyUnwrapped(inner, rerunResults), outerIntegrity };
262
+ const inner = {
263
+ payload: innerRaw["payload"],
264
+ hash: innerRaw["hash"],
265
+ };
266
+ const innerResult = verifyUnwrapped(inner, rerunResults);
267
+ if (!innerResult.reproduced)
268
+ return { ...innerResult, outerIntegrity };
269
+ const body = JSON.parse(inner.payload);
270
+ const runs = Array.isArray(body["diagnosticRuns"])
271
+ ? body["diagnosticRuns"]
272
+ : [];
273
+ const docs = doc.interchange
274
+ .diagnosticDefinitions;
275
+ if (runs.length > 0) {
276
+ const packages = runs[0].manifest.engine
277
+ .packages;
278
+ if (doc.generator?.name !== "@actuarial-ts/compliance")
279
+ return {
280
+ reproduced: false,
281
+ mismatchPath: "$.generator.name",
282
+ outerIntegrity,
283
+ };
284
+ if (doc.generator.version !== packages.compliance)
285
+ return {
286
+ reproduced: false,
287
+ mismatchPath: "$.generator.version",
288
+ outerIntegrity,
289
+ };
290
+ if (!Array.isArray(docs))
291
+ return {
292
+ reproduced: false,
293
+ mismatchPath: "$.interchange.diagnosticDefinitions",
294
+ outerIntegrity,
295
+ };
296
+ const expected = new Set(runs.map((run) => run.definition.identities.definition));
297
+ const actual = new Set();
298
+ for (const [index, raw] of docs.entries()) {
299
+ try {
300
+ const document = raw;
301
+ const integrity = docToDiagnosticDefinition(document).definition.definitionIntegrity;
302
+ if (actual.has(integrity))
303
+ return {
304
+ reproduced: false,
305
+ mismatchPath: `$.interchange.diagnosticDefinitions[${index}]`,
306
+ outerIntegrity,
307
+ };
308
+ if (document.generator.name !== doc.generator.name ||
309
+ document.generator.version !== doc.generator.version)
310
+ return {
311
+ reproduced: false,
312
+ mismatchPath: `$.interchange.diagnosticDefinitions[${index}].generator`,
313
+ outerIntegrity,
314
+ };
315
+ actual.add(integrity);
316
+ }
317
+ catch {
318
+ return {
319
+ reproduced: false,
320
+ mismatchPath: `$.interchange.diagnosticDefinitions[${index}]`,
321
+ outerIntegrity,
322
+ };
323
+ }
324
+ }
325
+ if (canonicalJson([...actual].sort()) !== canonicalJson([...expected].sort()))
326
+ return {
327
+ reproduced: false,
328
+ mismatchPath: "$.interchange.diagnosticDefinitions",
329
+ outerIntegrity,
330
+ };
331
+ }
332
+ return { ...innerResult, outerIntegrity };
193
333
  }
194
334
  /**
195
335
  * Verifies a re-run against a bundle: canonicalizes `rerunResults` and
@@ -210,6 +350,8 @@ function verifyWrapped(doc, rerunResults) {
210
350
  * serialized cannot be verified.
211
351
  */
212
352
  export function verifyBundle(bundle, rerunResults) {
213
- return isWrappedBundleDoc(bundle) ? verifyWrapped(bundle, rerunResults) : verifyUnwrapped(bundle, rerunResults);
353
+ return isWrappedBundleDoc(bundle)
354
+ ? verifyWrapped(bundle, rerunResults)
355
+ : verifyUnwrapped(bundle, rerunResults);
214
356
  }
215
357
  //# sourceMappingURL=bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAO1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,qCAAqC,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAA4B,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AAclC;;;;GAIG;AAIH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,wBAAwB,CAAC;AAuF3E,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,IAAI,GAA4B;QACpC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC;IACF,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IAC3D,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,cAAc;YAAE,qCAAqC,CAAC,GAAG,CAAC,CAAC;QACnF,IAAG,KAAK,CAAC,cAAc,CAAC,MAAM,GAAC,CAAC,EAAC,CAAC;YAAA,MAAM,QAAQ,GAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAA,KAAI,MAAM,CAAC,QAAQ,EAAC,GAAG,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,EAAC,CAAC;gBAAA,IAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAG,aAAa,CAAC,QAAQ,CAAC;oBAAC,MAAM,IAAI,eAAe,CAAC,oBAAoB,EAAC,kDAAkD,EAAC,oBAAoB,QAAQ,4BAA4B,CAAC,CAAA;YAAA,CAAC;YAAA,KAAI,MAAM,CAAC,IAAI,EAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAAC,IAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAG,OAAO;oBAAC,MAAM,IAAI,eAAe,CAAC,oBAAoB,EAAC,iCAAiC,IAAI,OAAO,OAAO,EAAE,EAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YAAA,IAAG,KAAK,CAAC,IAAI,KAAG,SAAS,IAAE,KAAK,CAAC,SAAS,KAAG,SAAS,IAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAG,0BAA0B,IAAE,KAAK,CAAC,SAAS,CAAC,OAAO,KAAG,0BAA0B,CAAC;gBAAC,MAAM,IAAI,eAAe,CAAC,oBAAoB,EAAC,0EAA0E,EAAC,aAAa,CAAC,CAAA;QAAA,CAAC;QACv4B,IAAI,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC;IAChD,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,KAAK,GAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IACzE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAE3C,0EAA0E;IAC1E,mEAAmE;IACnE,6DAA6D;IAC7D,MAAM,aAAa,GAA4B,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IAC5F,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmC,CAAC;IAC/D,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC;QAClD,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,UAAU,EAAE,yBAAyB,CAAC,QAAQ,EAAE;YACvF,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,0BAA0B,EAAE;SACrF,CAAC,CAAC,CAAC;IACN,CAAC;IACD,MAAM,WAAW,GAAG;QAClB,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;QACpC,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QACtC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QAChC,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,UAAU,GAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,UAAU,CAAA,CAAC,CAAA,CAAC,CAAC,CAAA,CAAC,CAAA,CAAC,CAAC,EAAE,CAAC;KACpM,CAAC;IACF,MAAM,OAAO,GAAqB;QAChC,kBAAkB,EAAE,kCAAkC;QACtD,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,KAAK,CAAC,SAAS;YACxB,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE;YACxB,CAAC,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,0BAA0B,EAAE;QAC7E,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,aAAa;QACrB,WAAW;QACX,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC;KAC1E,CAAC;IACF,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AA2BD,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,KAAK,GAAY,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACtD,CAAC;AAED,uFAAuF;AACvF,SAAS,eAAe,CAAC,MAAe,EAAE,KAAc,EAAE,IAAY;IACpE,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;YACjC,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC;YACxD,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;YAC/D,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;YACnE,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,MAAM,GAAG,CAAC;IACtE,CAAC;IACD,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED,8EAA8E;AAC9E,SAAS,eAAe,CAAC,MAA6B,EAAE,YAAqB;IAC3E,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,0EAA0E;IAC1E,YAAY;IACZ,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;IACvD,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,eAAe,CAAC,YAAY,EAAE,kCAAkC,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,eAAe,CAAC,YAAY,EAAE,yCAAyC,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,cAAc,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;IACrD,IAAI,cAAc,KAAK,eAAe;QAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACpE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;AACvG,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA+C;IACzE,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ,CAAC;AACzD,CAAC;AAED,oFAAoF;AACpF,SAAS,aAAa,CAAC,GAAqB,EAAE,YAAqB;IACjE,MAAM,QAAQ,GAAY,GAAG,CAAC,MAAM,CAAC;IACrC,IACE,CAAC,aAAa,CAAC,QAAQ,CAAC;QACxB,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,QAAQ;QACvC,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,QAAQ,EACpC,CAAC;QACD,MAAM,IAAI,eAAe,CACvB,YAAY,EACZ,kFAAkF,CACnF,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAC9D,MAAM,IAAI,eAAe,CAAC,YAAY,EAAE,oDAAoD,CAAC,CAAC;IAChG,CAAC;IACD,uEAAuE;IACvE,qEAAqE;IACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9F,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,MAAM,cAAc,GAAwB,EAAE,EAAE,EAAE,QAAQ,KAAK,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC1F,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;IAC5E,CAAC;IACD,MAAM,KAAK,GAA0B,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9F,OAAO,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;AACrE,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAgD,EAChD,YAAqB;IAErB,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAClH,CAAC"}
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { DiagnosticArtifactDigest } from "./diagnosticRun.js";
2
+ export interface DiagnosticArtifactStreamMetadata {
3
+ readonly id: string;
4
+ readonly scope: "input" | "preparation";
5
+ /** Optional completeness check; no digest handle is issued on truncation. */
6
+ readonly expectedByteLength?: number;
7
+ /** Caller-selected resource ceiling, at most Number.MAX_SAFE_INTEGER. */
8
+ readonly maximumByteLength?: number;
9
+ }
10
+ declare const computedArtifactDigestBrand: unique symbol;
11
+ export type ComputedDiagnosticArtifactDigest = Extract<DiagnosticArtifactDigest, {
12
+ assurance: "sdk-computed";
13
+ }> & {
14
+ readonly [computedArtifactDigestBrand]: true;
15
+ };
16
+ /**
17
+ * Hash the bytes actually received, retaining only a bounded chunk copy.
18
+ * The producer owns I/O. A completed handle means SDK-computed content digest,
19
+ * not source authenticity, a signature, or validation of an actuarial run.
20
+ * Shared buffers are refused; bytes are consumed before requesting the next
21
+ * chunk. A changing producer must be checked again against this digest on replay.
22
+ * Cancellation is cooperative between received chunks; the producer should use
23
+ * the same signal to cancel pending I/O. One synchronous chunk is not interrupted.
24
+ */
25
+ export declare function digestDiagnosticArtifactChunks(metadata: DiagnosticArtifactStreamMetadata, chunks: AsyncIterable<Uint8Array> | Iterable<Uint8Array>, options?: {
26
+ readonly signal?: AbortSignal;
27
+ }): Promise<ComputedDiagnosticArtifactDigest>;
28
+ export declare function assertComputedDiagnosticArtifactDigest(value: unknown): asserts value is ComputedDiagnosticArtifactDigest;
29
+ export {};
30
+ //# sourceMappingURL=diagnosticArtifactStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnosticArtifactStream.d.ts","sourceRoot":"","sources":["../src/diagnosticArtifactStream.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAKnE,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC;IACxC,6EAA6E;IAC7E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,yEAAyE;IACzE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AACD,OAAO,CAAC,MAAM,2BAA2B,EAAE,OAAO,MAAM,CAAC;AACzD,MAAM,MAAM,gCAAgC,GAAG,OAAO,CACpD,wBAAwB,EACxB;IAAE,SAAS,EAAE,cAAc,CAAA;CAAE,CAC9B,GAAG;IAAE,QAAQ,CAAC,CAAC,2BAA2B,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAiErD;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CAClD,QAAQ,EAAE,gCAAgC,EAC1C,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,EACxD,OAAO,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GAC9C,OAAO,CAAC,gCAAgC,CAAC,CAuC3C;AAED,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,gCAAgC,CAGnD"}
@@ -0,0 +1,128 @@
1
+ import { diagnosticJsonPreflight, isDiagnosticPlainRecord, isDiagnosticToken, } from "@actuarial-ts/core";
2
+ import { ComplianceError } from "./errors.js";
3
+ import { createSha256 } from "./sha256Stream.js";
4
+ import { diagnosticByteView } from "./diagnosticByteView.js";
5
+ import { consumeDiagnosticByteSource } from "./diagnosticByteSource.js";
6
+ const computed = new WeakSet();
7
+ const signalAborted = Object.getOwnPropertyDescriptor(AbortSignal.prototype, "aborted").get;
8
+ const throwIfAborted = AbortSignal.prototype.throwIfAborted;
9
+ const COPY_SIZE = 65_536;
10
+ function invalid(message, path = "$") {
11
+ throw new ComplianceError("BAD_DIAGNOSTIC_RUN", message, path);
12
+ }
13
+ function ownedMetadata(value) {
14
+ // Read descriptors once. A Proxy must not pass validation with one property
15
+ // value and supply a different value when the final digest is assembled.
16
+ if (!isDiagnosticPlainRecord(value))
17
+ invalid("Artifact metadata must be a plain object");
18
+ const snapshot = Object.create(null);
19
+ for (const key of Reflect.ownKeys(value)) {
20
+ if (typeof key !== "string")
21
+ invalid("Artifact metadata cannot have symbol keys");
22
+ const field = Object.getOwnPropertyDescriptor(value, key);
23
+ if (!field || !("value" in field) || !field.enumerable)
24
+ invalid("Artifact metadata must contain enumerable data properties", `$.${key}`);
25
+ snapshot[key] = field.value;
26
+ }
27
+ value = snapshot;
28
+ const issues = diagnosticJsonPreflight(value, "input");
29
+ if (issues.length)
30
+ invalid(issues[0].message, issues[0].path);
31
+ if (!isDiagnosticPlainRecord(value))
32
+ invalid("Artifact metadata must be a plain object");
33
+ for (const key of Object.keys(value))
34
+ if (!["id", "scope", "expectedByteLength", "maximumByteLength"].includes(key))
35
+ invalid("Unknown artifact metadata key", `$.${key}`);
36
+ if (!isDiagnosticToken(value.id))
37
+ invalid("Artifact ID must be a valid token", "$.id");
38
+ if (value.scope !== "input" && value.scope !== "preparation")
39
+ invalid("Artifact scope must be input or preparation", "$.scope");
40
+ for (const key of ["expectedByteLength", "maximumByteLength"])
41
+ if (value[key] !== undefined && (!Number.isSafeInteger(value[key]) || value[key] < 0))
42
+ invalid("Byte length must be a nonnegative safe integer", `$.${key}`);
43
+ const maximumByteLength = value.maximumByteLength ?? Number.MAX_SAFE_INTEGER;
44
+ if (value.expectedByteLength !== undefined && value.expectedByteLength > maximumByteLength)
45
+ invalid("Expected byte length exceeds the resource ceiling", "$.expectedByteLength");
46
+ return {
47
+ id: value.id,
48
+ scope: value.scope,
49
+ expectedByteLength: value.expectedByteLength,
50
+ maximumByteLength,
51
+ };
52
+ }
53
+ function cancellation(options) {
54
+ if (!isDiagnosticPlainRecord(options))
55
+ invalid("Artifact stream options must be a plain object");
56
+ for (const key of Reflect.ownKeys(options))
57
+ if (key !== "signal")
58
+ invalid("Unknown artifact stream option");
59
+ const field = Object.getOwnPropertyDescriptor(options, "signal");
60
+ if (field && (!("value" in field) || !field.enumerable))
61
+ invalid("Artifact signal must be supplied as a data property");
62
+ const signal = field?.value;
63
+ if (signal === undefined)
64
+ return () => { };
65
+ try {
66
+ signalAborted.call(signal);
67
+ }
68
+ catch {
69
+ invalid("Artifact signal must be an AbortSignal");
70
+ }
71
+ // Capture the genuine signal and intrinsic method before any producer await.
72
+ return () => throwIfAborted.call(signal);
73
+ }
74
+ /**
75
+ * Hash the bytes actually received, retaining only a bounded chunk copy.
76
+ * The producer owns I/O. A completed handle means SDK-computed content digest,
77
+ * not source authenticity, a signature, or validation of an actuarial run.
78
+ * Shared buffers are refused; bytes are consumed before requesting the next
79
+ * chunk. A changing producer must be checked again against this digest on replay.
80
+ * Cancellation is cooperative between received chunks; the producer should use
81
+ * the same signal to cancel pending I/O. One synchronous chunk is not interrupted.
82
+ */
83
+ export async function digestDiagnosticArtifactChunks(metadata, chunks, options = {}) {
84
+ const owned = ownedMetadata(metadata);
85
+ const checkCancellation = cancellation(options);
86
+ checkCancellation();
87
+ const hash = createSha256();
88
+ const copy = new Uint8Array(COPY_SIZE);
89
+ let byteLength = 0;
90
+ try {
91
+ for await (const chunk of consumeDiagnosticByteSource(chunks, checkCancellation)) {
92
+ checkCancellation();
93
+ const view = diagnosticByteView(chunk);
94
+ const size = view.byteLength;
95
+ if (!Number.isSafeInteger(byteLength + size) || byteLength + size > owned.maximumByteLength)
96
+ invalid("Artifact byte length exceeds the resource ceiling", "$.chunks");
97
+ if (owned.expectedByteLength !== undefined && byteLength + size > owned.expectedByteLength)
98
+ invalid("Artifact has more bytes than declared", "$.chunks");
99
+ for (let start = 0; start < size; start += COPY_SIZE) {
100
+ const length = Math.min(COPY_SIZE, size - start);
101
+ copy.set(new Uint8Array(view.buffer, view.byteOffset + start, length));
102
+ hash.update(copy.subarray(0, length));
103
+ }
104
+ byteLength += size;
105
+ }
106
+ checkCancellation();
107
+ if (owned.expectedByteLength !== undefined && byteLength !== owned.expectedByteLength)
108
+ invalid("Artifact ended before its declared byte length", "$.chunks");
109
+ const digest = Object.freeze({
110
+ id: owned.id,
111
+ scope: owned.scope,
112
+ assurance: "sdk-computed",
113
+ algorithm: "sha256",
114
+ value: hash.digest(),
115
+ byteLength,
116
+ });
117
+ computed.add(digest);
118
+ return digest;
119
+ }
120
+ finally {
121
+ copy.fill(0);
122
+ }
123
+ }
124
+ export function assertComputedDiagnosticArtifactDigest(value) {
125
+ if (value === null || typeof value !== "object" || !computed.has(value))
126
+ invalid("Value is not an authentic SDK-computed streamed artifact digest");
127
+ }
128
+ //# sourceMappingURL=diagnosticArtifactStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnosticArtifactStream.js","sourceRoot":"","sources":["../src/diagnosticArtifactStream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ type DiagnosticByteSource = Iterable<Uint8Array> | AsyncIterable<Uint8Array>;
2
+ /**
3
+ * Own one producer iterator through completion, cancellation or read failure.
4
+ * Unlike a bare for-await loop, a rejected next() also closes the producer.
5
+ * A cleanup failure never replaces the error that caused cleanup. Hosts should
6
+ * pass the same cancellation signal to pending I/O; checks cannot interrupt it.
7
+ */
8
+ export declare function consumeDiagnosticByteSource(source: DiagnosticByteSource, checkCancellation?: () => void): AsyncGenerator<Uint8Array>;
9
+ export {};
10
+ //# sourceMappingURL=diagnosticByteSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnosticByteSource.d.ts","sourceRoot":"","sources":["../src/diagnosticByteSource.ts"],"names":[],"mappings":"AAAA,KAAK,oBAAoB,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAQ7E;;;;;GAKG;AACH,wBAAuB,2BAA2B,CAChD,MAAM,EAAE,oBAAoB,EAC5B,iBAAiB,GAAE,MAAM,IAAe,GACvC,cAAc,CAAC,UAAU,CAAC,CAgE5B"}