@actuarial-ts/compliance 0.7.1 → 0.8.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.
- package/README.md +30 -5
- package/dist/bundle.d.ts +1 -1
- package/dist/customizationBoundedReplay.d.ts +64 -0
- package/dist/customizationBoundedReplay.d.ts.map +1 -0
- package/dist/customizationBoundedReplay.js +456 -0
- package/dist/customizationBoundedReplay.js.map +1 -0
- package/dist/customizationHistoryReplay.d.ts +39 -0
- package/dist/customizationHistoryReplay.d.ts.map +1 -0
- package/dist/customizationHistoryReplay.js +147 -0
- package/dist/customizationHistoryReplay.js.map +1 -0
- package/dist/customizationRun.d.ts +29 -0
- package/dist/customizationRun.d.ts.map +1 -0
- package/dist/customizationRun.js +60 -0
- package/dist/customizationRun.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -5
- package/src/customizationBoundedReplay.ts +524 -0
- package/src/customizationHistoryReplay.ts +221 -0
- package/src/customizationRun.ts +113 -0
- package/src/index.ts +3 -0
- package/src/version.ts +1 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type AnalysisStatisticDefinition, type CustomizationResourceLimits, type HistoricalDatasetInput } from "@actuarial-ts/core";
|
|
2
|
+
import { type CustomizationExternalStateAdapter } from "@actuarial-ts/data";
|
|
3
|
+
import { type ComputedDiagnosticArtifactDigest } from "./diagnosticArtifactStream.js";
|
|
4
|
+
import { type BoundedReplayMeasure } from "./customizationBoundedReplay.js";
|
|
5
|
+
type MergeableHistoryStatistic = Extract<AnalysisStatisticDefinition, {
|
|
6
|
+
readonly kind: "sum" | "ratio" | "weighted-mean" | "minimum" | "maximum";
|
|
7
|
+
}>;
|
|
8
|
+
/** Statistics that can be calculated directly while normalized history is streamed. */
|
|
9
|
+
export interface BoundedHistoryReplayMeasure extends Omit<BoundedReplayMeasure, "statistic" | "orderedPopulationSize"> {
|
|
10
|
+
readonly statistic: MergeableHistoryStatistic;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Connects raw versioned history to independently verifiable bounded replay.
|
|
14
|
+
*
|
|
15
|
+
* The function performs two host-owned external stages. The first resolves raw
|
|
16
|
+
* revisions one claim at a time. The second retains normalized selected
|
|
17
|
+
* records until preparation has completed without findings. No replay header
|
|
18
|
+
* is emitted before that review gate passes, so failed or cancelled work cannot
|
|
19
|
+
* be mistaken for a completed artifact.
|
|
20
|
+
*
|
|
21
|
+
* This path intentionally supports mergeable statistics only. Exact distinct
|
|
22
|
+
* counts and quantiles require their documented external ordering, while
|
|
23
|
+
* exposure joins and shared financial terms use their capability-specific
|
|
24
|
+
* execution paths.
|
|
25
|
+
*/
|
|
26
|
+
export declare function writeBoundedHistoryAnalysisReplay(input: {
|
|
27
|
+
readonly runId: string;
|
|
28
|
+
readonly sourceArtifact: ComputedDiagnosticArtifactDigest;
|
|
29
|
+
readonly header: Omit<HistoricalDatasetInput, "records">;
|
|
30
|
+
readonly records: AsyncIterable<unknown> | Iterable<unknown>;
|
|
31
|
+
readonly evaluationDate: string;
|
|
32
|
+
readonly observationSelection: "exact" | "latest-on-or-before";
|
|
33
|
+
readonly measures: readonly BoundedHistoryReplayMeasure[];
|
|
34
|
+
readonly adapter: CustomizationExternalStateAdapter;
|
|
35
|
+
readonly limits: CustomizationResourceLimits;
|
|
36
|
+
readonly signal?: AbortSignal;
|
|
37
|
+
}): AsyncGenerator<Uint8Array>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=customizationHistoryReplay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customizationHistoryReplay.d.ts","sourceRoot":"","sources":["../src/customizationHistoryReplay.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAG5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAML,KAAK,iCAAiC,EACvC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEL,KAAK,gCAAgC,EACtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,iCAAiC,CAAC;AAEzC,KAAK,yBAAyB,GAAG,OAAO,CACtC,2BAA2B,EAC3B;IACE,QAAQ,CAAC,IAAI,EACT,KAAK,GACL,OAAO,GACP,eAAe,GACf,SAAS,GACT,SAAS,CAAC;CACf,CACF,CAAC;AAEF,uFAAuF;AACvF,MAAM,WAAW,2BACf,SAAQ,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,uBAAuB,CAAC;IACzE,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;CAC/C;AAkCD;;;;;;;;;;;;;GAaG;AACH,wBAAuB,iCAAiC,CAAC,KAAK,EAAE;IAC9D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,gCAAgC,CAAC;IAC1D,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IACzD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,GAAG,qBAAqB,CAAC;IAC/D,QAAQ,CAAC,QAAQ,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B,GAAG,cAAc,CAAC,UAAU,CAAC,CAmH7B"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { canonicalJson, fnv1a64, isDiagnosticToken, isRealIsoDate, } from "@actuarial-ts/core";
|
|
2
|
+
import { externalSortCustomizationRecords, parseCustomizationResourceLimits, parseHistoricalDatasetInput, streamPreparedHistoricalDataset, } from "@actuarial-ts/data";
|
|
3
|
+
import { ComplianceError } from "./errors.js";
|
|
4
|
+
import { assertComputedDiagnosticArtifactDigest, } from "./diagnosticArtifactStream.js";
|
|
5
|
+
import { writeBoundedAnalysisReplay, parseBoundedReplayMeasures, } from "./customizationBoundedReplay.js";
|
|
6
|
+
function selectedRecord(observation) {
|
|
7
|
+
const claimKey = canonicalJson([
|
|
8
|
+
observation.sourceNamespace,
|
|
9
|
+
observation.claimId,
|
|
10
|
+
]);
|
|
11
|
+
const identity = canonicalJson([
|
|
12
|
+
observation.sourceNamespace,
|
|
13
|
+
observation.claimId,
|
|
14
|
+
observation.evaluationDate,
|
|
15
|
+
]);
|
|
16
|
+
return {
|
|
17
|
+
id: `selected-${fnv1a64(identity)}`,
|
|
18
|
+
partitionKey: claimKey,
|
|
19
|
+
orderKey: observation.evaluationDate,
|
|
20
|
+
value: { measures: observation.measures },
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function reviewFailure(code, message) {
|
|
24
|
+
throw new ComplianceError("BAD_DIAGNOSTIC_RUN", `Historical preparation review failed (${code}): ${message}`, "$.boundedHistoryReplay");
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Connects raw versioned history to independently verifiable bounded replay.
|
|
28
|
+
*
|
|
29
|
+
* The function performs two host-owned external stages. The first resolves raw
|
|
30
|
+
* revisions one claim at a time. The second retains normalized selected
|
|
31
|
+
* records until preparation has completed without findings. No replay header
|
|
32
|
+
* is emitted before that review gate passes, so failed or cancelled work cannot
|
|
33
|
+
* be mistaken for a completed artifact.
|
|
34
|
+
*
|
|
35
|
+
* This path intentionally supports mergeable statistics only. Exact distinct
|
|
36
|
+
* counts and quantiles require their documented external ordering, while
|
|
37
|
+
* exposure joins and shared financial terms use their capability-specific
|
|
38
|
+
* execution paths.
|
|
39
|
+
*/
|
|
40
|
+
export async function* writeBoundedHistoryAnalysisReplay(input) {
|
|
41
|
+
const runId = input.runId;
|
|
42
|
+
const sourceArtifact = input.sourceArtifact;
|
|
43
|
+
const records = input.records;
|
|
44
|
+
const adapter = input.adapter;
|
|
45
|
+
const signal = input.signal;
|
|
46
|
+
const evaluationDate = input.evaluationDate;
|
|
47
|
+
const observationSelection = input.observationSelection;
|
|
48
|
+
const limits = parseCustomizationResourceLimits(input.limits);
|
|
49
|
+
const parsedHeader = parseHistoricalDatasetInput({ ...input.header, records: [] });
|
|
50
|
+
const { records: _emptyRecords, ...header } = parsedHeader;
|
|
51
|
+
const parsedMeasures = parseBoundedReplayMeasures(input.measures, limits);
|
|
52
|
+
if (parsedMeasures.some((measure) => !["sum", "ratio", "weighted-mean", "minimum", "maximum"].includes(measure.statistic.kind)))
|
|
53
|
+
reviewFailure("unsupported-statistic", "Raw-history replay supports mergeable statistics only");
|
|
54
|
+
const measures = parsedMeasures;
|
|
55
|
+
const historyContext = JSON.parse(canonicalJson(header));
|
|
56
|
+
if (!isDiagnosticToken(runId))
|
|
57
|
+
reviewFailure("invalid-run", "runId must be a valid token");
|
|
58
|
+
assertComputedDiagnosticArtifactDigest(sourceArtifact);
|
|
59
|
+
if (!isRealIsoDate(evaluationDate))
|
|
60
|
+
reviewFailure("invalid-period", "evaluationDate must be a real Gregorian date");
|
|
61
|
+
if (observationSelection !== "exact" && observationSelection !== "latest-on-or-before")
|
|
62
|
+
reviewFailure("invalid-selection", "observationSelection is invalid");
|
|
63
|
+
async function* normalized() {
|
|
64
|
+
let claimKey;
|
|
65
|
+
let claim = [];
|
|
66
|
+
const selected = function* () {
|
|
67
|
+
const candidates = claim.filter((observation) => observationSelection === "exact"
|
|
68
|
+
? observation.evaluationDate === evaluationDate
|
|
69
|
+
: observation.evaluationDate <= evaluationDate);
|
|
70
|
+
const observation = candidates.reduce((latest, candidate) => latest === undefined || candidate.evaluationDate > latest.evaluationDate
|
|
71
|
+
? candidate
|
|
72
|
+
: latest, undefined);
|
|
73
|
+
if (observation !== undefined)
|
|
74
|
+
yield selectedRecord(observation);
|
|
75
|
+
claim = [];
|
|
76
|
+
};
|
|
77
|
+
for await (const event of streamPreparedHistoricalDataset({
|
|
78
|
+
runId: `${runId}-raw`,
|
|
79
|
+
header,
|
|
80
|
+
records,
|
|
81
|
+
adapter,
|
|
82
|
+
limits,
|
|
83
|
+
...(signal === undefined ? {} : { signal }),
|
|
84
|
+
})) {
|
|
85
|
+
if (event.kind === "finding")
|
|
86
|
+
reviewFailure(event.finding.code, event.finding.message);
|
|
87
|
+
if (event.kind === "observation") {
|
|
88
|
+
const nextClaimKey = canonicalJson([
|
|
89
|
+
event.observation.sourceNamespace,
|
|
90
|
+
event.observation.claimId,
|
|
91
|
+
]);
|
|
92
|
+
if (claimKey !== undefined && nextClaimKey !== claimKey)
|
|
93
|
+
yield* selected();
|
|
94
|
+
claimKey = nextClaimKey;
|
|
95
|
+
claim.push(event.observation);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
yield* selected();
|
|
99
|
+
}
|
|
100
|
+
const staged = externalSortCustomizationRecords({
|
|
101
|
+
runId: `${runId}-selected`,
|
|
102
|
+
records: normalized(),
|
|
103
|
+
adapter,
|
|
104
|
+
limits,
|
|
105
|
+
...(signal === undefined ? {} : { signal }),
|
|
106
|
+
});
|
|
107
|
+
const iterator = staged[Symbol.asyncIterator]();
|
|
108
|
+
// Pulling the first record completes both preparation and the review gate.
|
|
109
|
+
// It retains at most one selected record in SDK memory.
|
|
110
|
+
const first = await iterator.next();
|
|
111
|
+
async function* reviewedRecords() {
|
|
112
|
+
try {
|
|
113
|
+
if (!first.done)
|
|
114
|
+
yield first.value;
|
|
115
|
+
if (!first.done) {
|
|
116
|
+
for (;;) {
|
|
117
|
+
const next = await iterator.next();
|
|
118
|
+
if (next.done)
|
|
119
|
+
break;
|
|
120
|
+
yield next.value;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
finally {
|
|
125
|
+
await iterator.return?.(undefined);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
yield* writeBoundedAnalysisReplay({
|
|
130
|
+
runId,
|
|
131
|
+
sourceArtifact,
|
|
132
|
+
measures,
|
|
133
|
+
calculationContext: {
|
|
134
|
+
history: historyContext,
|
|
135
|
+
evaluationDate,
|
|
136
|
+
observationSelection,
|
|
137
|
+
},
|
|
138
|
+
records: reviewedRecords(),
|
|
139
|
+
limits,
|
|
140
|
+
...(signal === undefined ? {} : { signal }),
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
await iterator.return?.(undefined);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=customizationHistoryReplay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customizationHistoryReplay.js","sourceRoot":"","sources":["../src/customizationHistoryReplay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type AnalysisDefinition, type AnalysisRecipe, type AnalysisResult, type CustomizationExposureObservation, type ExposureAllocationTarget, type ExposureRevisionSelection, type HistoricalDatasetInput } from "@actuarial-ts/core";
|
|
2
|
+
import { type ComputedDiagnosticArtifactDigest } from "./diagnosticArtifactStream.js";
|
|
3
|
+
import type { DiagnosticArtifactDigest } from "./diagnosticRun.js";
|
|
4
|
+
declare const verifiedCustomizationRunBrand: unique symbol;
|
|
5
|
+
export interface VerifiedCustomizationAnalysisRun {
|
|
6
|
+
readonly [verifiedCustomizationRunBrand]: true;
|
|
7
|
+
readonly assurance: "sdk-rerun-verified";
|
|
8
|
+
readonly runIdentity: string;
|
|
9
|
+
readonly result: AnalysisResult;
|
|
10
|
+
readonly inputArtifacts: readonly DiagnosticArtifactDigest[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Revalidates and reruns a complete supported customization recipe, then issues
|
|
14
|
+
* an authentic receipt binding the exact output to the supplied source digests.
|
|
15
|
+
*/
|
|
16
|
+
export declare function verifyCustomizationAnalysisRun(input: {
|
|
17
|
+
readonly history: HistoricalDatasetInput;
|
|
18
|
+
readonly definition: AnalysisDefinition;
|
|
19
|
+
readonly recipe: AnalysisRecipe;
|
|
20
|
+
readonly expectedResult: AnalysisResult;
|
|
21
|
+
readonly inputArtifacts: readonly ComputedDiagnosticArtifactDigest[];
|
|
22
|
+
readonly exposureObservations?: readonly CustomizationExposureObservation[];
|
|
23
|
+
readonly exposureTargets?: readonly ExposureAllocationTarget[];
|
|
24
|
+
readonly exposureRevisionSelection?: ExposureRevisionSelection;
|
|
25
|
+
readonly evaluationDate?: string;
|
|
26
|
+
}): VerifiedCustomizationAnalysisRun;
|
|
27
|
+
export declare function assertVerifiedCustomizationAnalysisRun(value: unknown): asserts value is VerifiedCustomizationAnalysisRun;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=customizationRun.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customizationRun.d.ts","sourceRoot":"","sources":["../src/customizationRun.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,gCAAgC,EACrC,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAW5B,OAAO,EAEL,KAAK,gCAAgC,EACtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,CAAC,MAAM,6BAA6B,EAAE,OAAO,MAAM,CAAC;AAC3D,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,CAAC,6BAA6B,CAAC,EAAE,IAAI,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,SAAS,wBAAwB,EAAE,CAAC;CAC9D;AAQD;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,SAAS,gCAAgC,EAAE,CAAC;IACrE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAC5E,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC/D,QAAQ,CAAC,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IAC/D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC,GAAG,gCAAgC,CA+CnC;AAED,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,gCAAgC,CAGnD"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { canonicalJson, fnv1a64, isRealIsoDate, runAnalysisRecipe, } from "@actuarial-ts/core";
|
|
2
|
+
import { parseAnalysisDefinition, parseAnalysisRecipe, parseAnalysisResult, parseCustomizationExposureObservations, parseExposureAllocationTargets, parseExposureRevisionSelection, parseHistoricalDatasetInput, } from "@actuarial-ts/data";
|
|
3
|
+
import { ComplianceError } from "./errors.js";
|
|
4
|
+
import { assertComputedDiagnosticArtifactDigest, } from "./diagnosticArtifactStream.js";
|
|
5
|
+
const verifiedRuns = new WeakSet();
|
|
6
|
+
function invalid(message, path = "$.customizationRun") {
|
|
7
|
+
throw new ComplianceError("BAD_DIAGNOSTIC_RUN", message, path);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Revalidates and reruns a complete supported customization recipe, then issues
|
|
11
|
+
* an authentic receipt binding the exact output to the supplied source digests.
|
|
12
|
+
*/
|
|
13
|
+
export function verifyCustomizationAnalysisRun(input) {
|
|
14
|
+
if (!Array.isArray(input.inputArtifacts) || input.inputArtifacts.length === 0)
|
|
15
|
+
invalid("Customization verification requires at least one authentic input artifact", "$.inputArtifacts");
|
|
16
|
+
const artifacts = [...input.inputArtifacts];
|
|
17
|
+
artifacts.forEach(assertComputedDiagnosticArtifactDigest);
|
|
18
|
+
if (new Set(artifacts.map((artifact) => artifact.id)).size !== artifacts.length)
|
|
19
|
+
invalid("Customization input artifact IDs must be unique", "$.inputArtifacts");
|
|
20
|
+
if (input.evaluationDate !== undefined && !isRealIsoDate(input.evaluationDate))
|
|
21
|
+
invalid("Customization evaluationDate must be a real Gregorian date", "$.evaluationDate");
|
|
22
|
+
const history = parseHistoricalDatasetInput(input.history);
|
|
23
|
+
const definition = parseAnalysisDefinition(input.definition);
|
|
24
|
+
const recipe = parseAnalysisRecipe(input.recipe);
|
|
25
|
+
const expected = parseAnalysisResult(input.expectedResult);
|
|
26
|
+
const exposureObservations = parseCustomizationExposureObservations(input.exposureObservations ?? []);
|
|
27
|
+
const exposureTargets = parseExposureAllocationTargets(input.exposureTargets ?? []);
|
|
28
|
+
const exposureRevisionSelection = input.exposureRevisionSelection === undefined
|
|
29
|
+
? undefined
|
|
30
|
+
: parseExposureRevisionSelection(input.exposureRevisionSelection);
|
|
31
|
+
const result = runAnalysisRecipe({
|
|
32
|
+
history,
|
|
33
|
+
definition,
|
|
34
|
+
recipe,
|
|
35
|
+
exposureObservations,
|
|
36
|
+
exposureTargets,
|
|
37
|
+
...(exposureRevisionSelection === undefined ? {} : { exposureRevisionSelection }),
|
|
38
|
+
...(input.evaluationDate === undefined ? {} : { evaluationDate: input.evaluationDate }),
|
|
39
|
+
});
|
|
40
|
+
if (canonicalJson(result) !== canonicalJson(expected))
|
|
41
|
+
throw new ComplianceError("DIAGNOSTIC_MISMATCH", "Customization result does not match an exact fresh SDK rerun", "$.expectedResult");
|
|
42
|
+
const inputArtifacts = Object.freeze(artifacts);
|
|
43
|
+
const runIdentity = `fnv1a64-jcs-v1:${fnv1a64(canonicalJson({
|
|
44
|
+
result,
|
|
45
|
+
inputArtifacts,
|
|
46
|
+
}))}`;
|
|
47
|
+
const receipt = Object.freeze({
|
|
48
|
+
assurance: "sdk-rerun-verified",
|
|
49
|
+
runIdentity,
|
|
50
|
+
result,
|
|
51
|
+
inputArtifacts,
|
|
52
|
+
});
|
|
53
|
+
verifiedRuns.add(receipt);
|
|
54
|
+
return receipt;
|
|
55
|
+
}
|
|
56
|
+
export function assertVerifiedCustomizationAnalysisRun(value) {
|
|
57
|
+
if (value === null || typeof value !== "object" || !verifiedRuns.has(value))
|
|
58
|
+
invalid("Value is not an authentic SDK-rerun-verified customization run");
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=customizationRun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customizationRun.js","sourceRoot":"","sources":["../src/customizationRun.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,9 @@ export * from "./diagnosticArtifactStream.js";
|
|
|
9
9
|
export { createCompactDiagnosticRunIdentity, assertVerifiedCompactDiagnosticRunProvenance, type CompactDiagnosticArtifactEvidence, type CreateCompactDiagnosticRunIdentityInput, type VerifiedCompactDiagnosticRunProvenance, } from "./diagnosticCompactRun.js";
|
|
10
10
|
export * from "./diagnosticReplayWriter.js";
|
|
11
11
|
export * from "./diagnosticReplayReader.js";
|
|
12
|
+
export * from "./customizationBoundedReplay.js";
|
|
13
|
+
export * from "./customizationHistoryReplay.js";
|
|
14
|
+
export * from "./customizationRun.js";
|
|
12
15
|
export * from "./bundle.js";
|
|
13
16
|
export * from "./ave.js";
|
|
14
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EACL,kCAAkC,EAClC,4CAA4C,EAC5C,KAAK,iCAAiC,EACtC,KAAK,uCAAuC,EAC5C,KAAK,sCAAsC,GAC5C,MAAM,2BAA2B,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EACL,kCAAkC,EAClC,4CAA4C,EAC5C,KAAK,iCAAiC,EACtC,KAAK,uCAAuC,EAC5C,KAAK,sCAAsC,GAC5C,MAAM,2BAA2B,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,9 @@ export * from "./diagnosticArtifactStream.js";
|
|
|
9
9
|
export { createCompactDiagnosticRunIdentity, assertVerifiedCompactDiagnosticRunProvenance, } from "./diagnosticCompactRun.js";
|
|
10
10
|
export * from "./diagnosticReplayWriter.js";
|
|
11
11
|
export * from "./diagnosticReplayReader.js";
|
|
12
|
+
export * from "./customizationBoundedReplay.js";
|
|
13
|
+
export * from "./customizationHistoryReplay.js";
|
|
14
|
+
export * from "./customizationRun.js";
|
|
12
15
|
export * from "./bundle.js";
|
|
13
16
|
export * from "./ave.js";
|
|
14
17
|
//# 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,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EACL,kCAAkC,EAClC,4CAA4C,GAI7C,MAAM,2BAA2B,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EACL,kCAAkC,EAClC,4CAA4C,GAI7C,MAAM,2BAA2B,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const COMPLIANCE_PACKAGE_VERSION = "0.
|
|
1
|
+
export declare const COMPLIANCE_PACKAGE_VERSION = "0.8.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const COMPLIANCE_PACKAGE_VERSION = "0.
|
|
1
|
+
export const COMPLIANCE_PACKAGE_VERSION = "0.8.0";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuarial-ts/compliance",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "ASOP-compliance-support layer for the actuarial-ts SDK: estimate metadata, assumption ledger, disclosures, model cards, diagnostics provenance, reproducibility bundles, and actual-vs-expected roll-forward. Responsibility for compliance remains with the credentialed actuary.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -47,14 +47,15 @@
|
|
|
47
47
|
"prepublishOnly": "node ../../tools/release/verify-release-attestation.mjs @actuarial-ts/compliance"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@actuarial-ts/core": "^0.
|
|
51
|
-
"@actuarial-ts/data": "^0.
|
|
52
|
-
"@actuarial-ts/interchange": "^0.
|
|
50
|
+
"@actuarial-ts/core": "^0.8.0",
|
|
51
|
+
"@actuarial-ts/data": "^0.8.0",
|
|
52
|
+
"@actuarial-ts/interchange": "^0.8.0",
|
|
53
|
+
"zod": "^3.25.76"
|
|
53
54
|
},
|
|
54
55
|
"devDependencies": {
|
|
55
56
|
"@types/node": "^22.10.5",
|
|
56
57
|
"typescript": "^5.7.3",
|
|
57
|
-
"vitest": "^
|
|
58
|
+
"vitest": "^5.0.1"
|
|
58
59
|
},
|
|
59
60
|
"publishConfig": {
|
|
60
61
|
"access": "public"
|