Calculation catalog › Optimizer and comparisons

Exact ledger validation traditional depletion year

First year traditional-account assets are depleted under the validated schedule.

Field: traditionalDepletionYear Unit: calendar year Basis: no dollar basis Computed by: Engine Status: Complete chain

Appears in: report (traditional depletion year)

Calculation records

  • Full projection traditional depletion Formula record, justified by derivation

    Purpose: Name the first year the plan's own traditional balances are exhausted under a candidate schedule.

    Statement: projection/optimizePlan.ts#evaluateExactLedgerSchedule publishes ExactLedgerValidation.traditionalDepletionYear through decisions/evaluateCandidate.ts#findTraditionalDepletionYear as the first ascending candidate-result year whose non-inherited traditional account balances sum to at most the validation tolerance, one dollar by default, and null when no year does.

    Formula: traditionalDepletionYear = min { y ascending : sum over own traditional accounts a of balance(a, y) <= toleranceDollars }, else null

    • balance(a, y): Year-end balance of own traditional account a in year y (unit: nominal USD) (domain: nonnegative)
    • toleranceDollars: Validation tolerance, DECISION_NEUTRAL_TOLERANCE_DOLLARS by default (unit: nominal USD) (domain: 1)

    Timing: candidate-result years in ascending order; the first qualifying year wins

    Rounding: none; the boundary is inclusive at the tolerance

    Limits:

    • Inherited traditional balances are excluded, the boundary is inclusive so an owned sum of exactly the tolerance qualifies, and a later fully drained year cannot displace the first qualifying one. Beyond the worksheet's three account balance columns the test assumes a validated plan whose two owned traditional accounts and one inherited traditional account carry the worksheet's ids, an empty requested schedule, and a baseline result that the entry requires and the worksheet does not name; the candidate projection is supplied as a ProjectionResult value at the exported validation entry, so the selection is the real function while no ledger run is exercised here.

    Provenance: derived by codex, implemented by claude.

    Independent review: cursor

    Gates (6 of 6 pass): fixture registers a test: pass; pins resolve: pass; families exist: pass; worksheet exists: pass; mutation receipt exists: pass; provenance independent: pass

    Worksheet: exact-ledger-traditional-depletion.md Mutation receipt: exact-ledger-traditional-depletion.mutation.md

    Evidence tests: optimizePlan.evidence.test.ts

    Implemented in: optimizePlan.ts; evaluateCandidate.ts

    Is the number of: exact-ledger-validation-traditional-depletion-year

Engine source: engine/src/projection/optimizePlan.ts (ExactLedgerValidation.traditionalDepletionYear)

The evidence links on this page (each record's worksheet, mutation receipt, evidence tests and implementation, and the source links) are pinned to engine commit 2624dbdba9fd, committed 2026-10-11. The live calculation index and output-family census links point at the repository's main branch, so you can check this snapshot against them.