# NAIC calculator validation

Updated October 18, 2026. Scope: the implemented life/fraternal investment calculator, historical-baseline insurer estimates, annual management economics, and selected 2026 filing reconciliation checks.

## Release status

Software checks passed for the implemented scope. This is not a complete, filing-equivalent 2026 RBC calculator. Investment capacity remains disabled. No full insurer result has been reconciled against authoritative 2026 forecasting software.

Phase 4 automated release verification is complete: **50 checks passed**. This includes the collateral-loan calculation and stress suites, existing NAIC regressions, draft/CSV integrity and keyboard handler checks. Live visual browser, mobile and zoom verification remain open because the managed preview service cannot start in this environment.

## Checks performed

| Area | Coverage | Result |
|---|---|---|
| Factor register | All 40 implemented bond/CLO base factors compared with the reviewed rulebook register | Passed |
| Investment arithmetic | $10m non-CLO 2.A: $126,100; $10m CLO 2.C: $328,000; qualifying thin surcharge: $1,177,000 | Passed |
| Surcharge boundaries | Thickness exactly 4%, above 4%, missing thickness, designation above threshold, restricted thin NAIC 6 | Passed |
| Missing/unsupported inputs | Missing evidence, unavailable reporting year, unsupported classification/designation, zero/negative exposure, partial totals | Passed |
| Aggregation | Covariance example, operational floor, primary-security shortfall sign/conversion, explicit zeros, missing components, unavailable rule year | Passed |
| Insurer metrics | Baseline/scenario comparison, capital release, target capital, headroom, injection, zero ACL ratio, funding balance, reported-ACL reconciliation | Passed |
| Economics | Income, funding cost, expected loss, tax on positive earnings, loss without tax benefit, zero attributed capital, invalid rates | Passed |
| CSV | Quoted commas/newlines, invalid headers, malformed quotes, unknown categorical values, spreadsheet formula-prefix protection | Passed |
| State/UI logic | Initialization, recalculation, clearing stale results, mode switching, fixed scenario snapshots, escaped names | Passed in simulated DOM |
| Persistence failures | Unreadable investment, insurer, and scenario drafts are not overwritten by edits or initialization | Passed |
| Input integrity | Valid 2026 measurement dates, invalid dates, derived-value range checks, scale-invariant RBC ratio | Passed |
| Static structure | Script syntax, balanced HTML, unique element IDs, local script/style targets | Passed |

Automated UI checks use a minimal DOM adapter. A subsequent live desktop browser pass verified populated investment, insurer and economics views, mode changes and saved comparisons. No clipping was observed in those views. Mobile, 200% enlargement, screen-reader announcements and native file dialogs remain unverified. The new Filing Checks mode has automated form integration coverage; this does not establish visual or accessibility coverage.

## Defects corrected during Step 8

1. Unsupported CSV categorical values could be retained internally while their dropdown displayed a different/blank choice. Unknown nonblank values now reject the import before mutation.
2. Unreadable stored drafts could be overwritten by initialization or subsequent edits. The original stored value is now preserved and current edits can be exported.
3. Insurer measurement dates outside reporting year 2026, and invalid calendar dates, were accepted. These now block calculation.
4. Very large derived insurer ratios/headroom could exceed the supported numeric range. These now block results rather than display unreliable numbers.

## 2026 reconciliation work

The new **2026 Filing Checks** mode reconstructs selected LR002, LR031 and LR033 formulas from adopted 2026 amendments. It compares 12 calculated lines with supplied reference output, normalizes USD/thousands, and retains explicit source, version, tolerance and rounding metadata. Missing inputs, missing references and differences remain visible. Tests cover PAF tiers/rounding, TAC signs and capital-note limits, separate shortfalls, unit conversion, provenance/date gates, live baseline refresh and offsetting errors. All selected checks matching does not establish filing equivalence.

See the [2026 reconciliation register](naic-2026-reconciliation.md) for sources, implementation coverage and closure requirements. As of review, the consolidated 2026 package is not available from the reviewed publication listing. No independent full-insurer case has been reconciled.

## Regulatory evidence and open gates

Investment factors are based on the source audit and [NAIC 2026-12-IRE MOD](https://content.naic.org/sites/default/files/inline-files/2026-12-ire.pdf), LR002, PDF pages 7–8. Insurer aggregation uses [NAIC 2025-04-L](https://content.naic.org/sites/default/files/inline-files/2025-04-L.pdf), LR031, PDF page 15, with its historical rule year explicitly retained. The factor regression fixtures reproduce the audited register; they are not a separate actuarial model validation.

Before representing results as a complete 2026 filing calculation:

- Obtain and reconcile the consolidated 2026 instructions/blanks and their rounding conventions.
- Complete portfolio adjustment, concentration, tax, AVR, reinsurance and classification crosswalks.
- Resolve thin NAIC 6 surcharge treatment.
- Verify the exposure-to-component and TAC bridge before enabling automatic investment capacity.
- Reconcile representative full-insurer cases against authoritative forecasting output.

Regulatory bands and trend tests are not implemented in the insurer interface. Health, P/C, group capital and unsupported asset-class routing remain outside scope. Economics tax assumptions do not change regulatory capital factors. User-supplied evidence and component amounts are not independently authenticated by the software.

## Repeatable checks

Source repository tests: tests/naic-engine.test.cjs, tests/naic-impact.test.cjs, tests/naic-scenarios.test.cjs, tests/naic-filing.test.cjs. Run each with Node. These checks protect the implemented scope; passing them does not close the regulatory or browser-validation gates above.

## October 18, 2026: 2027 collateral-loan Phase 1

Added `naic-collateral-engine.js` as a standalone module. It does not alter the existing 2026 investment interface, totals, imports or insurer calculations. See the [2027 engine contract and source register](naic-2027-collateral.md).

The new suite contains 15 passing test groups for factors, exact OC thresholds, one-cent boundaries, absent verification, lower-factor floors, NAV deterioration, BACV reduction, admissibility warnings, invalid and zero inputs, precision, scale invariance and browser-global loading. All four existing NAIC regression files also pass. The boundary policy uses the printed LR008 OC rows and warns when the summary LTV labels would imply another result. This policy is versioned; it does not resolve the regulatory text discrepancy on the NAIC's behalf.

Browser verification here is limited to dependency-free module initialization in a JavaScript VM. There is no new interface in Phase 1. Full insurer integration, 2027 filing equivalence and authoritative case reconciliation remain open.

## October 18, 2026: collateral-loan Phase 2 interface

The Investment asset selector now includes collateral loans. Four loan inputs drive the 2026/2027 comparison, LTV/OC, exact capital-charge difference, verification notices and collateral shortfall messages. Bond fields are hidden for loan rows. Separate summaries prevent charges from different years being combined. Draft and CSV migration preserve existing bond records and new loan inputs; exports carry both years and source metadata.

Eleven new test groups exercise the comparison and mixed-portfolio model, field visibility, live updates, clearing stale results, unknown verification, shortfall messages, loan-only summaries, original draft/CSV migration, reload, removal/undo and calculation exports. Existing bond, scenario, insurer and filing regressions are also run. The scenario selector filters collateral loans out of bond-only sensitivity controls.

The managed preview service failed at startup with a `/proc` mount restriction. No live browser, mobile or zoom verification was completed for this interface. Static structure and simulated DOM checks do not replace that verification. Phase 3 stress controls and extended valuation support, and automatic insurer integration, remain open.

## October 18, 2026: collateral-loan Phase 3

Added NAV stress and minimum paydown calculations, initially collapsed valuation and calculation sections, optional support records, and version 3 drafts/CSV compatibility. Stress fair values round down to cents, paydowns round up to cents, and returned after-paydown factors are recalculated. The repayment assumes outside funding with a dollar-for-dollar BACV reduction and unchanged collateral value. Stress scenarios do not change the base portfolio totals.

Nine new engine test groups verify the $6MM LP and $9MM residual charge increases, exact $900,900.91 minimum repayment in the 12% decline example, failure with one cent less repayment, multi-band changes, rounding, zero balances, full repayment, unknown verification, invalid values and large inputs. Five new interface groups verify stress updates and invalidation, optional valuation fields and admissibility notices, earlier draft/CSV migration, source disclosures and complete JSON exports. Earlier engine and interface regressions remain required.

Valuation method or document references do not automatically confirm independent verification. Annual audits marked as absent for partnership collateral, and collateral marked nonqualifying, trigger an admissibility review notice; the engine does not invent an admitted balance. Supporting sources and the precise calculation contract are in the [2027 notes](naic-2027-collateral.md).

The managed preview service remains unavailable from the Phase 2 attempt. No live visual browser, mobile or zoom verification is claimed for Phase 3. Automatic insurer integration and 2027 filing reconciliation remain open.

## October 18, 2026: Phase 4 release verification

Final review corrected two issues:

1. Saved drafts previously validated field types and lengths without rejecting unsupported categorical values. Restore now applies the same choice validation used by CSV imports. An invalid draft is preserved without loading a value that the dropdown cannot display; edits do not overwrite the original stored copy.
2. An OC value one cent below a threshold could display as exactly 111.00%, 143.00% or 200.00% after rounding. Rule set `life-2027-collateral-v1.2` adds a notice explaining that the actual OC remains below the displayed threshold. Band selection and the adopted factors are unchanged.

The full command `node --test tests/naic*.test.cjs` passed **50 checks** with zero failures. Coverage includes both collateral schedules, verification, exact OC boundaries, stress rounding, minimum paydowns and one-cent failures, mixed portfolios, zero and unsupported inputs, migration across three draft/template versions, exports, removal/undo and prior bond/insurer/filing calculations.

Final interface checks exercised the actual file-import handler with valid imports, appends, export/re-import, malformed CSV, unsupported choices, read failures, the 2 MB limit and the 500-position limit. Invalid imports leave existing rows and saved drafts untouched. These checks simulate file objects; the native operating-system file dialog was not exercised.

Keyboard-handler checks cover Left/Right wrapping, Home/End navigation and ordinary Tab handling. Static HTML checks cover labels, unique IDs, mode-control targets, summary structure and all local script/style references. Responsive CSS was reviewed, but no viewport rendering, visual clipping, screen-reader or 200% zoom pass was completed.

| Final gate | Status |
|---|---|
| Calculation and existing NAIC regressions | Passed |
| Draft, CSV and JSON integrity | Passed |
| Mode keyboard handlers | Passed in simulated DOM |
| Static labels and asset/target references | Passed |
| Live desktop/mobile/zoom and native file-dialog QA | Open; managed preview unavailable |
| Full insurer capital integration / 2027 filing equivalence | Outside this release; open |

The preview limitation is the previously observed `/proc` mount failure, not an application test failure. The supported workflow does not substitute a different preview server. Publication records the completed automated checks without claiming the open visual gates passed.


## October 19, 2026: Phase 5 existing-loan insurer bridge

Added an optional review/apply/undo path from Investment to Insurer Impact. It models the adopted 2027 treatment of a single existing loan on a 2026 baseline while retaining the verified 2025 aggregation formula. It removes a supplied post-tax C1o base charge and adds the adopted 2027 charge to C1cs after the prescribed 21% tax effect. Net concentration / other adjustments and TAC / AVR effects remain explicit, supported inputs. The funding assumption is unchanged holdings with zero sources and uses.

The full command `node --test tests/naic*.test.cjs` passed **63 checks** with zero failures. The 13 new checks cover both collateral classes, NAV stress, verification fallback, precise tax arithmetic, unsupported inputs and admissibility gates, missing baseline/reconciliation, nonmutating review, apply/undo and repeat application, edits after review, fixed loan snapshots, manual detachment, draft reload, corrupted provenance, insurer and scenario exports, and the Investment shortcut. Existing bond, collateral, stress, paydown, filing and keyboard regressions remain passing.

Static checks passed for unique IDs, explicit control labels, separate forms, disclosure structure, mode targets and local script/style references. The managed preview remains unavailable; no live desktop, mobile, zoom or screen-reader verification is claimed. Browser integration checks use a simulated DOM.

| Gate | Phase 5 status |
|---|---|
| Limited existing-loan tax / component bridge | Implemented and tested |
| Concentration, baseline tax removal and TAC / AVR effects | Supplied and documented by user; no insurer-wide inference |
| Draft, audit export and saved-scenario provenance | Passed |
| Live viewport / assistive-technology verification | Open; managed preview unavailable |
| Full 2027 insurer formula, filing reconciliation and capacity | Open; outside this sensitivity |
