@actuarial-ts/data 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.
@@ -1,32 +1,220 @@
1
- import { DiagnosticValidationError, compileDiagnosticDefinition, prepareDiagnosticData, runMetricDiagnostics, } from "@actuarial-ts/core";
1
+ import { DiagnosticValidationError, compileDiagnosticDefinition, prepareDiagnosticData, prepareDiagnosticDataCompact, runMetricDiagnostics, runMetricDiagnosticsCompact, validateDiagnosticGroupingConfiguration, validateCompactDiagnosticGroupingConfiguration, diagnosticRecord, isDiagnosticToken, isWellFormedDiagnosticString, } from "@actuarial-ts/core";
2
2
  import { z } from "zod";
3
- import { reviewPreparedDiagnosticData } from "./diagnosticPreparedReview.js";
4
- const sourceSchema = z.object({ artifactId: z.string().min(1), sourceFile: z.string().min(1).optional(), sourceSheet: z.string().min(1).optional(), sourceRow: z.number().int().nonnegative().optional(), sourceCell: z.string().min(1).optional() }).strict();
5
- const measuresSchema = z.record(z.union([z.number(), z.null()]));
6
- const lossBase = { recordId: z.string().min(1), sourceGroup: z.string().min(1), origin: z.string().min(1), valuation: z.string().min(1), complete: z.boolean(), source: sourceSchema.optional(), measures: measuresSchema };
7
- const lossSchema = z.discriminatedUnion("rowType", [z.object({ ...lossBase, rowType: z.literal("claim"), claimId: z.string().min(1) }).strict(), z.object({ ...lossBase, rowType: z.literal("aggregate") }).strict()]);
8
- const exposureSchema = z.object({ key: z.string().min(1), sourceGroup: z.string().min(1), origin: z.string().min(1), valuation: z.string().min(1).optional(), measureId: z.string().min(1), value: z.union([z.number(), z.null()]), complete: z.boolean(), source: sourceSchema.optional() }).strict();
9
- const filterSchema = z.object({ sourceGroups: z.array(z.string().min(1)).optional(), outputGroups: z.array(z.string().min(1)).optional(), origins: z.array(z.string().min(1)).optional(), originFrom: z.string().min(1).optional(), originThrough: z.string().min(1).optional(), valuations: z.array(z.string().min(1)).optional(), valuationFrom: z.string().min(1).optional(), valuationThrough: z.string().min(1).optional(), minDevelopmentAge: z.number().int().nonnegative().optional(), maxDevelopmentAge: z.number().int().nonnegative().optional(), instanceIds: z.array(z.string().min(1)).optional() }).strict();
10
- const cutoffSchema = z.object({ sourceGroup: z.string().min(1), originThrough: z.string().min(1).nullable(), valuationThrough: z.string().min(1).nullable() }).strict();
11
- const expectedSchema = z.object({ sourceGroup: z.string().min(1), origin: z.string().min(1), valuation: z.string().min(1), source: sourceSchema.optional() }).strict();
12
- const jsonSchema = z.lazy(() => z.union([z.null(), z.boolean(), z.number().finite(), z.string(), z.array(jsonSchema), z.record(jsonSchema)]));
13
- const policySchema = z.object({ allowedReviewStatuses: z.array(z.enum(["pass", "warning", "not-evaluated", "fail"])).optional(), allowedMetricFindingSeverities: z.array(z.enum(["info", "warning", "fail"])).optional(), rationaleRef: z.string().min(1).optional() }).strict();
14
- const runSchema = z.object({ definition: z.unknown(), losses: z.array(lossSchema), exposures: z.array(exposureSchema).optional(), filter: filterSchema.optional(), completePeriodCutoffs: z.array(cutoffSchema).optional(), expectedCells: z.array(expectedSchema).optional(), reviewEvidence: jsonSchema.nullable().optional(), runPresetId: z.string().min(1).optional(), datasetArtifactId: z.string().min(1).optional(), groupMap: z.record(z.string().min(1)).optional(), groupDimensions: z.record(jsonSchema).optional(), policy: policySchema.optional() }).strict();
3
+ import { reviewPreparedDiagnosticData, reviewPreparedDiagnosticDataCompact, validateDiagnosticReviewEvidence, } from "./diagnosticPreparedReview.js";
4
+ // Zod 3 validates but drops the literal __proto__ key while assembling records.
5
+ // Encode every key reversibly during validation, then restore owned data keys.
6
+ // The same adapter is exercised by the shared three-shore prototype-key corpus.
7
+ function recordSchema(value) {
8
+ return z
9
+ .record(z.string().transform((key) => `:${key}`), value)
10
+ .transform((record) => Object.fromEntries(Object.entries(record).map(([key, item]) => [key.slice(1), item])));
11
+ }
12
+ const tokenSchema = z
13
+ .string()
14
+ .refine(isDiagnosticToken, "Expected a nonempty token with valid Unicode and no U+0000");
15
+ const jsonStringSchema = z
16
+ .string()
17
+ .refine(isWellFormedDiagnosticString, "Expected valid Unicode without U+0000");
18
+ const sourceSchema = z
19
+ .object({
20
+ artifactId: tokenSchema,
21
+ sourceFile: tokenSchema.optional(),
22
+ sourceSheet: tokenSchema.optional(),
23
+ sourceRow: z.number().int().nonnegative().safe().optional(),
24
+ sourceCell: tokenSchema.optional(),
25
+ })
26
+ .strict();
27
+ const rawNumberSchema = z.custom((value) => typeof value === "number", "Expected number");
28
+ const measuresSchema = recordSchema(z.union([rawNumberSchema, z.null()]));
29
+ const lossBase = {
30
+ recordId: tokenSchema,
31
+ sourceGroup: tokenSchema,
32
+ origin: tokenSchema,
33
+ valuation: tokenSchema,
34
+ complete: z.boolean(),
35
+ source: sourceSchema.optional(),
36
+ measures: measuresSchema,
37
+ };
38
+ const lossSchema = z.discriminatedUnion("rowType", [
39
+ z.object({ ...lossBase, rowType: z.literal("claim"), claimId: tokenSchema }).strict(),
40
+ z.object({ ...lossBase, rowType: z.literal("aggregate") }).strict(),
41
+ ]);
42
+ const exposureSchema = z
43
+ .object({
44
+ key: tokenSchema,
45
+ sourceGroup: tokenSchema,
46
+ origin: tokenSchema,
47
+ valuation: tokenSchema.optional(),
48
+ measureId: tokenSchema,
49
+ value: z.union([rawNumberSchema, z.null()]),
50
+ complete: z.boolean(),
51
+ source: sourceSchema.optional(),
52
+ })
53
+ .strict();
54
+ const filterSchema = z
55
+ .object({
56
+ sourceGroups: z.array(tokenSchema).optional(),
57
+ outputGroups: z.array(tokenSchema).optional(),
58
+ origins: z.array(tokenSchema).optional(),
59
+ originFrom: tokenSchema.optional(),
60
+ originThrough: tokenSchema.optional(),
61
+ valuations: z.array(tokenSchema).optional(),
62
+ valuationFrom: tokenSchema.optional(),
63
+ valuationThrough: tokenSchema.optional(),
64
+ minDevelopmentAge: z.number().int().nonnegative().safe().optional(),
65
+ maxDevelopmentAge: z.number().int().nonnegative().safe().optional(),
66
+ instanceIds: z.array(tokenSchema).optional(),
67
+ })
68
+ .strict();
69
+ const cutoffSchema = z
70
+ .object({
71
+ sourceGroup: tokenSchema,
72
+ originThrough: tokenSchema.nullable(),
73
+ valuationThrough: tokenSchema.nullable(),
74
+ })
75
+ .strict();
76
+ const expectedSchema = z
77
+ .object({
78
+ sourceGroup: tokenSchema,
79
+ origin: tokenSchema,
80
+ valuation: tokenSchema,
81
+ source: sourceSchema.optional(),
82
+ })
83
+ .strict();
84
+ const jsonSchema = z.lazy(() => z.union([
85
+ z.null(),
86
+ z.boolean(),
87
+ z.number().finite(),
88
+ jsonStringSchema,
89
+ z.array(jsonSchema),
90
+ recordSchema(jsonSchema),
91
+ ]));
92
+ const policySchema = z
93
+ .object({
94
+ allowedReviewStatuses: z.array(z.enum(["pass", "warning", "not-evaluated", "fail"])).optional(),
95
+ allowedMetricFindingSeverities: z.array(z.enum(["info", "warning", "fail"])).optional(),
96
+ rationaleRef: tokenSchema.optional(),
97
+ })
98
+ .strict();
99
+ const runSchema = z
100
+ .object({
101
+ definition: z.unknown(),
102
+ losses: z.array(lossSchema),
103
+ exposures: z.array(exposureSchema).optional(),
104
+ filter: filterSchema.optional(),
105
+ completePeriodCutoffs: z.array(cutoffSchema).optional(),
106
+ expectedCells: z.array(expectedSchema).optional(),
107
+ reviewEvidence: z.unknown().nullable().optional(),
108
+ runPresetId: tokenSchema.optional(),
109
+ datasetArtifactId: tokenSchema.optional(),
110
+ groupMap: recordSchema(tokenSchema).optional(),
111
+ groupDimensions: recordSchema(jsonSchema).optional(),
112
+ policy: policySchema.optional(),
113
+ })
114
+ .strict();
15
115
  const authentic = new WeakSet();
16
- function freeze(value, seen = new WeakSet()) { if (value === null || typeof value !== "object" || seen.has(value))
17
- return value; seen.add(value); for (const child of Object.values(value))
18
- freeze(child, seen); return Object.freeze(value); }
19
- function issues(error) { return new DiagnosticValidationError(error.issues.map((issue) => ({ domain: (issue.path[0] === "definition" ? "definition" : issue.path[0] === "losses" || issue.path[0] === "exposures" || issue.path[0] === "reviewEvidence" ? "input" : "configuration"), code: issue.code === "unrecognized_keys" ? "unknown-key" : "invalid-type", path: `$${issue.path.map((part) => typeof part === "number" ? `[${part}]` : /^[A-Za-z_$][\w$]*$/.test(part) ? `.${part}` : `[${JSON.stringify(part)}]`).join("")}`, message: issue.message }))); }
20
- export function validateDiagnosticRunInput(value) {
116
+ // Only owned, frozen inputs can enter this cache. Weak keys do not retain a
117
+ // completed analysis after its caller releases it, and JSON cannot restore it.
118
+ const preparedByInput = new WeakMap();
119
+ const compactPreparedByInput = new WeakMap();
120
+ const compactCompleted = new WeakSet();
121
+ // Retain the exact immutable validated input only while its completed run lives.
122
+ // Reconstructing from the audit would lose the original optional/raw-value form.
123
+ const compactInputByCompletedRun = new WeakMap();
124
+ function freeze(value, seen = new WeakSet()) {
125
+ if (value === null || typeof value !== "object" || seen.has(value))
126
+ return value;
127
+ seen.add(value);
128
+ for (const child of Object.values(value))
129
+ freeze(child, seen);
130
+ return Object.freeze(value);
131
+ }
132
+ function issues(error) {
133
+ return new DiagnosticValidationError(error.issues.map((issue) => ({
134
+ domain: (issue.path[0] === "definition"
135
+ ? "definition"
136
+ : issue.path[0] === "losses" ||
137
+ issue.path[0] === "exposures" ||
138
+ issue.path[0] === "reviewEvidence"
139
+ ? "input"
140
+ : "configuration"),
141
+ code: issue.code === "unrecognized_keys" ? "unknown-key" : "invalid-type",
142
+ path: `$${issue.path.map((part) => (typeof part === "number" ? `[${part}]` : /^[A-Za-z_$][\w$]*$/.test(part) ? `.${part}` : `[${JSON.stringify(part)}]`)).join("")}`,
143
+ message: issue.message,
144
+ })));
145
+ }
146
+ function codeUnit(left, right) {
147
+ return left < right ? -1 : left > right ? 1 : 0;
148
+ }
149
+ function sortedRecord(value) {
150
+ const result = diagnosticRecord();
151
+ for (const key of Object.keys(value).sort(codeUnit))
152
+ result[key] = value[key];
153
+ return result;
154
+ }
155
+ function explicitUndefinedIssues(value) {
156
+ const found = [];
157
+ const stack = [{ value, path: "$" }];
158
+ const seen = new WeakSet();
159
+ while (stack.length > 0) {
160
+ const current = stack.pop();
161
+ if (current.value === null || typeof current.value !== "object" || seen.has(current.value))
162
+ continue;
163
+ seen.add(current.value);
164
+ for (const [key, child] of Object.entries(current.value)) {
165
+ const path = Array.isArray(current.value)
166
+ ? `${current.path}[${key}]`
167
+ : /^[A-Za-z_$][\w$]*$/.test(key)
168
+ ? `${current.path}.${key}`
169
+ : `${current.path}[${JSON.stringify(key)}]`;
170
+ if (child === undefined)
171
+ found.push({
172
+ domain: path.startsWith("$.definition")
173
+ ? "definition"
174
+ : path.startsWith("$.losses") ||
175
+ path.startsWith("$.exposures") ||
176
+ path.startsWith("$.reviewEvidence")
177
+ ? "input"
178
+ : "configuration",
179
+ code: "invalid-type",
180
+ path,
181
+ message: "Explicit undefined is not allowed",
182
+ });
183
+ else
184
+ stack.push({ value: child, path });
185
+ }
186
+ }
187
+ return found;
188
+ }
189
+ // Both public gateways share the same full validation/ownership boundary.
190
+ // Selecting compact storage never invokes the eager preparation first.
191
+ function validateRunInputContent(value) {
192
+ const undefinedIssues = explicitUndefinedIssues(value);
193
+ if (undefinedIssues.length > 0)
194
+ throw new DiagnosticValidationError(undefinedIssues);
21
195
  const parsed = runSchema.safeParse(value);
22
196
  if (!parsed.success)
23
197
  throw issues(parsed.error);
24
198
  const definition = compileDiagnosticDefinition(parsed.data.definition);
25
- const relationIssues = parsed.data.losses.flatMap((row, index) => row.rowType === definition.definition.lossRowGrain ? [] : [{ domain: "input", code: "invalid-input-relationship", path: `$.losses[${index}].rowType`, message: "Loss row type does not match definition grain" }]);
199
+ const relationIssues = parsed.data.losses.flatMap((row, index) => row.rowType === definition.definition.lossRowGrain
200
+ ? []
201
+ : [
202
+ {
203
+ domain: "input",
204
+ code: "invalid-input-relationship",
205
+ path: `$.losses[${index}].rowType`,
206
+ message: "Loss row type does not match definition grain",
207
+ },
208
+ ]);
26
209
  for (const [index, row] of (parsed.data.exposures ?? []).entries()) {
27
210
  const measure = definition.definition.measures.find((item) => item.id === row.measureId);
28
211
  if (measure?.exposureTiming === "valuation-specific" && row.valuation === undefined)
29
- relationIssues.push({ domain: "input", code: "missing-required", path: `$.exposures[${index}].valuation`, message: "Valuation-specific exposure requires valuation" });
212
+ relationIssues.push({
213
+ domain: "input",
214
+ code: "missing-required",
215
+ path: `$.exposures[${index}].valuation`,
216
+ message: "Valuation-specific exposure requires valuation",
217
+ });
30
218
  }
31
219
  if (relationIssues.length)
32
220
  throw new DiagnosticValidationError(relationIssues);
@@ -34,30 +222,306 @@ export function validateDiagnosticRunInput(value) {
34
222
  const metric = parsed.data.policy?.allowedMetricFindingSeverities ?? ["info", "warning"];
35
223
  const rationale = parsed.data.policy?.rationaleRef ?? null;
36
224
  if ((review.includes("fail") || metric.includes("fail")) && rationale === null)
37
- throw new DiagnosticValidationError([{ domain: "configuration", code: "missing-required", path: "$.policy.rationaleRef", message: "A rationale is required when fail outcomes are allowed" }]);
38
- const result = freeze({ definition, losses: parsed.data.losses, exposures: parsed.data.exposures ?? [], filter: parsed.data.filter ?? null, completePeriodCutoffs: parsed.data.completePeriodCutoffs ?? [], expectedCells: parsed.data.expectedCells ?? null, reviewEvidence: parsed.data.reviewEvidence ?? null, runPresetId: parsed.data.runPresetId ?? null, datasetArtifactId: parsed.data.datasetArtifactId ?? null, groupMap: parsed.data.groupMap ?? Object.create(null), groupDimensions: parsed.data.groupDimensions ?? Object.create(null), policy: { allowedReviewStatuses: [...new Set(review)], allowedMetricFindingSeverities: [...new Set(metric)], rationaleRef: rationale } });
225
+ throw new DiagnosticValidationError([
226
+ {
227
+ domain: "configuration",
228
+ code: "missing-required",
229
+ path: "$.policy.rationaleRef",
230
+ message: "A rationale is required when fail outcomes are allowed",
231
+ },
232
+ ]);
233
+ const reviewEvidence = parsed.data.reviewEvidence === undefined || parsed.data.reviewEvidence === null
234
+ ? null
235
+ : validateDiagnosticReviewEvidence(parsed.data.reviewEvidence, "$.reviewEvidence");
236
+ const reviewOrder = [
237
+ "pass",
238
+ "warning",
239
+ "not-evaluated",
240
+ "fail",
241
+ ];
242
+ const metricOrder = ["info", "warning", "fail"];
243
+ for (const key of [
244
+ ...Object.keys(parsed.data.groupMap ?? {}),
245
+ ...Object.keys(parsed.data.groupDimensions ?? {}),
246
+ ])
247
+ if (!isDiagnosticToken(key))
248
+ throw new DiagnosticValidationError([
249
+ {
250
+ domain: "configuration",
251
+ code: "invalid-string",
252
+ path: `$.groupMap[${JSON.stringify(key)}]`,
253
+ message: "Group key must be a nonempty token with valid Unicode and no U+0000",
254
+ },
255
+ ]);
256
+ const result = freeze({
257
+ definition,
258
+ losses: parsed.data.losses,
259
+ exposures: parsed.data.exposures ?? [],
260
+ filter: parsed.data.filter ?? null,
261
+ completePeriodCutoffs: parsed.data.completePeriodCutoffs ?? [],
262
+ expectedCells: parsed.data.expectedCells ?? null,
263
+ reviewEvidence,
264
+ runPresetId: parsed.data.runPresetId ?? null,
265
+ datasetArtifactId: parsed.data.datasetArtifactId ?? null,
266
+ groupMap: sortedRecord(parsed.data.groupMap ?? diagnosticRecord()),
267
+ groupDimensions: sortedRecord(parsed.data.groupDimensions ?? diagnosticRecord()),
268
+ policy: {
269
+ allowedReviewStatuses: reviewOrder.filter((status) => review.includes(status)),
270
+ allowedMetricFindingSeverities: metricOrder.filter((severity) => metric.includes(severity)),
271
+ rationaleRef: rationale,
272
+ },
273
+ });
274
+ return result;
275
+ }
276
+ function preparationInput(input) {
277
+ return {
278
+ definition: input.definition,
279
+ losses: input.losses,
280
+ exposures: input.exposures,
281
+ ...(input.filter === null ? {} : { filter: input.filter }),
282
+ completePeriodCutoffs: input.completePeriodCutoffs,
283
+ ...(input.expectedCells === null ? {} : { expectedCells: input.expectedCells }),
284
+ };
285
+ }
286
+ export function validateDiagnosticRunInput(value) {
287
+ const result = validateRunInputContent(value);
288
+ const prepared = prepareDiagnosticData(preparationInput(result));
289
+ validateDiagnosticGroupingConfiguration({
290
+ prepared,
291
+ groupMap: result.groupMap,
292
+ groupDimensions: result.groupDimensions,
293
+ });
39
294
  authentic.add(result);
295
+ preparedByInput.set(result, prepared);
296
+ return result;
297
+ }
298
+ /** Validate, own and prepare inputs without eagerly materializing identity graphs. */
299
+ export function validateDiagnosticRunInputCompact(value) {
300
+ const result = validateRunInputContent(value);
301
+ const prepared = prepareDiagnosticDataCompact(preparationInput(result));
302
+ validateCompactDiagnosticGroupingConfiguration({
303
+ prepared,
304
+ groupMap: result.groupMap,
305
+ groupDimensions: result.groupDimensions,
306
+ });
307
+ compactPreparedByInput.set(result, prepared);
40
308
  return result;
41
309
  }
42
- export function assertValidatedDiagnosticRunInput(value) { if (value === null || typeof value !== "object" || !authentic.has(value))
43
- throw new DiagnosticValidationError([{ domain: "input", code: "invalid-input-relationship", path: "$", message: "Value is not an authentic validated diagnostic run input" }]); }
310
+ export function assertCompactValidatedDiagnosticRunInput(value) {
311
+ if (value === null ||
312
+ typeof value !== "object" ||
313
+ !compactPreparedByInput.has(value))
314
+ throw new DiagnosticValidationError([
315
+ {
316
+ domain: "input",
317
+ code: "invalid-input-relationship",
318
+ path: "$",
319
+ message: "Value is not an authentic compact validated diagnostic run input",
320
+ },
321
+ ]);
322
+ }
323
+ export function assertValidatedDiagnosticRunInput(value) {
324
+ if (value === null || typeof value !== "object" || !authentic.has(value))
325
+ throw new DiagnosticValidationError([
326
+ {
327
+ domain: "input",
328
+ code: "invalid-input-relationship",
329
+ path: "$",
330
+ message: "Value is not an authentic validated diagnostic run input",
331
+ },
332
+ ]);
333
+ }
44
334
  const completed = new WeakSet();
45
335
  export function runValidatedMetricDiagnostics(input) {
46
336
  assertValidatedDiagnosticRunInput(input);
47
- const prepared = prepareDiagnosticData({ definition: input.definition, losses: input.losses, exposures: input.exposures, filter: input.filter ?? undefined, completePeriodCutoffs: input.completePeriodCutoffs, expectedCells: input.expectedCells ?? undefined });
48
- const review = reviewPreparedDiagnosticData({ prepared, evidence: input.reviewEvidence });
49
- const disallowedReview = review.report.checks.some((check) => !input.policy.allowedReviewStatuses.includes(check.status));
50
- const base = { prepared, review, runPresetId: input.runPresetId, datasetArtifactId: input.datasetArtifactId, groupMap: input.groupMap, groupDimensions: input.groupDimensions };
337
+ // Validation already prepared these exact immutable inputs and checked their
338
+ // grouping. Reuse the authentic result without skipping any execution gate.
339
+ const prepared = preparedByInput.get(input);
340
+ validateDiagnosticGroupingConfiguration({
341
+ prepared,
342
+ groupMap: input.groupMap,
343
+ groupDimensions: input.groupDimensions,
344
+ });
345
+ const review = reviewPreparedDiagnosticData({
346
+ prepared,
347
+ evidence: input.reviewEvidence,
348
+ });
349
+ const evaluationStatus = (evaluation) => evaluation.expressionOverflows.length > 0
350
+ ? "fail"
351
+ : evaluation.status === "not-evaluated"
352
+ ? "not-evaluated"
353
+ : evaluation.status === "triggered"
354
+ ? evaluation.severity
355
+ : "pass";
356
+ const disallowedReview = review.report.checks.some((check) => !input.policy.allowedReviewStatuses.includes(check.status)) ||
357
+ review.evaluations.some((evaluation) => !input.policy.allowedReviewStatuses.includes(evaluationStatus(evaluation)));
358
+ const base = {
359
+ prepared,
360
+ review,
361
+ runPresetId: input.runPresetId,
362
+ datasetArtifactId: input.datasetArtifactId,
363
+ groupMap: input.groupMap,
364
+ groupDimensions: input.groupDimensions,
365
+ };
366
+ // These graphs were deeply frozen by their authentic SDK constructors. Walk
367
+ // only the new outcome envelope; a shallow-frozen caller object never enters
368
+ // this set, so the public input boundary still checks/freezes every child.
369
+ const frozenSdkGraphs = new WeakSet([prepared, review]);
370
+ const freezeOutcome = (value) => freeze(value, frozenSdkGraphs);
51
371
  if (disallowedReview)
52
- return freeze({ ...base, status: "blocked", stage: "review", result: null, gate: { ...input.policy, reviewGate: "blocked", metricGate: "not-run" } });
53
- const result = runMetricDiagnostics({ prepared, groupMap: input.groupMap, groupDimensions: input.groupDimensions });
54
- const disallowedMetric = result.findings.some((finding) => finding.category !== "structural" && !input.policy.allowedMetricFindingSeverities.includes(finding.severity));
372
+ return freezeOutcome({
373
+ ...base,
374
+ status: "blocked",
375
+ stage: "review",
376
+ result: null,
377
+ gate: {
378
+ ...input.policy,
379
+ reviewGate: "blocked",
380
+ metricGate: "not-run",
381
+ },
382
+ });
383
+ const result = runMetricDiagnostics({
384
+ prepared,
385
+ groupMap: input.groupMap,
386
+ groupDimensions: input.groupDimensions,
387
+ });
388
+ frozenSdkGraphs.add(result);
389
+ const disallowedMetric = result.findings.some((finding) => finding.category !== "structural" &&
390
+ !input.policy.allowedMetricFindingSeverities.includes(finding.severity));
55
391
  if (disallowedMetric)
56
- return freeze({ ...base, status: "blocked", stage: "metric", result, gate: { ...input.policy, reviewGate: "passed", metricGate: "blocked" } });
57
- const outcome = freeze({ ...base, status: "completed", result, gate: { ...input.policy, reviewGate: "passed", metricGate: "passed" } });
392
+ return freezeOutcome({
393
+ ...base,
394
+ status: "blocked",
395
+ stage: "metric",
396
+ result,
397
+ gate: {
398
+ ...input.policy,
399
+ reviewGate: "passed",
400
+ metricGate: "blocked",
401
+ },
402
+ });
403
+ const outcome = freezeOutcome({
404
+ ...base,
405
+ status: "completed",
406
+ result,
407
+ gate: {
408
+ ...input.policy,
409
+ reviewGate: "passed",
410
+ metricGate: "passed",
411
+ },
412
+ });
58
413
  completed.add(outcome);
59
414
  return outcome;
60
415
  }
61
- export function assertCompletedValidatedMetricDiagnosticsRun(value) { if (value === null || typeof value !== "object" || !completed.has(value))
62
- throw new DiagnosticValidationError([{ domain: "input", code: "invalid-input-relationship", path: "$", message: "Value is not an authentic completed diagnostic run" }]); }
416
+ export function assertCompletedValidatedMetricDiagnosticsRun(value) {
417
+ if (value === null || typeof value !== "object" || !completed.has(value))
418
+ throw new DiagnosticValidationError([
419
+ {
420
+ domain: "input",
421
+ code: "invalid-input-relationship",
422
+ path: "$",
423
+ message: "Value is not an authentic completed diagnostic run",
424
+ },
425
+ ]);
426
+ }
427
+ /** Run every review and metric gate while retaining complete compact evidence. */
428
+ export function runValidatedMetricDiagnosticsCompact(input) {
429
+ assertCompactValidatedDiagnosticRunInput(input);
430
+ const prepared = compactPreparedByInput.get(input);
431
+ validateCompactDiagnosticGroupingConfiguration({
432
+ prepared,
433
+ groupMap: input.groupMap,
434
+ groupDimensions: input.groupDimensions,
435
+ });
436
+ const review = reviewPreparedDiagnosticDataCompact({
437
+ prepared,
438
+ evidence: input.reviewEvidence,
439
+ });
440
+ const counts = review.evaluations.summary;
441
+ // Aggregate check status and individual effective status are both necessary:
442
+ // an allowed failure must not hide a disallowed not-evaluated row (or vice versa).
443
+ const effectiveCounts = {
444
+ pass: counts.pass,
445
+ warning: counts.warning,
446
+ "not-evaluated": counts.notEvaluated,
447
+ fail: counts.fail,
448
+ };
449
+ const disallowedReview = review.report.checks.some((check) => !input.policy.allowedReviewStatuses.includes(check.status)) ||
450
+ Object.keys(effectiveCounts).some((status) => effectiveCounts[status] > 0 && !input.policy.allowedReviewStatuses.includes(status));
451
+ const base = {
452
+ prepared,
453
+ review,
454
+ runPresetId: input.runPresetId,
455
+ datasetArtifactId: input.datasetArtifactId,
456
+ groupMap: input.groupMap,
457
+ groupDimensions: input.groupDimensions,
458
+ };
459
+ const frozenSdkGraphs = new WeakSet([prepared, review]);
460
+ const freezeOutcome = (value) => freeze(value, frozenSdkGraphs);
461
+ if (disallowedReview)
462
+ return freezeOutcome({
463
+ ...base,
464
+ status: "blocked",
465
+ stage: "review",
466
+ result: null,
467
+ gate: {
468
+ ...input.policy,
469
+ reviewGate: "blocked",
470
+ metricGate: "not-run",
471
+ },
472
+ });
473
+ const result = runMetricDiagnosticsCompact({
474
+ prepared,
475
+ groupMap: input.groupMap,
476
+ groupDimensions: input.groupDimensions,
477
+ });
478
+ frozenSdkGraphs.add(result);
479
+ const disallowedMetric = result.findings.some((finding) => finding.category !== "structural" &&
480
+ !input.policy.allowedMetricFindingSeverities.includes(finding.severity));
481
+ if (disallowedMetric)
482
+ return freezeOutcome({
483
+ ...base,
484
+ status: "blocked",
485
+ stage: "metric",
486
+ result,
487
+ gate: {
488
+ ...input.policy,
489
+ reviewGate: "passed",
490
+ metricGate: "blocked",
491
+ },
492
+ });
493
+ const outcome = freezeOutcome({
494
+ ...base,
495
+ status: "completed",
496
+ result,
497
+ gate: {
498
+ ...input.policy,
499
+ reviewGate: "passed",
500
+ metricGate: "passed",
501
+ },
502
+ });
503
+ compactCompleted.add(outcome);
504
+ compactInputByCompletedRun.set(outcome, input);
505
+ return outcome;
506
+ }
507
+ export function assertCompletedCompactMetricDiagnosticsRun(value) {
508
+ if (value === null || typeof value !== "object" || !compactCompleted.has(value))
509
+ throw new DiagnosticValidationError([
510
+ {
511
+ domain: "input",
512
+ code: "invalid-input-relationship",
513
+ path: "$",
514
+ message: "Value is not an authentic completed compact diagnostic run",
515
+ },
516
+ ]);
517
+ }
518
+ /**
519
+ * Return the original SDK-owned validated input for an authentic completed run.
520
+ * This is the same deeply immutable input owner, not a reconstruction from its
521
+ * normalized audit or a mutable copy of the caller's upload values.
522
+ */
523
+ export function getCompletedCompactDiagnosticRunInput(run) {
524
+ assertCompletedCompactMetricDiagnosticsRun(run);
525
+ return compactInputByCompletedRun.get(run);
526
+ }
63
527
  //# sourceMappingURL=diagnosticInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnosticInput.js","sourceRoot":"","sources":["../src/diagnosticInput.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnosticInput.js","sourceRoot":"","sources":["../src/diagnosticInput.ts"],"names":[],"mappings":"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"}