@actuarial-ts/data 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +45 -127
  2. package/dist/casualtyDiagnosticReview.d.ts +46 -0
  3. package/dist/casualtyDiagnosticReview.d.ts.map +1 -0
  4. package/dist/casualtyDiagnosticReview.js +23 -0
  5. package/dist/casualtyDiagnosticReview.js.map +1 -0
  6. package/dist/diagnosticDefinition.d.ts +4 -0
  7. package/dist/diagnosticDefinition.d.ts.map +1 -0
  8. package/dist/diagnosticDefinition.js +6 -0
  9. package/dist/diagnosticDefinition.js.map +1 -0
  10. package/dist/diagnosticInput.d.ts +97 -13
  11. package/dist/diagnosticInput.d.ts.map +1 -1
  12. package/dist/diagnosticInput.js +403 -43
  13. package/dist/diagnosticInput.js.map +1 -1
  14. package/dist/diagnosticPreparedReview.d.ts +46 -0
  15. package/dist/diagnosticPreparedReview.d.ts.map +1 -0
  16. package/dist/diagnosticPreparedReview.js +449 -0
  17. package/dist/diagnosticPreparedReview.js.map +1 -0
  18. package/dist/exposure.d.ts.map +1 -1
  19. package/dist/exposure.js +25 -9
  20. package/dist/exposure.js.map +1 -1
  21. package/dist/index.d.ts +4 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +4 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/lossRun.d.ts.map +1 -1
  26. package/dist/lossRun.js +31 -8
  27. package/dist/lossRun.js.map +1 -1
  28. package/dist/review.d.ts +16 -3
  29. package/dist/review.d.ts.map +1 -1
  30. package/dist/review.js +35 -5
  31. package/dist/review.js.map +1 -1
  32. package/dist/version.d.ts +2 -0
  33. package/dist/version.d.ts.map +1 -0
  34. package/dist/version.js +2 -0
  35. package/dist/version.js.map +1 -0
  36. package/package.json +5 -4
  37. package/src/casualtyDiagnosticReview.ts +17 -0
  38. package/src/diagnosticDefinition.ts +6 -0
  39. package/src/diagnosticInput.ts +600 -57
  40. package/src/diagnosticPreparedReview.ts +653 -0
  41. package/src/exposure.ts +61 -16
  42. package/src/index.ts +4 -1
  43. package/src/lossRun.ts +55 -13
  44. package/src/review.ts +194 -42
  45. package/src/version.ts +1 -0
  46. package/dist/diagnosticReview.d.ts +0 -68
  47. package/dist/diagnosticReview.d.ts.map +0 -1
  48. package/dist/diagnosticReview.js +0 -370
  49. package/dist/diagnosticReview.js.map +0 -1
  50. package/src/diagnosticReview.ts +0 -547
package/dist/lossRun.js CHANGED
@@ -49,29 +49,48 @@ function isValidIsoDate(value) {
49
49
  // preserve leapness for every year except 0000, so this is a correctness-of-
50
50
  // form consolidation rather than a live-bug fix.
51
51
  const leap = (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0;
52
- const daysInMonth = [31, leap ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][m - 1];
52
+ const daysInMonth = [
53
+ 31,
54
+ leap ? 29 : 28,
55
+ 31,
56
+ 30,
57
+ 31,
58
+ 30,
59
+ 31,
60
+ 31,
61
+ 30,
62
+ 31,
63
+ 30,
64
+ 31,
65
+ ][m - 1];
53
66
  return d <= daysInMonth;
54
67
  }
55
68
  /** Parses a loss-run CSV into ClaimSnapshots plus per-row validation errors. */
56
69
  export function parseLossRunCsv(text) {
57
70
  const { rows: grid, rowLines, warnings: csvWarnings } = parseCsv(text);
58
71
  const headers = (grid[0] ?? []).map(normalizeHeader);
72
+ const duplicateHeaders = [
73
+ ...new Set(headers.filter((header, index) => header !== "" && headers.indexOf(header) !== index)),
74
+ ].sort();
75
+ if (duplicateHeaders.length > 0) {
76
+ throw new ReservingError("SHAPE", `Duplicate normalized column(s): ${duplicateHeaders.join(", ")}`);
77
+ }
59
78
  const missing = REQUIRED_COLUMNS.filter((c) => !headers.includes(c));
60
79
  if (missing.length > 0) {
61
80
  throw new ReservingError("SHAPE", `Missing required column(s): ${missing.join(", ")}. Found: ${headers.filter(Boolean).join(", ") || "(none)"}`);
62
81
  }
63
82
  const columnIndex = new Map();
64
- headers.forEach((h, idx) => {
65
- if (!columnIndex.has(h))
66
- columnIndex.set(h, idx);
67
- });
83
+ headers.forEach((h, idx) => columnIndex.set(h, idx));
68
84
  const claims = [];
69
85
  const errors = [];
70
86
  for (const warning of csvWarnings) {
71
87
  // Structural CSV problems surface through the same channel as row errors:
72
88
  // partial loading is intended behavior here, silent partial loading is not.
73
89
  const lineMatch = warning.match(/line (\d+)/);
74
- errors.push({ row: lineMatch ? Number(lineMatch[1]) : 1, message: `CSV structure: ${warning}` });
90
+ errors.push({
91
+ row: lineMatch ? Number(lineMatch[1]) : 1,
92
+ message: `CSV structure: ${warning}`,
93
+ });
75
94
  }
76
95
  for (let r = 1; r < grid.length; r++) {
77
96
  // Physical 1-based line in the file where this row starts — NOT r + 1:
@@ -109,7 +128,9 @@ export function parseLossRunCsv(text) {
109
128
  "parentheses and spaces");
110
129
  return null;
111
130
  }
112
- const n = /^-?\d+(\.\d+)?$/.test(value.trim()) ? Number(value.trim()) : NaN;
131
+ const n = /^-?\d+(\.\d+)?$/.test(value.trim())
132
+ ? Number(value.trim())
133
+ : NaN;
113
134
  if (!Number.isFinite(n)) {
114
135
  rowErrors.push(`${name} must be a finite decimal number (got "${value}")`);
115
136
  return null;
@@ -124,7 +145,9 @@ export function parseLossRunCsv(text) {
124
145
  rowErrors.push(`status must be "open" or "closed" (got "${cell("status")}")`);
125
146
  }
126
147
  // Cross-field checks need all three dates to be individually valid.
127
- if (accidentDate !== null && reportDate !== null && evaluationDate !== null) {
148
+ if (accidentDate !== null &&
149
+ reportDate !== null &&
150
+ evaluationDate !== null) {
128
151
  if (reportDate < accidentDate)
129
152
  rowErrors.push("report_date precedes accident_date");
130
153
  if (evaluationDate < reportDate)
@@ -1 +1 @@
1
- {"version":3,"file":"lossRun.js","sourceRoot":"","sources":["../src/lossRun.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lossRun.js","sourceRoot":"","sources":["../src/lossRun.ts"],"names":[],"mappings":"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"}
package/dist/review.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ClaimSnapshot, Triangle } from "@actuarial-ts/core";
1
+ import { type ClaimSnapshot, type Triangle } from "@actuarial-ts/core";
2
2
  /**
3
3
  * ASOP No. 23 (Data Quality)-oriented data review.
4
4
  *
@@ -22,12 +22,25 @@ import type { ClaimSnapshot, Triangle } from "@actuarial-ts/core";
22
22
  */
23
23
  export type DataCheckStatus = "pass" | "warning" | "fail" | "not-evaluated";
24
24
  export interface DataFindingContext {
25
+ ruleId?: string;
26
+ measureId?: string;
27
+ expressionPath?: string;
28
+ offendingKey?: string;
29
+ groupingKey?: string;
30
+ cachedEvidenceId?: string;
31
+ sourceGroup?: string;
25
32
  origin?: string;
26
33
  valuation?: string;
27
- ageMonths?: number;
34
+ developmentAge?: number;
35
+ ageUnit?: string;
36
+ recordId?: string;
37
+ claimId?: string;
38
+ exposureKey?: string;
28
39
  group?: string;
29
40
  sourceFile?: string;
30
41
  sourceRow?: number;
42
+ sources?: readonly import("@actuarial-ts/core").DiagnosticSourceLocation[];
43
+ reviewScope?: import("@actuarial-ts/core").DiagnosticReviewEvaluationScope;
31
44
  }
32
45
  export interface DataFinding {
33
46
  /** Stable machine-readable finding code, usually the containing check id. */
@@ -41,7 +54,7 @@ export interface DataCheck {
41
54
  status: DataCheckStatus;
42
55
  details: string[];
43
56
  /** Additive structured detail for consumers that should not parse prose. */
44
- findings?: DataFinding[];
57
+ findings: DataFinding[];
45
58
  }
46
59
  export interface DataReviewReport {
47
60
  checks: DataCheck[];
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,CAAC;AAE5E,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CAChF;AAED,MAAM,WAAW,sBAAsB;IACrC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAuCD,yFAAyF;AACzF,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,SAAS,GAAG,MAAM,EACnC,QAAQ,EAAE,SAAS,WAAW,EAAE,GAC/B,SAAS,CAWX;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAEzE;AAED,qFAAqF;AACrF,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,SAAS,CAEX;AAcD,8EAA8E;AAC9E,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EAAE,EACvB,IAAI,GAAE,sBAA2B,GAChC,gBAAgB,CAsGlB;AA+ED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,CA+FpF"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,QAAQ,EACd,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,CAAC;AAE5E,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,OAAO,oBAAoB,EAAE,wBAAwB,EAAE,CAAC;IAC3E,WAAW,CAAC,EAAE,OAAO,oBAAoB,EAAE,+BAA+B,CAAC;CAC5E;AAED,MAAM,WAAW,WAAW;IAC1B,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4EAA4E;IAC5E,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAqDD,yFAAyF;AACzF,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,SAAS,GAAG,MAAM,EACnC,QAAQ,EAAE,SAAS,WAAW,EAAE,GAC/B,SAAS,CAeX;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAEzE;AAED,qFAAqF;AACrF,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,SAAS,CAEX;AAoBD,8EAA8E;AAC9E,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EAAE,EACvB,IAAI,GAAE,sBAA2B,GAChC,gBAAgB,CAwLlB;AAsFD,4EAA4E;AAC5E,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,GACjB,gBAAgB,CA6GlB"}
package/dist/review.js CHANGED
@@ -1,9 +1,13 @@
1
+ import { isRealIsoDate, } from "@actuarial-ts/core";
1
2
  /** At most this many offending items are listed per check, then "+N more". */
2
3
  const MAX_DETAILS = 20;
3
4
  function capDetails(items) {
4
5
  if (items.length <= MAX_DETAILS)
5
6
  return items;
6
- return [...items.slice(0, MAX_DETAILS), `+${items.length - MAX_DETAILS} more`];
7
+ return [
8
+ ...items.slice(0, MAX_DETAILS),
9
+ `+${items.length - MAX_DETAILS} more`,
10
+ ];
7
11
  }
8
12
  function makeCheck(id, description, statusWhenFound, findings) {
9
13
  return {
@@ -11,12 +15,19 @@ function makeCheck(id, description, statusWhenFound, findings) {
11
15
  description,
12
16
  status: findings.length > 0 ? statusWhenFound : "pass",
13
17
  details: capDetails(findings),
18
+ findings: [],
14
19
  };
15
20
  }
16
21
  function notEvaluated(id, description, reason) {
17
22
  // A check that could not run is REPORTED as such - counting it as "pass"
18
23
  // would overstate the review in the very disclosure this feeds.
19
- return { id, description, status: "not-evaluated", details: [`not evaluated: ${reason}`] };
24
+ return {
25
+ id,
26
+ description,
27
+ status: "not-evaluated",
28
+ details: [`not evaluated: ${reason}`],
29
+ findings: [],
30
+ };
20
31
  }
21
32
  function summarize(checks) {
22
33
  const summary = { pass: 0, warning: 0, fail: 0, notEvaluated: 0 };
@@ -30,7 +41,9 @@ function summarize(checks) {
30
41
  }
31
42
  /** Builds a structured check while retaining the established status/details contract. */
32
43
  export function createStructuredDataCheck(id, description, statusWhenFound, findings) {
33
- const capped = findings.length <= MAX_DETAILS ? [...findings] : [...findings.slice(0, MAX_DETAILS)];
44
+ const capped = findings.length <= MAX_DETAILS
45
+ ? [...findings]
46
+ : [...findings.slice(0, MAX_DETAILS)];
34
47
  const details = capped.map((finding) => finding.message);
35
48
  if (findings.length > MAX_DETAILS)
36
49
  details.push(`+${findings.length - MAX_DETAILS} more`);
@@ -39,7 +52,7 @@ export function createStructuredDataCheck(id, description, statusWhenFound, find
39
52
  description,
40
53
  status: findings.length > 0 ? statusWhenFound : "pass",
41
54
  details,
42
- findings: capped,
55
+ findings: [...findings],
43
56
  };
44
57
  }
45
58
  /** Public report summarizer for additive review suites. */
@@ -57,6 +70,7 @@ const CLAIM_DESCRIPTIONS = {
57
70
  "paid-decreasing": "Cumulative paid never decreases across a claim's snapshots ordered by evaluation date",
58
71
  "date-order": "accident_date <= report_date <= evaluation_date on every snapshot",
59
72
  "duplicate-snapshot": "No claim has two snapshots at the same evaluation date",
73
+ "claim-identity": "Every snapshot for one claim has the same accident and report identity",
60
74
  "future-dated": "No claim date exceeds the as-of date",
61
75
  "closed-with-case": "Closed claims carry no outstanding case reserve",
62
76
  };
@@ -75,6 +89,14 @@ export function reviewClaimData(claims, opts = {}) {
75
89
  // pointed auditors at the wrong line; an identifier we cannot compute is
76
90
  // one we must not print.
77
91
  const where = `claim ${c.claimId} (eval ${c.evaluationDate})`;
92
+ for (const [name, value] of [
93
+ ["accident_date", c.accidentDate],
94
+ ["report_date", c.reportDate],
95
+ ["evaluation_date", c.evaluationDate],
96
+ ]) {
97
+ if (!isRealIsoDate(value))
98
+ dateOrder.push(`${where}: ${name} is not a real yyyy-mm-dd calendar date`);
99
+ }
78
100
  if (c.paidToDate < 0) {
79
101
  negativePaid.push(`${where}: paid_to_date ${c.paidToDate}`);
80
102
  }
@@ -114,7 +136,11 @@ export function reviewClaimData(claims, opts = {}) {
114
136
  }
115
137
  const paidDecreasing = [];
116
138
  const duplicates = [];
139
+ const identityConflicts = [];
117
140
  for (const [claimId, snaps] of byClaim) {
141
+ const identities = new Set(snaps.map((snap) => `${snap.accidentDate}|${snap.reportDate}`));
142
+ if (identities.size > 1)
143
+ identityConflicts.push(`claim ${claimId}: snapshots contain conflicting accident_date or report_date values`);
118
144
  const sorted = [...snaps].sort((a, b) => a.evaluationDate.localeCompare(b.evaluationDate));
119
145
  const seenEvals = new Set();
120
146
  for (const s of sorted) {
@@ -153,6 +179,7 @@ export function reviewClaimData(claims, opts = {}) {
153
179
  makeCheck("paid-decreasing", CLAIM_DESCRIPTIONS["paid-decreasing"], "fail", paidDecreasing),
154
180
  makeCheck("date-order", CLAIM_DESCRIPTIONS["date-order"], "fail", dateOrder),
155
181
  makeCheck("duplicate-snapshot", CLAIM_DESCRIPTIONS["duplicate-snapshot"], "fail", duplicates),
182
+ makeCheck("claim-identity", CLAIM_DESCRIPTIONS["claim-identity"], "fail", identityConflicts),
156
183
  futureCheck,
157
184
  makeCheck("closed-with-case", CLAIM_DESCRIPTIONS["closed-with-case"], "warning", closedWithCase),
158
185
  ]);
@@ -242,7 +269,10 @@ export function reviewTriangles(paid, incurred) {
242
269
  if (!sameAges) {
243
270
  shapeFindings.push(`ages differ: paid [${paid.ages.join(", ")}] vs incurred [${incurred.ages.join(", ")}]`);
244
271
  }
245
- const nonFiniteCheck = makeCheck("non-finite-value", TRIANGLE_DESCRIPTIONS["non-finite-value"], "fail", [...nonFiniteTriangleFindings(paid), ...nonFiniteTriangleFindings(incurred)]);
272
+ const nonFiniteCheck = makeCheck("non-finite-value", TRIANGLE_DESCRIPTIONS["non-finite-value"], "fail", [
273
+ ...nonFiniteTriangleFindings(paid),
274
+ ...nonFiniteTriangleFindings(incurred),
275
+ ]);
246
276
  const shapeCheck = makeCheck("shape-mismatch", TRIANGLE_DESCRIPTIONS["shape-mismatch"], "fail", shapeFindings);
247
277
  if (shapeFindings.length > 0) {
248
278
  // Cell-level comparisons are meaningless across mismatched grids; the
@@ -1 +1 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../src/review.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const DATA_PACKAGE_VERSION = "0.6.1";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const DATA_PACKAGE_VERSION = "0.6.1";
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@actuarial-ts/data",
3
- "version": "0.5.0",
4
- "description": "Data ingestion and ASOP No. 23 data-quality review for the actuarial-ts SDK: loss-run and exposure import, annual claim-development adaptation, triangle assembly, and review checks.",
3
+ "version": "0.6.1",
4
+ "description": "Data ingestion and ASOP No. 23 support for actuarial-ts: loss/exposure preparation, atomic generalized diagnostic validation, declarative review, and triangle assembly.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
@@ -45,10 +45,11 @@
45
45
  "test": "vitest run",
46
46
  "test:watch": "vitest",
47
47
  "typecheck": "tsc --noEmit",
48
- "prepack": "tsc -p tsconfig.build.json"
48
+ "prepack": "tsc -p tsconfig.build.json",
49
+ "prepublishOnly": "node ../../tools/release/verify-release-attestation.mjs @actuarial-ts/data"
49
50
  },
50
51
  "dependencies": {
51
- "@actuarial-ts/core": "^0.5.0",
52
+ "@actuarial-ts/core": "^0.6.1",
52
53
  "zod": "^3.25.76"
53
54
  },
54
55
  "devDependencies": {
@@ -0,0 +1,17 @@
1
+ import type { CasualtyCountBindings, DiagnosticControlTotalProjection, DiagnosticMeasureExpression, DiagnosticReviewFilter, DiagnosticReviewRule } from "@actuarial-ts/core";
2
+
3
+ export interface CasualtyMonotonicReviewBinding { readonly id:string;readonly expression:DiagnosticMeasureExpression;readonly direction:"nondecreasing"|"nonincreasing";readonly tolerance?:{readonly absolute?:number;readonly relative?:number} }
4
+ export interface CasualtyLayerOrderReviewBinding { readonly id:string;readonly narrower:DiagnosticMeasureExpression;readonly broader:DiagnosticMeasureExpression;readonly comparability:{readonly kind:"compiler-proven"}|{readonly kind:"caller-asserted";readonly rationaleArtifactId:string};readonly tolerance?:{readonly absolute?:number;readonly relative?:number} }
5
+ export interface CasualtyControlTotalReviewBinding { readonly id:string;readonly expression:DiagnosticMeasureExpression;readonly expected:number;readonly filter?:DiagnosticReviewFilter;readonly projection:DiagnosticControlTotalProjection;readonly tolerance?:{readonly absolute?:number;readonly relative?:number} }
6
+ export interface CreateCasualtyDiagnosticReviewRulesInput { readonly counts:CasualtyCountBindings;readonly exposure:string;readonly monotonicMeasures:readonly CasualtyMonotonicReviewBinding[];readonly layerOrders:readonly CasualtyLayerOrderReviewBinding[];readonly controlTotals:readonly CasualtyControlTotalReviewBinding[];readonly severityOverrides?:Readonly<Record<string,"warning"|"fail">> }
7
+ const m=(measureId:string)=>({op:"measure" as const,measureId});const tolerance=(value:{absolute?:number;relative?:number}|undefined)=>({absolute:value?.absolute??0,relative:value?.relative??0});
8
+ export function createCasualtyDiagnosticReviewRules(input:CreateCasualtyDiagnosticReviewRulesInput):readonly DiagnosticReviewRule[]{
9
+ const fixed:DiagnosticReviewRule[]=[
10
+ {kind:"reconcile",id:"casualty/review/count-reconciliation",code:"count-reconciliation",description:"Reported count must equal open plus closed-no-pay plus closed-with-pay count",severity:"fail",missingInput:"not-evaluated",tolerance:{absolute:0,relative:0},actual:m(input.counts.reported),expected:{op:"add",terms:[m(input.counts.open),m(input.counts.closedNoPay),m(input.counts.closedWithPay)]}},
11
+ {kind:"compare",id:"casualty/review/closed-no-pay-bound",code:"closed-no-pay-bound",description:"Closed-no-pay count must not exceed reported count",severity:"fail",missingInput:"not-evaluated",tolerance:{absolute:0,relative:0},when:{left:m(input.counts.closedNoPay),operator:"gt",right:m(input.counts.reported)}},
12
+ {kind:"compare",id:"casualty/review/positive-exposure",code:"positive-exposure",description:"Exposure must be strictly positive",severity:"fail",missingInput:"not-evaluated",tolerance:{absolute:0,relative:0},when:{left:m(input.exposure),operator:"lte",right:{op:"constant",value:0}}},
13
+ {kind:"monotonic",id:"casualty/review/closed-reopen-signal",code:"closed-reopen-signal",description:"Closed count must be nondecreasing across valuations",severity:"warning",missingInput:"not-evaluated",tolerance:{absolute:0,relative:0},expression:{op:"add",terms:[m(input.counts.closedNoPay),m(input.counts.closedWithPay)]},direction:"nondecreasing"},
14
+ ];
15
+ const dynamic:DiagnosticReviewRule[]=[...input.monotonicMeasures.map((item):DiagnosticReviewRule=>({kind:"monotonic",id:item.id,code:item.id,description:`Expression must be ${item.direction} across valuations`,severity:"warning",missingInput:"not-evaluated",tolerance:tolerance(item.tolerance),expression:item.expression,direction:item.direction})),...input.layerOrders.map((item):DiagnosticReviewRule=>({kind:"layer-order",id:item.id,code:item.id,description:"Narrower amount expression must not exceed broader amount expression",severity:"fail",missingInput:"not-evaluated",tolerance:tolerance(item.tolerance),narrower:item.narrower,broader:item.broader,comparability:item.comparability})),...input.controlTotals.map((item):DiagnosticReviewRule=>({kind:"control-total",id:item.id,code:item.id,description:"Expression must reconcile to the declared control total",severity:"fail",missingInput:"not-evaluated",tolerance:tolerance(item.tolerance),expression:item.expression,expected:item.expected,...(item.filter?{filter:item.filter}:{}),projection:item.projection}))];
16
+ const all=[...fixed,...dynamic];const ids=new Set<string>();for(const rule of all){if(ids.has(rule.id))throw new Error(`Duplicate review rule ID ${rule.id}`);ids.add(rule.id)}for(const key of Object.keys(input.severityOverrides??{}))if(!ids.has(key))throw new Error(`Unknown severity override ${key}`);return Object.freeze(all.map((rule)=>Object.freeze({...rule,severity:input.severityOverrides?.[rule.id]??rule.severity}) as DiagnosticReviewRule));
17
+ }
@@ -0,0 +1,6 @@
1
+ import { compileDiagnosticDefinition, type CompiledDiagnosticDefinition, type DiagnosticDefinition } from "@actuarial-ts/core";
2
+
3
+ /** Validates unknown authored definition data through core's single semantic compiler. */
4
+ export function validateDiagnosticDefinition(value: unknown): CompiledDiagnosticDefinition {
5
+ return compileDiagnosticDefinition(value as DiagnosticDefinition);
6
+ }