Scenarios, Ambition Levels & Parameter Bounds ============================================= **Implementation status:** Partial (coverage matrix rows *Scenarios*, *Ambition Levels*, *Parameter Bounds* — presets not mapped 1:1 to CASCADE scenario values; aircraft bounds encoded DL-029) **Source:** ``src/data/presets.ts``, ``src/engine/constants.ts:AMBITION``, ``src/data/constraints.ts:CASCADE_BOUNDS``, ``src/state/url-state.ts`` + ``src/state/scenario-schema.ts`` **Test evidence:** ``tests/cascade-parity.spec.ts`` (frozen presets), ``tests/url-state.spec.ts``, ``tests/bounds-electric.spec.ts`` Scenario presets ---------------- Nine presets ship in ``presets.ts``; selecting one writes its parameters into the scenario state. Each preset pins the frozen-baseline tracks (``offset_mode: 'percent'``, ``traffic_model: 'legacy_anchor'``) where required so the parity spec stays reproducible. .. list-table:: :header-rows: 1 :widths: 25 45 30 * - Preset - Description - Source basis * - Moderate - Central case — business-as-usual improvement pace - ICAO LTAG (2022) * - Waypoint 2050 — Low SAF - Low SAF availability - ATAG Waypoint 2050 * - Waypoint 2050 — High SAF - High SAF availability - ATAG Waypoint 2050 * - Waypoint 2050 — 3rd Edition - Revised SAF supply/demand curves - ATAG Waypoint 2050 (3rd ed.) * - Destination 2050 - European aviation net-zero pathway - Destination 2050 consortium * - ReFuelEU Mandate - EU SAF blending mandate trajectory (2 % → 70 % by 2050) - ReFuelEU Aviation * - ICAO LTAG Integrated - Long-term aspirational goal, all levers - ICAO LTAG * - LH2GT WP6 - Hydrogen research programme scenario - Rolls-Royce/easyJet/Heathrow/UCL ATSLab * - SC Motor Optimistic - Superconducting breakthrough + aggressive decarbonisation - HyFlux extension Ambition levels --------------- Each pillar takes a 1–5 ambition level indexing a five-position table (``constants.ts:AMBITION``): .. list-table:: :header-rows: 1 * - Lever - L1 - L2 - L3 - L4 - L5 * - Traffic CAGR (%/yr) - 2.4 - 2.9 - 3.4 - 3.7 - 4.0 * - Aircraft (% reduction) - 8 - 15 - 25 - 38 - 52 * - Operations (%) - 3 - 6 - 10 - 15 - 21 * - Energy (%) - 5 - 12 - 22 - 35 - 50 * - Offsets (%) - 10 - 40 - 100 - 100 - 100 Auxiliary tables exist for operations components (ARM 0.4–2.0, FAO 0.8–4.0, ATM 1.0–5.0, LF 82–89 %), hydrogen (electrolysis share, production and liquefaction intensities, vapor loss) and removal mixes; the aggregate reduction across the four levers is capped at 95 % in the legacy path. Parameter bounds ---------------- CASCADE's published **scenario bounds** (allowed input ranges — not feasibility claims) are encoded as a distinct ``cascade-bounds`` constraint check (DL-029, April-2026 snapshot; the current online bounds page is not held locally — a recorded provenance gap): * Future-aircraft efficiency delta: −30 % … +60 % (the module-level bound is the wider −30 % … +70 %; the discrepancy is recorded, DL-025). * EIS window: 2019–2049 (stricter side of CASCADE's own 2049/2050 inconsistency). * Ramp up/down duration: 0–15 years. * Steady-state production maxima (aircraft/month): regional 150, single-aisle 375, widebody 120, freighter 130. * Fleet phase-out duration: 15–30 years. HyFlux's own feasibility constraints (UCO feedstock ceiling, LH₂ airport rollout, grid-CI sanity, biomass sustainability, removal capacity) are kept separate and flagged differently in the UI. URL-state v2 ------------ Scenario state serialises to a shareable URL token under **schema v2** (DL-018): a named sparse diff-from-defaults over a generated **199-field runtime registry** (169 numeric, 13 string, 9 point-array, 4 boolean fields plus enums — the complete parameter audit). Properties: * Deterministic: sorted keys; identical scenarios produce identical URLs. * Whitelisted: unknown keys are dropped; per-field runtime validation. * Capped arrays: 24 custom curve points, 12 CAGR periods. * Backward compatible: v1 positional decode is retained frozen for old links; v1's field order may never be extended. New links emit v2 only. * No secrets: a codec test scans for excluded sensitive fields. Nine codec tests cover round-trip, malformed-state rejection, determinism, length ceilings and the v1 freeze (``tests/url-state.spec.ts``). Scenario horizon (``end_year``, DL-044) --------------------------------------- The horizon selector ``end_year`` is part of the v2 registry as ``enum_end_year``: only ``2050``, ``2075`` and ``2100`` decode; any other value is rejected and the scenario falls back to the 2050 default (the engine additionally clamps out-of-set values for direct callers). The default is bit-identical to the legacy engine, and the hold-not-stretch / prefix-invariance conventions are documented at :doc:`trafficGrowth`. There is no dedicated UI control — the horizon is set through URL state — and the scenario-library presets all run to 2050. The related CGI fields (``cgi_enabled``, ``cgi_gamma_end`` — clamped to [0, 0.85], default 0.85, flat continuation of the CORSIA baseline) are likewise URL-persisted; CGI is active in constrained offset mode only and the frozen ``'percent'`` track ignores it entirely (tested identical). Boeing CMO traffic root (DL-164) -------------------------------- The scenario ``boeing_cmo_baseline`` (collection *Boeing*) roots traffic on the two **public endpoint anchors** of Cascade's Boeing Forecast (CMO + WACF) configuration: 1.08 Gt net CO₂e in 2019 and 2.98 Gt gross in 2050 with every abatement lever off, with passenger load factor held flat at 81 % from 2020. The growth input (4.06 %/yr) is the *effective* rate that reproduces those endpoints through this engine's COVID dip — it is deliberately **not** Boeing's published traffic CAGR, and route-level CMO data is proprietary: endpoint anchoring only, no data parity claimed (``tests/cmo-anchor.spec.ts`` locks both anchors). Cascade locks the traffic detail and the 2019 baseline calibration while its CMO root is loaded; the HyFlux Forecast workspace mirrors both locks. A section-by- section consistency report against the captured Cascade CMO configuration is maintained in the forecast app's audit register (``hyflux-cascade/audit/cmo-parity-flags.md``). Published OEM outlook roots (DL-166) ------------------------------------ Two further traffic roots make the market outlook a selectable switch: ``boeing_cmo_2026`` applies the 4.0 %/yr world RPK growth (2025–2045) Boeing itself publishes in its CMO 2026 forecast-data workbook, and ``airbus_gmf_2026`` applies 4.03 %/yr **derived** by summing the published per-country trip totals in Airbus's GMF 2026 workbook (which publishes no world RPK figure — trips understate RPK growth where average trip length grows, and the card says so). Both tables are transcribed programmatically with full attribution in ``src/data/market-outlooks.ts``; the Boeing workbook's 39-row region-pair RPK table values the equation-13 regional machinery that was previously a caller input (``tests/market-outlooks.spec.ts`` pins table integrity, including that the published flow rows sum to the workbook's Grand Total). Only the freely published summary tables are quoted — no licensed row-level Cirium/Sabre data. Known deviations / limitations ------------------------------ * Preset parameter values are HyFlux calibrations informed by the named sources, not transcriptions of CASCADE scenario tables. * Only the aircraft bounds section is encoded; traffic/ops/energy/offsets bounds sections remain open. * The frozen-baseline pins mean preset outputs intentionally reproduce legacy behaviour even where defaults have since been corrected (:doc:`introduction`, two-track baselines).