@actuarial-ts/compliance 0.6.0 → 0.6.1

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.
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.6.1 @actuarial-ts/core@0.6.1 @actuarial-ts/data@0.6.1 @actuarial-ts/interchange@0.6.1
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,13 @@ 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.6.1/docs/reference/diagnostic-formulas.md) and [migration guide](https://github.com/yerromnitsuj/actng/blob/v0.6.1/docs/migrations/0.6-generalized-diagnostics.md).
57
63
 
58
64
  ## License
59
65
 
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":"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"}
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,18 @@
1
- import { type DiagnosticDeepReadonly, type CompiledDiagnosticDefinition, type JsonValue as CoreDiagnosticJsonValue, type NormalizedDiagnosticDefinitionIdentity, type NormalizedDiagnosticPreparationIdentity, type NormalizedDiagnosticResultIdentity } from "@actuarial-ts/core";
1
+ import { type DiagnosticDeepReadonly, type CompiledDiagnosticDefinition, type JsonValue as CoreDiagnosticJsonValue, type NormalizedDiagnosticDefinitionIdentity, type NormalizedDiagnosticPreparationIdentity, type MetricDiagnosticsResult } from "@actuarial-ts/core";
2
2
  import { type CompletedValidatedMetricDiagnosticsRun, type DiagnosticReviewIdentityBody, type DiagnosticReviewReceipt } from "@actuarial-ts/data";
3
3
  export interface DiagnosticArtifactDigestBase {
4
4
  readonly id: string;
5
- readonly scope: "input" | "preparation";
6
- readonly algorithm: string;
7
5
  readonly value: string;
8
- readonly byteLength: number;
6
+ readonly scope: "input" | "preparation";
9
7
  }
10
- export type DiagnosticArtifactDigest = DiagnosticArtifactDigestBase & {
11
- readonly assurance: "sdk-computed" | "caller-declared";
12
- };
8
+ export type DiagnosticArtifactDigest = DiagnosticArtifactDigestBase & ({
9
+ readonly assurance: "sdk-computed";
10
+ readonly algorithm: "sha256";
11
+ readonly byteLength: number;
12
+ } | {
13
+ readonly assurance: "caller-declared";
14
+ readonly algorithm: string;
15
+ });
13
16
  export type DiagnosticArtifactEvidence = {
14
17
  readonly id: string;
15
18
  readonly scope: "input" | "preparation";
@@ -21,49 +24,66 @@ export type DiagnosticArtifactEvidence = {
21
24
  readonly assurance: "caller-declared";
22
25
  readonly algorithm: string;
23
26
  readonly value: string;
24
- readonly byteLength: number;
25
27
  };
26
28
  export interface DiagnosticPreparationLineage {
27
- readonly artifactId: string;
29
+ readonly outputArtifactId: string;
28
30
  readonly inputArtifactIds: readonly string[];
31
+ readonly transformationArtifactIds: readonly string[];
29
32
  }
30
33
  export interface DiagnosticRunManifest {
31
34
  readonly definitionIntegrity: string;
32
35
  readonly runPresetId: string | null;
33
36
  readonly datasetArtifactId: string | null;
34
- readonly packageVersions: Readonly<Record<string, string>>;
35
- readonly preparation: DiagnosticDeepReadonly<NormalizedDiagnosticPreparationIdentity>;
36
37
  readonly preparationFingerprint: string;
37
- readonly expectedGridFingerprint: string | null;
38
+ readonly inputArtifacts: readonly DiagnosticArtifactDigest[];
39
+ readonly preparationArtifacts: readonly DiagnosticArtifactDigest[];
40
+ readonly preparationLineage: readonly DiagnosticPreparationLineage[];
41
+ readonly inputAudit: DiagnosticDeepReadonly<NormalizedDiagnosticPreparationIdentity["inputAudit"]>;
42
+ readonly filter: DiagnosticDeepReadonly<NormalizedDiagnosticPreparationIdentity["filter"]>;
43
+ readonly groupMap: Readonly<Record<string, string>>;
44
+ readonly groupDimensions: Readonly<Record<string, CoreDiagnosticJsonValue>>;
45
+ readonly completePeriodCutoffs: DiagnosticDeepReadonly<NormalizedDiagnosticPreparationIdentity["completePeriodCutoffs"]>;
46
+ readonly expectedCellGridFingerprint: string | null;
47
+ readonly executionPolicy: {
48
+ readonly review: DiagnosticReviewReceipt;
49
+ readonly gate: CompletedValidatedMetricDiagnosticsRun["gate"];
50
+ };
51
+ readonly engine: {
52
+ readonly packages: {
53
+ readonly core: string;
54
+ readonly data: string;
55
+ readonly compliance: string;
56
+ };
57
+ readonly algorithmVersion: "diagnostics-1";
58
+ };
59
+ }
60
+ export type NormalizedDiagnosticRunManifestIdentity = DiagnosticDeepReadonly<Omit<DiagnosticRunManifest, "executionPolicy"> & {
38
61
  readonly executionPolicy: {
39
62
  readonly review: {
40
63
  readonly body: DiagnosticReviewIdentityBody;
41
64
  readonly reportFingerprint: string;
42
65
  };
43
- readonly gate: CompletedValidatedMetricDiagnosticsRun["gate"];
66
+ readonly gate: DiagnosticRunManifest["executionPolicy"]["gate"];
44
67
  };
45
- readonly groupMap: Readonly<Record<string, string>>;
46
- readonly groupDimensions: Readonly<Record<string, CoreDiagnosticJsonValue>>;
47
- readonly artifacts: readonly DiagnosticArtifactDigest[];
48
- readonly lineage: readonly DiagnosticPreparationLineage[];
49
- }
50
- export type NormalizedDiagnosticRunManifestIdentity = DiagnosticDeepReadonly<DiagnosticRunManifest>;
68
+ }>;
51
69
  export interface DiagnosticRunIdentity {
52
70
  readonly runFingerprint: string;
53
71
  readonly resultFingerprint: string;
54
72
  readonly runResultFingerprint: string;
55
73
  }
56
74
  export interface DiagnosticRunProvenance extends DiagnosticRunIdentity {
57
- readonly definition: DiagnosticDeepReadonly<NormalizedDiagnosticDefinitionIdentity>;
58
- readonly definitionIdentities: {
59
- readonly algorithm: "fnv1a64-jcs-v1";
60
- readonly formulaById: Readonly<Record<string, string>>;
61
- readonly calculationByInstanceId: Readonly<Record<string, string>>;
62
- readonly definition: string;
75
+ readonly definition: {
76
+ readonly definition: DiagnosticDeepReadonly<NormalizedDiagnosticDefinitionIdentity>;
77
+ readonly identities: {
78
+ readonly algorithm: "fnv1a64-jcs-v1";
79
+ readonly formulaById: Readonly<Record<string, string>>;
80
+ readonly calculationByInstanceId: Readonly<Record<string, string>>;
81
+ readonly definition: string;
82
+ };
63
83
  };
64
- readonly manifest: NormalizedDiagnosticRunManifestIdentity;
84
+ readonly manifest: DiagnosticDeepReadonly<DiagnosticRunManifest>;
65
85
  readonly review: DiagnosticReviewReceipt;
66
- readonly result: DiagnosticDeepReadonly<NormalizedDiagnosticResultIdentity>;
86
+ readonly result: DiagnosticDeepReadonly<MetricDiagnosticsResult>;
67
87
  }
68
88
  declare const verifiedDiagnosticRunProvenanceBrand: unique symbol;
69
89
  export interface VerifiedDiagnosticRunProvenance extends DiagnosticRunProvenance {
@@ -71,11 +91,14 @@ export interface VerifiedDiagnosticRunProvenance extends DiagnosticRunProvenance
71
91
  }
72
92
  export interface CreateDiagnosticRunIdentityInput {
73
93
  readonly completedRun: CompletedValidatedMetricDiagnosticsRun;
74
- readonly artifacts?: readonly DiagnosticArtifactEvidence[];
75
- readonly lineage?: readonly DiagnosticPreparationLineage[];
94
+ readonly inputArtifacts: readonly DiagnosticArtifactEvidence[];
95
+ readonly preparationArtifacts: readonly DiagnosticArtifactEvidence[];
96
+ readonly preparationLineage: readonly DiagnosticPreparationLineage[];
76
97
  }
77
98
  export declare function createDiagnosticRunIdentity(input: CreateDiagnosticRunIdentityInput): Promise<VerifiedDiagnosticRunProvenance>;
78
99
  export declare function assertVerifiedDiagnosticRunProvenance(value: unknown): asserts value is VerifiedDiagnosticRunProvenance;
100
+ /** Verify serialized evidence by replaying the owning core/data public workflows. */
101
+ export declare function serializedDiagnosticRunMismatch(value: unknown, path?: string): string | null;
79
102
  /** @internal Bundle authoring uses owner state rather than trusting the public snapshot. */
80
103
  export declare function verifiedDefinitionForBundle(value: VerifiedDiagnosticRunProvenance): CompiledDiagnosticDefinition;
81
104
  export declare function verifyDiagnosticRunIdentity(candidate: unknown, input: CreateDiagnosticRunIdentityInput): Promise<VerifiedDiagnosticRunProvenance>;
@@ -1 +1 @@
1
- {"version":3,"file":"diagnosticRun.d.ts","sourceRoot":"","sources":["../src/diagnosticRun.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnosticRun.d.ts","sourceRoot":"","sources":["../src/diagnosticRun.ts"],"names":[],"mappings":"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"}