Calculation catalog › Cash flow and summary

Cash flow line plan dollars

The nominal plan-dollar amount of one identity-bearing cash-flow line in a projection year: a source line's amount, a use line's requested, funded and unfunded amounts, and a transfer line's paired debit and credit.

Field: Cash-flow line amounts (nominal plan dollars) Unit: US dollars Basis: nominal dollars Computed by: Engine Status: Complete chain

Appears in: cash-flow-drilldown (YearCashFlowDialog DetailTable columns Amount, Requested, Funded, Unfunded, Debit and Credit (through display-dollar-basis-conversion)); cash-flow-drilldown (Sankey links and per-node totals (the UI mapping is cash-flow-line-amount)); cash-flow-drilldown (detailCsv.ts columns nominalAmount, requested, funded, unfunded, debit, credit (unrounded nominal plan dollars))

Calculation records

  • Cash-flow line amounts and the annual cash identity Composition record, justified by derivation

    Purpose: Which reported lines are cash on each side, so the same dollar is never counted twice.

    Statement: The Plan-dollar amounts on projection/internal/types/cashFlow.ts#YearCashFlowCashSourceLine, #YearCashFlowUseLine and #YearCashFlowTransferLine obey the source-side annual cash identity reconciled by projection/annualCashFlowReconciliation.ts#reconcileYearCashFlow: spendable sources plus portfolio funding plus loan proceeds equal funded household uses plus settled tax plus penalties plus contributions plus surplus investment. A #YearCashFlowPostSolveDepositLine sits outside that identity, as does a tax-character annotation. Units: nominal Plan USD. Rounding: none.

    Formula: sourceTotal = spendable + portfolioFunding + loanProceeds; destinationTotal = fundedUses + tax + penalties + contributions + surplus; difference = sourceTotal - destinationTotal

    • spendable: Spendable-source lines (unit: usd) (domain: role spendableSource)
    • portfolioFunding: Portfolio-funding lines (unit: usd) (domain: role portfolioFunding)
    • loanProceeds: Loan-proceeds lines (unit: usd) (domain: role loanProceeds)
    • postSolveDeposit: Receipt deposited after the solve (unit: usd) (domain: excluded from both sides)

    Timing: once per captured projection year

    Rounding: none

    Limits:

    • Asserted at the production reconciler with the worksheet's eight published totals as line amounts, plus its 5,000 post-solve life-insurance deposit and a 5,000 contribution transfer pair. Plan assumptions beyond the worksheet's inputs: the account and property identities the line ids carry, and the reconciler's own published tolerances, which are imported rather than written in
    • The identity is asserted on the published totals, not re-derived: the test reads sourceTotalPlanDollars, destinationTotalPlanDollars and differencePlanDollars from the reconciliation result

    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: cash-flow-line-plan-dollars.md Mutation receipt: cash-flow-line-plan-dollars.mutation.md

    Evidence tests: annualCashFlowReconciliation.evidence.test.ts

    Implemented in: cashFlow.ts; annualCashFlowReconciliation.ts

    Is the number of: cash-flow-line-plan-dollars

    Feeds: cash-flow-reconciliation-totals

Records that feed this number

  • Annual employer match under the pay cap and the annual-additions limit Formula record, justified by derivation

    Purpose: What the employer actually adds once the pay cap and the IRC 415(c) ceiling are applied.

    Statement: projection/internal/types/result.ts#YearResult.employerMatch, planned by projection/internal/annualContributionsAndEmployerMatch.ts#annualContributionsAndEmployerMatch, is min(elective deferral landed, capPctOfPay/100 x wages) x matchPct/100, capped by the owner's remaining IRC 415(c) room for that plan after the elective deferrals. The 2026 tax parameters fix the 415(c) limit at 72,000. The match is computed only after every elective deferral has landed. Units: nominal USD per year. Rounding: none.

    Formula: employerMatch = min(min(E, c W) m, L - E - other additions)

    • E: Elective deferral landed in the plan (unit: usd/year) (domain: nonnegative)
    • W: Owner wages from the sponsoring employer (unit: usd/year) (domain: nonnegative)
    • c: Match cap share of pay (unit: 1) (domain: capPctOfPay / 100)
    • m: Match rate on the matched elective base (unit: 1) (domain: matchPct / 100)
    • L: IRC 415(c) annual-additions limit (unit: usd/year) (domain: 72,000 for 2026)

    Timing: once per projection year, after every elective deferral has landed

    Rounding: none

    Limits:

    • Asserted as the published field of a real simulatePlan 2026 row built from the worksheet's inputs: wages 75,000, one employer traditional plan whose desired deferral of 24,500 lands in full, a 50-percent-of-pay match cap, a 200-percent match rate, and no other annual additions. Plan assumptions beyond the worksheet's inputs: the owner is 45 and filing single in KY at a zero state rate, so no age-50 catch-up can widen either the deferral or the room; the plan opens at a zero balance with zero returns and no spending; and the 2026 415(c) limit and elective-deferral limit are read from the published parameters rather than written into the test
    • The worksheet's third wrong reading (applying the pay cap after the match rate) produces 37,500, which is discriminated numerically here only because the 415(c) cap lands at 47,500 rather than 37,500

    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: year-result-employer-match.md Mutation receipt: year-result-employer-match.mutation.md

    Evidence tests: simulate.evidence.test.ts

    Implemented in: result.ts; annualContributionsAndEmployerMatch.ts

    Is the number of: year-result-employer-match

    Feeds: accounts-ending-balance-by-category, cash-flow-line-plan-dollars

Engine source: engine/src/projection/internal/types/cashFlow.ts (YearCashFlowCashSourceLine.amountPlanDollars / YearCashFlowPostSolveDepositLine.amountPlanDollars / YearCashFlowUseLine.requestedPlanDollars, fundedPlanDollars, unfundedPlanDollars / YearCashFlowTransferLine.debitPlanDollars, creditPlanDollars)

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.