"IRA Only" Source Bug Probe

Runs two identical scenarios — both with source = 'ira' — at $100K/yr and $1M/yr. If the engine honors the "IRA Only" setting, the Roth column should stay $0 until the IRA is fully depleted in both cases.

No console required. Take a screenshot of this page and send it back — it tells me exactly which path the bug is on.

Scenario A — $100,000 / yr

Withdrawal: $100,000/yr · Ages 73–94 · Source = IRA Only

What the engine sees on the normalized stream
stream.source: ira
stream.splitMode: none
Did Roth get drained while IRA still had money?
NO — sourcing correct
AgeIRA BoYRoth BoYIRA WdRoth Wd
73$3,378,958$1,689,479$100,000$0
74$3,475,695$1,790,848$100,000$0
75$3,578,237$1,898,299$0$0
76$3,638,747$2,012,196$0$0
80$3,826,236$2,540,352$0$0
85$3,874,577$3,399,564$0$0
90$3,613,702$4,549,383$0$0
94$3,126,424$5,743,491$0$0
Show normalized stream JSON
{
  "schemaVersion": 3,
  "streams": [
    {
      "id": "ira_only",
      "priority": 1,
      "disabled": false,
      "label": "IRA Only — $100,000/yr",
      "mode": "specified",
      "amount": 100000,
      "startAge": 73,
      "endAge": 94,
      "frequency": "annual",
      "source": "ira",
      "useSmartLogic": false,
      "inflationAdjusted": false,
      "inflationStartAmount": 0,
      "durationMode": "age_window",
      "fallbackMode": "none",
      "splitMode": "none",
      "splitIraPct": 50,
      "splitRothPct": 50,
      "splitIraDollar": 0,
      "splitRothDollar": 0
    }
  ]
}

Scenario B — $1,000,000 / yr

Withdrawal: $1,000,000/yr · Ages 73–94 · Source = IRA Only

What the engine sees on the normalized stream
stream.source: ira
stream.splitMode: none
Did Roth get drained while IRA still had money?
YES — BUG REPRODUCED
AgeIRA BoYRoth BoYIRA WdRoth Wd
73$3,378,958$1,689,479$1,000,000$0
74$2,521,695$1,790,848$1,000,000$0
75$1,612,997$1,898,299$934,431$0
76$649,777$2,012,196$622,360$350,223
80$0$0$0$0
85$0$0$0$0
90$0$0$0$0
94$0$0$0$0
Show normalized stream JSON
{
  "schemaVersion": 3,
  "streams": [
    {
      "id": "ira_only",
      "priority": 1,
      "disabled": false,
      "label": "IRA Only — $1,000,000/yr",
      "mode": "specified",
      "amount": 1000000,
      "startAge": 73,
      "endAge": 94,
      "frequency": "annual",
      "source": "ira",
      "useSmartLogic": false,
      "inflationAdjusted": false,
      "inflationStartAmount": 0,
      "durationMode": "age_window",
      "fallbackMode": "none",
      "splitMode": "none",
      "splitIraPct": 50,
      "splitRothPct": 50,
      "splitIraDollar": 0,
      "splitRothDollar": 0
    }
  ]
}