@actuarial-ts/interchange 0.2.0 → 0.3.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 (42) hide show
  1. package/README.md +28 -1
  2. package/dist/convert/result.d.ts +4 -4
  3. package/dist/convert/result.js +3 -3
  4. package/dist/convert/result.js.map +1 -1
  5. package/dist/envelope.d.ts +1 -1
  6. package/dist/envelope.js +1 -1
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/parse.d.ts.map +1 -1
  12. package/dist/parse.js +49 -0
  13. package/dist/parse.js.map +1 -1
  14. package/dist/referee/crosscheck.d.ts +12 -0
  15. package/dist/referee/crosscheck.d.ts.map +1 -1
  16. package/dist/referee/crosscheck.js +109 -9
  17. package/dist/referee/crosscheck.js.map +1 -1
  18. package/dist/referee/crosscheckStochastic.d.ts +24 -0
  19. package/dist/referee/crosscheckStochastic.d.ts.map +1 -0
  20. package/dist/referee/crosscheckStochastic.js +367 -0
  21. package/dist/referee/crosscheckStochastic.js.map +1 -0
  22. package/dist/schemas/result.d.ts +552 -0
  23. package/dist/schemas/result.d.ts.map +1 -1
  24. package/dist/schemas/result.js +52 -0
  25. package/dist/schemas/result.js.map +1 -1
  26. package/package.json +4 -2
  27. package/src/convert/result.ts +212 -0
  28. package/src/convert/selection.ts +565 -0
  29. package/src/convert/triangle.ts +208 -0
  30. package/src/envelope.ts +193 -0
  31. package/src/index.ts +15 -0
  32. package/src/parse.ts +175 -0
  33. package/src/referee/crosscheck.ts +459 -0
  34. package/src/referee/crosscheckStochastic.ts +488 -0
  35. package/src/referee/profiles.ts +113 -0
  36. package/src/schemas/bundle.ts +64 -0
  37. package/src/schemas/crosscheck.ts +84 -0
  38. package/src/schemas/manifest.ts +75 -0
  39. package/src/schemas/result.ts +180 -0
  40. package/src/schemas/selection.ts +175 -0
  41. package/src/schemas/study.ts +98 -0
  42. package/src/schemas/triangle.ts +138 -0
package/README.md CHANGED
@@ -5,6 +5,16 @@ language-neutral, versioned documents that carry **data, intent, results,
5
5
  and governance** between actuarial-ts, chainladder-python, and R
6
6
  ChainLadder — plus the deterministic cross-implementation referee.
7
7
 
8
+ ## Install
9
+
10
+ ```sh
11
+ npm install @actuarial-ts/interchange
12
+ ```
13
+
14
+ ESM, Node >= 20. Depends on `@actuarial-ts/core` (>= 0.2.0 — it provides the
15
+ `canonicalJson`/`fnv1a64` this package canonicalizes and stamps with) and
16
+ `zod`.
17
+
8
18
  - **Document kinds**: `triangle`, `selection`, `method-result`,
9
19
  `stochastic-result`, `study`, `bundle`, `crosscheck-report` — zod
10
20
  schemas with inferred types, mechanically emitted to JSON Schema under
@@ -25,7 +35,8 @@ ChainLadder — plus the deterministic cross-implementation referee.
25
35
  - **Converters**: `triangleToDoc`/`docToTriangle`,
26
36
  `selectionsToDoc`/`docToSelections` (intent ↔ the standard averages
27
37
  menu), `resultToDoc` (chainLadder, mack, bornhuetterFerguson,
28
- benktander in Phase A; more methods arrive with later phases), and
38
+ benktander; Cape Cod, Clark, Munich and the stochastic layer are not yet
39
+ converted and `resultToDoc` throws for them), and
29
40
  `parseDocument` (version-checked, integrity-verified,
30
41
  warning-channeled).
31
42
  - **The referee**: `crosscheck({ a, b, tolerance?, selection?, createdAt })`
@@ -50,3 +61,19 @@ regenerates the committed JSON Schemas).
50
61
  This package is designed to support the actuary's compliance with the
51
62
  ASOPs; cross-implementation agreement supports, but does not by itself
52
63
  constitute, the model validation contemplated by ASOP No. 56.
64
+
65
+ ## Two referees
66
+
67
+ `crosscheck` compares DERIVATIONS: two deterministic `method-result` documents,
68
+ where any deviation beyond float noise is a real disagreement.
69
+
70
+ `crosscheckStochastic` compares DRAWS: two `stochastic-result` documents, where
71
+ the expected disagreement is nonzero and set by sampling theory. Its tolerance
72
+ is derived from the simulation count and the observed coefficient of variation
73
+ rather than declared, so it tightens as n grows, and it withholds that
74
+ allowance from two results that both claim `seeded-reproducible` at one seed.
75
+ See `docs/interop/reproducibility.md`.
76
+
77
+ ## License
78
+
79
+ Apache-2.0. See [LICENSE](LICENSE) and [NOTICE](NOTICE).
@@ -7,10 +7,10 @@ import { type EngineStamp, type MethodResultDoc } from "../schemas/result.js";
7
7
  * core method results → MethodResultDoc, stamping `appliesTo` (spec 3.2 /
8
8
  * 4.1).
9
9
  *
10
- * Phase A converts the deterministic quartet — ChainLadderResult,
11
- * MackResult, BornhuetterFergusonResult, BenktanderResult; further
12
- * methods (Cape Cod, Clark, Munich, the stochastic layer, ...) arrive
13
- * with later phases. Method names use the actuarial-ts namespace
10
+ * Converts the deterministic quartet — ChainLadderResult, MackResult,
11
+ * BornhuetterFergusonResult, BenktanderResult. Further methods (Cape Cod,
12
+ * Clark, Munich, the stochastic layer, ...) are NOT yet converted and
13
+ * throw; adding one is a spec-minor change. Method names use the actuarial-ts namespace
14
14
  * (unprefixed discriminants); `clpy:`/`rcl:` are reserved for the other
15
15
  * shores.
16
16
  *
@@ -5,7 +5,7 @@ import { methodResultDocSchema, } from "../schemas/result.js";
5
5
  * The engine stamp for results computed by @actuarial-ts/core. A sync test
6
6
  * pins the version to the installed core package so it cannot drift.
7
7
  */
8
- export const CORE_ENGINE = { name: "actuarial-ts", version: "0.2.0" };
8
+ export const CORE_ENGINE = { name: "actuarial-ts", version: "0.3.0" };
9
9
  function mapResult(result) {
10
10
  switch (result.method) {
11
11
  case "chainLadder":
@@ -63,8 +63,8 @@ function mapResult(result) {
63
63
  };
64
64
  default: {
65
65
  const method = result.method ?? "(unknown)";
66
- throw new ReservingError("BAD_INTERCHANGE", `resultToDoc does not support method "${method}" yet; Phase A converts chainLadder, ` +
67
- "mack, bornhuetterFerguson, and benktander (more arrive with later phases)");
66
+ throw new ReservingError("BAD_INTERCHANGE", `resultToDoc does not support method "${method}" yet; it converts chainLadder, ` +
67
+ "mack, bornhuetterFerguson, and benktander");
68
68
  }
69
69
  }
70
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/convert/result.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/convert/result.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ export declare const INTERCHANGE_SPEC_MAJOR = 1;
32
32
  * This package's version, stamped into `generator` by default. A sync test
33
33
  * asserts it matches package.json so it cannot silently drift.
34
34
  */
35
- export declare const INTERCHANGE_PACKAGE_VERSION = "0.2.0";
35
+ export declare const INTERCHANGE_PACKAGE_VERSION = "0.3.0";
36
36
  export interface GeneratorStamp {
37
37
  name: string;
38
38
  version: string;
package/dist/envelope.js CHANGED
@@ -33,7 +33,7 @@ export const INTERCHANGE_SPEC_MAJOR = 1;
33
33
  * This package's version, stamped into `generator` by default. A sync test
34
34
  * asserts it matches package.json so it cannot silently drift.
35
35
  */
36
- export const INTERCHANGE_PACKAGE_VERSION = "0.2.0";
36
+ export const INTERCHANGE_PACKAGE_VERSION = "0.3.0";
37
37
  /** Default `generator` stamp for documents authored by this package. */
38
38
  export const DEFAULT_GENERATOR = {
39
39
  name: "@actuarial-ts/interchange",
package/dist/index.d.ts CHANGED
@@ -12,4 +12,5 @@ export * from "./convert/selection.js";
12
12
  export * from "./convert/result.js";
13
13
  export * from "./referee/profiles.js";
14
14
  export * from "./referee/crosscheck.js";
15
+ export * from "./referee/crosscheckStochastic.js";
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC"}
package/dist/index.js CHANGED
@@ -12,4 +12,5 @@ export * from "./convert/selection.js";
12
12
  export * from "./convert/result.js";
13
13
  export * from "./referee/profiles.js";
14
14
  export * from "./referee/crosscheck.js";
15
+ export * from "./referee/crosscheckStochastic.js";
15
16
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,mBAAmB,GAC3B,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,GACnB,QAAQ,GACR,SAAS,GACT,mBAAmB,CAAC;AAExB,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,mBAAmB,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAYD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,oBAAyB,GACjC,cAAc,CAsDhB"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,mBAAmB,GAC3B,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,GACnB,QAAQ,GACR,SAAS,GACT,mBAAmB,CAAC;AAExB,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,mBAAmB,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAwCD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,oBAAyB,GACjC,cAAc,CA4EhB"}
package/dist/parse.js CHANGED
@@ -7,6 +7,35 @@ function formatZodError(error) {
7
7
  .map((issue) => `${issue.path.length > 0 ? `$.${issue.path.join(".")}` : "$"}: ${issue.message}`)
8
8
  .join("; ");
9
9
  }
10
+ /**
11
+ * Documents embedded inside a study or bundle, as `<path>` -> document.
12
+ *
13
+ * A study carries whole TriangleDocs, SelectionDocs and result documents; a
14
+ * bundle mirrors the same set under `interchange`. Each is a complete document
15
+ * with its OWN integrity tag over its OWN body.
16
+ */
17
+ function embeddedDocuments(doc) {
18
+ const found = [];
19
+ const collect = (prefix, list) => {
20
+ if (!Array.isArray(list))
21
+ return;
22
+ list.forEach((value, index) => found.push({ path: `${prefix}[${index}]`, value }));
23
+ };
24
+ if (doc.kind === "study") {
25
+ collect("$.study.triangles", doc.study.triangles);
26
+ collect("$.study.selections", doc.study.selections);
27
+ collect("$.study.supportingResults", doc.study.supportingResults);
28
+ }
29
+ else if (doc.kind === "bundle") {
30
+ const mirror = doc.interchange;
31
+ if (mirror !== undefined) {
32
+ collect("$.interchange.triangles", mirror["triangles"]);
33
+ collect("$.interchange.selections", mirror["selections"]);
34
+ collect("$.interchange.results", mirror["results"]);
35
+ }
36
+ }
37
+ return found;
38
+ }
10
39
  export function parseDocument(value, options = {}) {
11
40
  const strictness = options.strictness ?? "refuse";
12
41
  if (typeof value !== "object" || value === null || Array.isArray(value)) {
@@ -35,6 +64,26 @@ export function parseDocument(value, options = {}) {
35
64
  }
36
65
  warnings.push(message);
37
66
  }
67
+ // Embedded documents carry their own tags, and nothing checked them. That
68
+ // matters because `appliesTo.triangleIntegrity` is the linkage primitive the
69
+ // referee relies on: a result claims to apply to a triangle BY TAG, so a
70
+ // nested triangle whose tag no longer matches its own body makes every such
71
+ // claim point at something other than what is actually there.
72
+ for (const { path, value } of embeddedDocuments(doc)) {
73
+ const nested = verifyIntegrity(value);
74
+ if (nested.ok)
75
+ continue;
76
+ const nestedKind = typeof value?.kind === "string"
77
+ ? value.kind
78
+ : "unknown";
79
+ const message = `Integrity tag mismatch on the embedded "${nestedKind}" document at ${path}: it states ` +
80
+ `${nested.actual ?? "(none)"} but its own semantic body hashes to ${nested.expected}. ` +
81
+ "The enclosing document's tag is intact, so this diverged before it was embedded.";
82
+ if (strictness === "refuse") {
83
+ throw new ReservingError("BAD_INTERCHANGE", message);
84
+ }
85
+ warnings.push(message);
86
+ }
38
87
  if (doc.kind === "triangle") {
39
88
  const cadence = doc.triangle.originLengthMonths;
40
89
  if (cadence === 1 || cadence === 6) {
package/dist/parse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,18 @@ export interface CrosscheckOptions {
27
27
  central: number;
28
28
  standardError?: number;
29
29
  };
30
+ /**
31
+ * Absolute floor for the deviation test, applied as
32
+ * `|x - y| <= absoluteTolerance + rtol * max(|x|, |y|)`. Default 0, which is
33
+ * pure relative comparison.
34
+ *
35
+ * There is deliberately no non-zero default: the referee sees result
36
+ * documents, not the triangle, so it cannot read `units.scale` and any
37
+ * constant it invented would be wrong for somebody's data. A caller who
38
+ * knows the scale should set it — without one, an exact 0 against 1e-11 of
39
+ * float dust reads as a 100% deviation.
40
+ */
41
+ absoluteTolerance?: number;
30
42
  /** The selection both results applied, when one exists — enables the
31
43
  * verified-by-value classification. */
32
44
  selection?: SelectionDoc;
@@ -1 +1 @@
1
- {"version":3,"file":"crosscheck.d.ts","sourceRoot":"","sources":["../../src/referee/crosscheck.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,cAAc,EAGpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,0BAA0B,CAAC;AAGlC;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,eAAe,CAAC;IACnB,CAAC,EAAE,eAAe,CAAC;IACnB;wCACoC;IACpC,SAAS,CAAC,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE;2CACuC;IACvC,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAmED,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,CAwM1E"}
1
+ {"version":3,"file":"crosscheck.d.ts","sourceRoot":"","sources":["../../src/referee/crosscheck.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,cAAc,EAGpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,0BAA0B,CAAC;AAGlC;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,eAAe,CAAC;IACnB,CAAC,EAAE,eAAe,CAAC;IACnB;wCACoC;IACpC,SAAS,CAAC,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;2CACuC;IACvC,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAuHD,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,CAkR1E"}
@@ -8,9 +8,28 @@ function relativeDeviation(x, y) {
8
8
  const scale = Math.max(Math.abs(x), Math.abs(y));
9
9
  return scale === 0 ? 0 : Math.abs(x - y) / scale;
10
10
  }
11
+ /**
12
+ * True when x and y differ by more than the caller allows.
13
+ *
14
+ * `|x - y| <= atol + rtol * max(|x|, |y|)` — the standard combined form. With
15
+ * atol 0 this is exactly the relative test, which is the default.
16
+ */
17
+ function exceeds(x, y, rtol, atol) {
18
+ return Math.abs(x - y) > atol + rtol * Math.max(Math.abs(x), Math.abs(y));
19
+ }
11
20
  function validateInput(label, doc) {
12
21
  const parsed = methodResultDocSchema.safeParse(doc);
13
22
  if (!parsed.success) {
23
+ // A stochastic result is a legitimate document that simply belongs to the
24
+ // other referee: comparing two Monte Carlo samples under a deterministic
25
+ // tolerance manufactures `disagree` verdicts out of sampling noise
26
+ // (spec 16). Say so, rather than leaving the caller with a schema dump.
27
+ if (doc?.kind === "stochastic-result") {
28
+ throw new ReservingError("BAD_INTERCHANGE", `crosscheck input "${label}" is a stochastic-result document. Use crosscheckStochastic(), ` +
29
+ "which compares distributions under a tolerance derived from sampling theory; a " +
30
+ "deterministic tolerance applied to two Monte Carlo samples reports ordinary sampling " +
31
+ "noise as disagreement.");
32
+ }
14
33
  throw new ReservingError("BAD_INTERCHANGE", `crosscheck input "${label}" is not a valid MethodResultDoc: ${parsed.error.issues
15
34
  .map((i) => `${i.path.join(".") || "$"}: ${i.message}`)
16
35
  .join("; ")}`);
@@ -24,18 +43,38 @@ function validateInput(label, doc) {
24
43
  }
25
44
  function resolveTolerance(a, b, explicit, warnings) {
26
45
  if (typeof explicit === "number") {
27
- return { central: explicit, standardError: explicit };
46
+ return { central: explicit, standardError: explicit, standardErrorRequired: false };
28
47
  }
29
48
  if (explicit !== undefined) {
30
- return { central: explicit.central, standardError: explicit.standardError ?? null };
49
+ return {
50
+ central: explicit.central,
51
+ standardError: explicit.standardError ?? null,
52
+ standardErrorRequired: explicit.standardError !== undefined,
53
+ };
31
54
  }
32
55
  const profileA = a.result.engine.conventionProfile;
33
56
  const profileB = b.result.engine.conventionProfile;
34
- const shared = profileA !== undefined && profileA === profileB ? profileA : undefined;
57
+ // A profile stated on ONE side still governs. Falling back to the default
58
+ // when only one engine declares its conventions silently drops standard
59
+ // errors out of scope, which is how a 50% SE divergence used to report
60
+ // `agree`. Use the stated profile and say the other side did not state one.
61
+ const stated = profileA ?? profileB;
62
+ if (profileA !== undefined && profileB !== undefined && profileA !== profileB) {
63
+ // Conflicting profiles are a comparability failure, handled by the caller.
64
+ }
65
+ else if (stated !== undefined && profileA !== profileB) {
66
+ warnings.push(`Only ${profileA !== undefined ? '"a"' : '"b"'} states a convention profile ` +
67
+ `("${stated}"); it is being applied to both. The other engine did not declare ` +
68
+ "its conventions, so alignment is asserted rather than verified.");
69
+ }
70
+ const shared = profileA === profileB ? profileA : stated;
35
71
  if (shared !== undefined) {
36
72
  const profile = CONVENTION_PROFILES[shared];
37
73
  if (profile !== undefined) {
38
- return { ...profile.tolerance };
74
+ return {
75
+ ...profile.tolerance,
76
+ standardErrorRequired: profile.tolerance.standardError !== null,
77
+ };
39
78
  }
40
79
  warnings.push(`Convention profile "${shared}" is not in this package's registry; falling back to the ` +
41
80
  "deterministic-cl central tolerance");
@@ -45,11 +84,12 @@ function resolveTolerance(a, b, explicit, warnings) {
45
84
  "deterministic-cl central tolerance");
46
85
  }
47
86
  const fallback = CONVENTION_PROFILES["deterministic-cl"];
48
- return { ...fallback.tolerance };
87
+ return { ...fallback.tolerance, standardErrorRequired: false };
49
88
  }
50
89
  export function crosscheck(options) {
51
90
  const a = validateInput("a", options.a);
52
91
  const b = validateInput("b", options.b);
92
+ const absoluteTolerance = options.absoluteTolerance ?? 0;
53
93
  const warnings = [];
54
94
  const notComparable = [];
55
95
  // --- comparability: appliesTo tags (spec 5) ---
@@ -128,6 +168,13 @@ export function crosscheck(options) {
128
168
  const perOrigin = [];
129
169
  let maxCentral = 0;
130
170
  let maxSe = 0;
171
+ // How many cells each metric was actually compared on. A metric the profile
172
+ // scopes IN but which never got compared on a single cell is the case that
173
+ // used to report `agree` while checking nothing.
174
+ let centralCells = 0;
175
+ let seCells = 0;
176
+ let centralBreached = false;
177
+ let seBreached = false;
131
178
  if (comparable) {
132
179
  for (const rowA of a.result.rows) {
133
180
  const rowB = bByOrigin.get(rowA.origin);
@@ -136,9 +183,19 @@ export function crosscheck(options) {
136
183
  const standardError = compareSe && rowA.standardError !== undefined && rowB.standardError !== undefined
137
184
  ? relativeDeviation(rowA.standardError, rowB.standardError)
138
185
  : null;
186
+ centralCells++;
139
187
  maxCentral = Math.max(maxCentral, ultimate, unpaid);
140
- if (standardError !== null)
188
+ if (exceeds(rowA.ultimate, rowB.ultimate, tolerance.central, absoluteTolerance) ||
189
+ exceeds(rowA.unpaid, rowB.unpaid, tolerance.central, absoluteTolerance)) {
190
+ centralBreached = true;
191
+ }
192
+ if (standardError !== null) {
193
+ seCells++;
141
194
  maxSe = Math.max(maxSe, standardError);
195
+ if (exceeds(rowA.standardError, rowB.standardError, tolerance.standardError, absoluteTolerance)) {
196
+ seBreached = true;
197
+ }
198
+ }
142
199
  perOrigin.push({ origin: rowA.origin, ultimate, unpaid, standardError });
143
200
  }
144
201
  }
@@ -156,9 +213,31 @@ export function crosscheck(options) {
156
213
  }
157
214
  : { ultimate: null, unpaid: null, standardError: null };
158
215
  if (comparable) {
216
+ centralCells++;
159
217
  maxCentral = Math.max(maxCentral, totals.ultimate ?? 0, totals.unpaid ?? 0);
160
- if (totals.standardError !== null)
218
+ if (exceeds(totalsA.ultimate, totalsB.ultimate, tolerance.central, absoluteTolerance) ||
219
+ exceeds(totalsA.unpaid, totalsB.unpaid, tolerance.central, absoluteTolerance)) {
220
+ centralBreached = true;
221
+ }
222
+ if (totals.standardError !== null) {
223
+ seCells++;
161
224
  maxSe = Math.max(maxSe, totals.standardError);
225
+ if (exceeds(totalsA.standardError, totalsB.standardError, tolerance.standardError, absoluteTolerance)) {
226
+ seBreached = true;
227
+ }
228
+ }
229
+ }
230
+ // A metric the profile scopes IN but which was never compared on any cell
231
+ // leaves the comparison incomplete. `agree` is read as "these engines agree",
232
+ // so it must not be reachable when the thing the profile asked about was
233
+ // never checked — the referee refuses instead, and says which metric.
234
+ const uncovered = [];
235
+ if (comparable && centralCells === 0) {
236
+ uncovered.push("central estimates were not compared on any cell");
237
+ }
238
+ if (comparable && compareSe && tolerance.standardErrorRequired && seCells === 0) {
239
+ uncovered.push(`the profile scopes standard errors in (tolerance ${tolerance.standardError}) but neither ` +
240
+ "side carries a standard error on any cell, so they were never compared");
162
241
  }
163
242
  // --- verdict ---
164
243
  let verdict;
@@ -166,10 +245,14 @@ export function crosscheck(options) {
166
245
  verdict = "not-comparable";
167
246
  warnings.push(...notComparable.map((reason) => `Not comparable: ${reason}`));
168
247
  }
169
- else if (maxCentral > tolerance.central ||
170
- (compareSe && maxSe > tolerance.standardError)) {
248
+ else if (centralBreached || (compareSe && seBreached)) {
171
249
  verdict = "disagree";
172
250
  }
251
+ else if (uncovered.length > 0) {
252
+ verdict = "not-comparable";
253
+ warnings.push(...uncovered.map((reason) => `Not comparable: ${reason}. Everything that WAS compared agreed, but a verdict of ` +
254
+ "`agree` would overstate that."));
255
+ }
173
256
  else if (selection !== null &&
174
257
  sameSelection &&
175
258
  aTo.selectionIntegrity !== null &&
@@ -179,6 +262,16 @@ export function crosscheck(options) {
179
262
  "no independent recomputation occurred; agreement verifies value transport, not methodology");
180
263
  }
181
264
  else {
265
+ if (sameSelection && aTo.selectionIntegrity !== null && selection === null) {
266
+ // Whether agreement reflects independent recomputation or a replay of the
267
+ // same values depends on the selection document — and the party supplying
268
+ // it is the one being audited. Silence here let them choose whether the
269
+ // disclosure appeared, so say plainly that the check did not run.
270
+ warnings.push(`Both results replayed selection ${aTo.selectionIntegrity}, but the selection document ` +
271
+ "was not supplied, so whether it is value-only could not be checked. If it is, this " +
272
+ "agreement verifies value transport rather than methodology — pass `selection` to " +
273
+ "resolve it.");
274
+ }
182
275
  verdict = "agree";
183
276
  }
184
277
  const body = {
@@ -192,6 +285,13 @@ export function crosscheck(options) {
192
285
  deviations: { perOrigin, totals },
193
286
  verdict,
194
287
  warnings,
288
+ // What was actually examined, so a reader can tell "agreed on everything the
289
+ // profile asked about" from "agreed on what happened to be present".
290
+ coverage: {
291
+ central: { inScope: true, comparedCells: centralCells },
292
+ standardError: { inScope: compareSe, comparedCells: seCells },
293
+ absoluteTolerance,
294
+ },
195
295
  };
196
296
  const doc = stampIntegrity({
197
297
  interchangeVersion: INTERCHANGE_SPEC_VERSION,
@@ -1 +1 @@
1
- {"version":3,"file":"crosscheck.js","sourceRoot":"","sources":["../../src/referee/crosscheck.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crosscheck.js","sourceRoot":"","sources":["../../src/referee/crosscheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EAExB,cAAc,EACd,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAGL,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AA0DpD,SAAS,iBAAiB,CAAC,CAAS,EAAE,CAAS;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,SAAS,OAAO,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY,EAAE,IAAY;IAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,aAAa,CAAC,KAAgB,EAAE,GAAoB;IAC3D,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,0EAA0E;QAC1E,yEAAyE;QACzE,mEAAmE;QACnE,wEAAwE;QACxE,IAAK,GAA0B,EAAE,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC9D,MAAM,IAAI,cAAc,CACtB,iBAAiB,EACjB,qBAAqB,KAAK,iEAAiE;gBACzF,iFAAiF;gBACjF,uFAAuF;gBACvF,wBAAwB,CAC3B,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,cAAc,CACtB,iBAAiB,EACjB,qBAAqB,KAAK,qCAAqC,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACtD,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,cAAc,CACtB,iBAAiB,EACjB,qBAAqB,KAAK,uCAAuC,SAAS,CAAC,MAAM,IAAI,QAAQ,IAAI;YAC/F,2BAA2B,SAAS,CAAC,QAAQ,EAAE,CAClD,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,gBAAgB,CACvB,CAAkB,EAClB,CAAkB,EAClB,QAAwC,EACxC,QAAkB;IAElB,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;IACtF,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,aAAa,EAAE,QAAQ,CAAC,aAAa,IAAI,IAAI;YAC7C,qBAAqB,EAAE,QAAQ,CAAC,aAAa,KAAK,SAAS;SAC5D,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;IACnD,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;IACnD,0EAA0E;IAC1E,wEAAwE;IACxE,uEAAuE;IACvE,4EAA4E;IAC5E,MAAM,MAAM,GAAG,QAAQ,IAAI,QAAQ,CAAC;IACpC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9E,2EAA2E;IAC7E,CAAC;SAAM,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACzD,QAAQ,CAAC,IAAI,CACX,QAAQ,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,+BAA+B;YAC3E,KAAK,MAAM,oEAAoE;YAC/E,iEAAiE,CACpE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO;gBACL,GAAG,OAAO,CAAC,SAAS;gBACpB,qBAAqB,EAAE,OAAO,CAAC,SAAS,CAAC,aAAa,KAAK,IAAI;aAChE,CAAC;QACJ,CAAC;QACD,QAAQ,CAAC,IAAI,CACX,uBAAuB,MAAM,2DAA2D;YACtF,oCAAoC,CACvC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CACX,8EAA8E;YAC5E,oCAAoC,CACvC,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,kBAAkB,CAAE,CAAC;IAC1D,OAAO,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAA0B;IACnD,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,iDAAiD;IACjD,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;IAC/B,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;IAC/B,MAAM,YAAY,GAAG,GAAG,CAAC,iBAAiB,KAAK,GAAG,CAAC,iBAAiB,CAAC;IACrE,MAAM,aAAa,GAAG,GAAG,CAAC,kBAAkB,KAAK,GAAG,CAAC,kBAAkB,CAAC;IACxE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,aAAa,CAAC,IAAI,CAChB,6CAA6C,GAAG,CAAC,iBAAiB,OAAO,GAAG,CAAC,iBAAiB,GAAG,CAClG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,CAAC,IAAI,CAChB,8CAA8C,GAAG,CAAC,kBAAkB,IAAI,MAAM,MAAM;YAClF,GAAG,GAAG,CAAC,kBAAkB,IAAI,MAAM,2DAA2D,CACjG,CAAC;IACJ,CAAC;IAED,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;IACnD,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;IACnD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9E,aAAa,CAAC,IAAI,CAChB,qDAAqD,QAAQ,SAAS,QAAQ,IAAI,CACnF,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,IAAI,SAAS,GAAwB,IAAI,CAAC;IAC1C,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,cAAc,CACtB,iBAAiB,EACjB,uDAAuD,MAAM,CAAC,KAAK,CAAC,MAAM;iBACvE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;iBACtD,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;QACJ,CAAC;QACD,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,aAAa,IAAI,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;YACpE,MAAM,IAAI,cAAc,CACtB,iBAAiB,EACjB,uCAAuC,SAAS,CAAC,SAAS,gCAAgC;gBACxF,uBAAuB,GAAG,CAAC,kBAAkB,IAAI,MAAM,GAAG,CAC7D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACpD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAU,CAAC,EAAE,CAAC;QAC3F,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,cAAc,CACtB,iBAAiB,EACjB,WAAW,KAAK,mBAAmB,GAAG,CAAC,MAAM,wDAAwD,CACtG,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3G,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,aAAa,CAAC,IAAI,CAChB,wDAAwD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAC/G,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI;QACzB,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;KACA,EAAE,CAAC;QACX,IAAI,GAAG,CAAC,MAAM,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACjD,QAAQ,CAAC,IAAI,CACX,oCAAoC,KAAK,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,uBAAuB;gBAC1F,cAAc,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,gCAAgC;gBAC5F,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAC7C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,KAAK,IAAI,CAAC;IACnD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,QAAQ,GACZ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,SAAS,CAAC;YACxD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC;QAC3D,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CACX,qFAAqF;gBACnF,mCAAmC,CACtC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,IAAI,UAAU,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;IAC5C,MAAM,SAAS,GAA8C,EAAE,CAAC;IAChE,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,4EAA4E;IAC5E,2EAA2E;IAC3E,iDAAiD;IACjD,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3D,MAAM,aAAa,GACjB,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;gBAC/E,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;gBAC3D,CAAC,CAAC,IAAI,CAAC;YACX,YAAY,EAAE,CAAC;YACf,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACpD,IACE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC;gBAC3E,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC,EACvE,CAAC;gBACD,eAAe,GAAG,IAAI,CAAC;YACzB,CAAC;YACD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC3B,OAAO,EAAE,CAAC;gBACV,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;gBACvC,IAAI,OAAO,CAAC,IAAI,CAAC,aAAc,EAAE,IAAI,CAAC,aAAc,EAAE,SAAS,CAAC,aAAc,EAAE,iBAAiB,CAAC,EAAE,CAAC;oBACnG,UAAU,GAAG,IAAI,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAChC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAChC,MAAM,MAAM,GAA2C,UAAU;QAC/D,CAAC,CAAC;YACE,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;YAC/D,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;YACzD,aAAa,EACX,SAAS;gBACT,OAAO,CAAC,aAAa,KAAK,SAAS;gBACnC,OAAO,CAAC,aAAa,KAAK,SAAS;gBACjC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC;gBACjE,CAAC,CAAC,IAAI;SACX;QACH,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,UAAU,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAC5E,IACE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC;YACjF,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAC7E,CAAC;YACD,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YAClC,OAAO,EAAE,CAAC;YACV,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YAC9C,IAAI,OAAO,CAAC,OAAO,CAAC,aAAc,EAAE,OAAO,CAAC,aAAc,EAAE,SAAS,CAAC,aAAc,EAAE,iBAAiB,CAAC,EAAE,CAAC;gBACzG,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,yEAAyE;IACzE,sEAAsE;IACtE,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,UAAU,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,CAAC,qBAAqB,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAChF,SAAS,CAAC,IAAI,CACZ,oDAAoD,SAAS,CAAC,aAAa,gBAAgB;YACzF,wEAAwE,CAC3E,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAkC,CAAC;IACvC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,GAAG,gBAAgB,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;SAAM,IAAI,eAAe,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,UAAU,CAAC;IACvB,CAAC;SAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,GAAG,gBAAgB,CAAC;QAC3B,QAAQ,CAAC,IAAI,CACX,GAAG,SAAS,CAAC,GAAG,CACd,CAAC,MAAM,EAAE,EAAE,CACT,mBAAmB,MAAM,0DAA0D;YACnF,+BAA+B,CAClC,CACF,CAAC;IACJ,CAAC;SAAM,IACL,SAAS,KAAK,IAAI;QAClB,aAAa;QACb,GAAG,CAAC,kBAAkB,KAAK,IAAI;QAC/B,oBAAoB,CAAC,SAAS,CAAC,SAAS,CAAC,EACzC,CAAC;QACD,OAAO,GAAG,mBAAmB,CAAC;QAC9B,QAAQ,CAAC,IAAI,CACX,2FAA2F;YACzF,4FAA4F,CAC/F,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,IAAI,aAAa,IAAI,GAAG,CAAC,kBAAkB,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YAC3E,0EAA0E;YAC1E,0EAA0E;YAC1E,wEAAwE;YACxE,kEAAkE;YAClE,QAAQ,CAAC,IAAI,CACX,mCAAmC,GAAG,CAAC,kBAAkB,+BAA+B;gBACtF,qFAAqF;gBACrF,mFAAmF;gBACnF,aAAa,CAChB,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,OAAO,CAAC;IACpB,CAAC;IAED,MAAM,IAAI,GAAmB;QAC3B,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;QACnD,SAAS,EAAE,YAAY,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;QACrD,UAAU,EAAE;YACV,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,IAAI,IAAI,EAAE;YACtF,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,IAAI,IAAI,EAAE;SACvF;QACD,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE;QACjF,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;QACjC,OAAO;QACP,QAAQ;QACR,6EAA6E;QAC7E,qEAAqE;QACrE,QAAQ,EAAE;YACR,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE;YACvD,aAAa,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE;YAC7D,iBAAiB;SAClB;KACgB,CAAC;IAEpB,MAAM,GAAG,GAAG,cAAc,CAAsB;QAC9C,kBAAkB,EAAE,wBAAwB;QAC5C,IAAI,EAAE,mBAAmB;QACzB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,iBAAiB;QACjD,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,EAAE;QACd,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,yBAAyB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,cAAc,CACtB,iBAAiB,EACjB,0CAA0C,OAAO,CAAC,KAAK,CAAC,MAAM;aAC3D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACtD,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { type GeneratorStamp } from "../envelope.js";
2
+ import { type StochasticResultDoc } from "../schemas/result.js";
3
+ import { type CrosscheckReportDoc } from "../schemas/crosscheck.js";
4
+ export interface CrosscheckStochasticOptions {
5
+ a: StochasticResultDoc;
6
+ b: StochasticResultDoc;
7
+ /**
8
+ * Sigmas of Monte Carlo headroom for the derived tolerance. Default 4.
9
+ * Lower it only with a reason: at 2 sigma roughly 1 comparison in 20 of two
10
+ * genuinely-equivalent engines will be called `disagree`.
11
+ */
12
+ sigmas?: number;
13
+ /**
14
+ * The bound applied when both sides claim `seeded-reproducible` with the
15
+ * same seed, i.e. when they assert byte-reproducibility and the MC allowance
16
+ * is withheld. Default 1e-9 (float noise only).
17
+ */
18
+ exactTolerance?: number;
19
+ /** ISO timestamp for the report envelope (caller-supplied; purity rule). */
20
+ createdAt: string;
21
+ generator?: GeneratorStamp;
22
+ }
23
+ export declare function crosscheckStochastic(options: CrosscheckStochasticOptions): CrosscheckReportDoc;
24
+ //# sourceMappingURL=crosscheckStochastic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crosscheckStochastic.d.ts","sourceRoot":"","sources":["../../src/referee/crosscheckStochastic.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,cAAc,EAGpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,0BAA0B,CAAC;AAmDlC,MAAM,WAAW,2BAA2B;IAC1C,CAAC,EAAE,mBAAmB,CAAC;IACvB,CAAC,EAAE,mBAAmB,CAAC;IACvB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAkCD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,mBAAmB,CA8WrB"}