{"model":"one-income","specVersion":"1.0.0","specUrl":"/api/v1/models/one-income/spec","inputs":{"income1":{"kind":"float","min":30000,"max":500000},"income2":{"kind":"float","min":0,"max":300000},"monthlyExpenses":{"kind":"float","min":1000,"max":20000},"currentSavings":{"kind":"float","min":0,"max":1000000},"currentAge":{"kind":"int","min":22,"max":60},"retirementAge":{"kind":"int","min":45,"max":75},"annualReturn":{"kind":"float","min":0.02,"max":0.12},"marginalTaxRate":{"kind":"float","min":0.1,"max":0.5},"savingsRateOnOneIncome":{"kind":"float","min":0,"max":0.4},"childcareMonthlyOffset":{"kind":"float","min":0,"max":5000}},"arrayInputs":{},"constraints":["retirementAge must exceed currentAge"],"sentinels":[{"field":"runwayMonths","value":999,"meaning":"sustainable — one-income surplus is non-negative, no drawdown"}],"facts":[],"disclaimer":"Illustrative planning model, not financial advice. Outputs follow the published model spec exactly; read the spec for assumptions and exclusions before relying on any number."}