# Average-balance interest validation

Reviewed 25 October 2026. Local private package; scene script only, no rendered video or remote publication. Canonical method, exact API and independent fixtures were frozen before implementation. Root owns subsequent visitor integration.

## Independent mathematics

The oracle retains all 35 synthetic product-calendar dates. Grouped sums predate reference execution: 21×100000 + 2×97600 + 2×85600 + 10×75600 = 3222400; average 644480/7. Constant 50000 ppm ACT/365F gives 32224/73, half-even 441, carry 31/73. Full October gives exactly 400. A flat same-close 75600 path rounds to 362.

Rate-change expectations are separately authored: first 23 days sum 2295200 at 5%; last 12 sum 927200 at 6%; total 170392/365, rounded 467, carry -63/365. The incorrect final-rate shortcut rounds to 530. Other independent cases cover mid-period deposit 8 versus same-close flat 11, same full average with different balance/rate association 5 versus 4, half-even/carry, leap day and huge values. [Oracle](../examples/independent-arithmetic.json).

## Executable acceptance

`python -B tests/run_parity.py` passes **101 complete fixture cases: 31 accepted, 70 rejected**, including strict TypeScript compilation and entire JSON output equality. The suite checks independent values/codes, caller immutability, exact segment fields, fraction reduction, sum/count/average identities, segment/day algebra, closing carry conservation and proposal legs/status.

The A03 earned amount is independently accumulated from segment averages. Every common accrual/proposal/daily trace fact is also compared against A01's daily-sum method on the same schema-adapted request. Full outputs intentionally differ because A03 additionally exposes averages and segments. Shared policy helpers are self-contained local pinned files with hashes in [PINNED-KERNEL.json](PINNED-KERNEL.json); no runtime sibling import exists.

Coverage includes missing/duplicate/reordered/no-transaction days, exclusive end, leap day, years 0001/0099/0100, future balance receipts, causal/latest/stale/retroactive/ambiguous/conflicting rates, strict money/identifiers/shapes, unsupported currency/day count/negative interest principal, signed half-minor carry, zero and over-limit proposals. Additional direct API assertions reject custom Python mapping subclasses and JavaScript custom-prototype objects, preserving the strict JSON-object boundary through schema adaptation. Raw receipt: [parity-results.json](../tests/parity-results.json).

## Visual and browser acceptance

The light lab bundles the actual TypeScript calendar kernel and A03 implementation. Source SHA256: `f5eedf7d93f88a3a19db92f40453cb30c65115c376963b9e8edd5af89e683ca5`. Its meta tag is compared to current source during browser acceptance.

Six scenarios retain canonical full-period comparisons, missing coverage, half-minor rounding and leap day. All 35 primary dates remain in calculation and the visible grid. Prefix steps are labeled shorter complete illustrations at the original knowledge cutoff; they do not claim historical knowledge reconstruction. At prefix 24 of the variable-rate case, independent expected sum/average/earned are 2380800 / 99200 / 119896/365, with full-period rounded result 467 still visible.

Browser checks passed at 390/768/1440 widths: no document overflow, 44 px targets, exact prefix/full values, both segment counts, all scenarios, missing date with null amount/empty trace/disabled playback, Step/Back/Play/Pause/Reset, keyboard, timer cancellation on scenario change and deterministic reduced-motion Play. The final source-stamped run reports no console warnings/errors or page exceptions. Both SVGs are XML-checked, opened and visually inspected; workflow/article Mermaid parse and render. [Visual notes](../visuals/QA.md), [browser receipt](../tests/browser-results.json).

## Evidence limits and release

All account/rate/calendar facts are synthetic. Official US method context, author-derived algebra, profile choices and observed tests are classified in [references](../REFERENCES.md) and [claim ledger](CLAIM-LEDGER.md). Negative-principal routing explicitly differs from the US zero treatment. Historical case: **not useful**.

The host owns source completeness, receipt authenticity, scope authority and actual posting. These pure models/HTML establish no live concurrency, durable acceptance, APY/EIR, regulatory entitlement or production scalability. A proposal remains distinct from expense acceptance and later customer credit.

Final structural checks passed: package validator in full mode reports **11 Markdown files, 0 errors / 0 warnings**; playground validator reports **1 passed / 0 failed**. Public parity/browser/validation copies are byte-identical to canonical evidence. Root's independent visitor integration remains a separate final gate.
