Methodology Parity#

Source: phase0-discovery/cascade-coverage-matrix.csv, phase0-discovery/claim-register.csv, phase0-discovery/ENGINEERING_DECISION_LOG.md Test evidence: the whole tests/ suite (summary below)

This page consolidates the parity programme: the coverage matrix, the deviations register, the engineering decision log highlights, the test suite, and the standing security note.

Status vocabulary: Exact — equation-level parity benchmarked against the published CASCADE formulation; Equivalent — same mathematics on a documented simplified base; Simplified — implemented with reduced resolution; Extended — HyFlux capability beyond CASCADE’s published method; Partial — a documented subset; Missing — not implemented; Fixed — a confirmed defect repaired under a two-track baseline.

Coverage matrix#

Rendered from cascade-coverage-matrix.csv (2026-07-18), abbreviated columns. This is the historical Phase-0 snapshot: it is kept verbatim as provenance, and many of its Missing / Simplified verdicts have since been closed. The matrix was regenerated per-source-file against the July 2026 CASCADE corpus under DL-131/DL-132 (docs/rst-coverage-matrix.md / .csv / .json, 2026-07-31 — 256 distinct governing equations, 163 mapped at DL-132, 186 at DL-134), and the register refresh below records the verified state as of 2026-08-02. Where this snapshot and the refresh differ, the refresh is authoritative.

CASCADE section

HyFlux module

Status

Parity tests

Notes

Glossary

n/a

Missing

None

Not in either local RST folder — download in Phase 1

Introduction/Nomenclature

n/a

Missing

None

Upper/lower-case fleet-vs-route nomenclature not represented in HyFlux (global aggregation only)

Air Traffic Dataset

src/data/cirium-mock.ts (56 lines)

Simplified

None

Cirium route data proprietary; HyFlux uses mock + global CAGR — no route resolution

Payload Capacities

none

Missing

None

Fuel Burn Energy Emissions

src/engine/cascade.ts (partial)

Simplified

Partial (legacy v3.3 parity spec only)

Parity test compares TS port to own legacy JS, not to CASCADE

Fleet Size Estimation

none

Missing

None

Traffic Growth

cascade.ts:310-313 (CAGR+COVID)

Simplified

None

Single global CAGR; no route/regional differentiation

Fleet Renewal

src/engine/curves.ts fleetRenewalFraction

Equivalent (curve family verified; route-level Missing)

Benchmarked (tests/fleet-renewal-parity.spec.ts 2026-07-18)

Equation-level parity: piecewise branches, a & m closed forms EXACT; slope continuity verified; T’out pre-start shortening rule implemented (DL-028, inert for endProd>=2019). RST-INTERNAL FINDING F3: published intercept b omits “+1” and fails continuity with its own piecewise definition by exactly 1 (HyFlux continuity-derived b is correct). Route-level flight substitution / seat-cargo capacity corrections remain Missing (need route model)

Future Aircraft

AircraftModal + ambition scalar

Simplified — all 5 §26 review actions done (opt-in)

Reviewed + machinery benchmarked (fleet-insertion.spec.ts)

Reference range-energy tables Boeing-proprietary — exact value parity NOT achievable (§30). DL-026/028/029: EIS gating, insertion machinery (r_ss/t_sat/truncation), size-class segmentation, battery multiplier APPLIED via regional-class electric wedge (el_ceiling opt-in), CASCADE bounds in constraints.ts. Remaining structural gaps need route resolution: eligibility plane, market-saturation freeze, traffic conservation, per-type flight counts

Operations (incl pulse curve)

cascade.ts ops wedge

Partial (LF wired DL-010; pulse implemented DL-020)

Benchmarked (load-factor.spec.ts; pulse-curve.spec.ts)

LF: RPTK-conservation aggregate form implemented + 7 tests. Pulse: exact RST formulation in curves.ts pulseAt() + 11 tests (UI exposure pending). ARM/FAO/ATM additive eq. 121 present; per-route resolution absent

Electricity

grid CI params in cascade.ts

Simplified

None

Hydrogen

cascade.ts h2/liq/vap/bor params + h2ElysShareAt

Partial: LH2,del EXACT; CI_GH2 mix linked (DL-026)

Benchmarked (tests/hydrogen-pathways.spec.ts 2026-07-18)

LH2 delivered CI reproduces RST closed form exactly. ciGh2At() blends elys+SMR by shared smr_share; PtL CI now sensitive to full H2 production mix. Residual: time-varying h2_elec_share curve not yet wired into ciGh2At (static smr_share used, consistent with LH2 chain)

Methane

src/engine/saf.ts methaneBlend + cascade.ts wedge

Simplified

Benchmarked (tests/methane-parity.spec.ts 2026-07-18)

§25: fossil CI 68 & bio CI 22 CONDITIONALLY VALIDATED (inside RST-equation envelopes; implied f_loss/CI_liq undisclosed); 2-term mixing EQUIVALENT to eq. methane_aggregate_ci; MISSING: PtG e-methane; NEC/DW/WW split; editable f_loss; grid-linked CI_liq(t)=eps_liq*CI_elec(t); vapor-loss compounding. RST-INTERNAL FINDINGS: F1 558 vs 596 (GWP 29.8 implies 596; 558 implies GWP 27.9 — 6.4% doc inconsistency); F2 f_loss appears in CI_loss definition AND as multiplier (notational double-count)

Jet Fuel

implicit baseline CI

Simplified

None

Energy Demand

none

Missing

None

Needed as foundation for airport infrastructure workstream

Offsets & Removals

src/engine/removals.ts + cascade.ts

Fixed (DL-012): capacity-constrained net default

Benchmarked (removal-capacity.spec.ts; two-track baselines)

DEFECT FIXED DL-012 + BASE CORRECTED DL-027: constrained mode applies min(demand,capacity) removals to RESIDUAL emissions per RST; sigma(t) shown vacuous under HyFlux parameterisation (net>=0 without clamp); legacy percent mode frozen. Remaining vs RST: per-route resolution only

CORSIA

cascade.ts:281-299 SEB/SGF/offsetRequired

Partial (sectoral subset Equivalent; operator/CGI Missing)

Benchmarked (tests/corsia-parity.spec.ts 2026-07-18)

Equation map: corsia-equation-map.csv (21 eqs). SEB factor/SGF/deltaG Equivalent on simplified base (total gross, no routes_CORSIA filter). Missing: operator accounting, w(t) schedule (CASCADE itself deviates: route-homogeneous), auto-offset wiring 2024-2035, sigma normalization, CGI to 2100. Deviation pinned: offsets demand base = gross vs CASCADE residual

Cost

removal costs only

Mostly missing

None

NEW docs section (not in old Rst folder). Fuel-cost model absent from HyFlux

Scenarios (Boeing/IEA/D2050/LTAG/ReFuelEU/Waypoint)

src/data/presets.ts

Simplified

None

IEA, Destination2050, ReFuelEU are new vs April snapshot

Ambition Levels

src/engine/constants.ts AMBITION

Partial

None

offsets ambition [10,40,100,100,100] amplifies removal defect

Parameter Bounds

src/data/constraints.ts

Implemented (aircraft section, DL-029)

Benchmarked (bounds-electric.spec.ts)

CASCADE_BOUNDS in constraints.ts as a distinct cascade-bounds check (scenario bounds vs feasibility kept separate per §26.8): eff -30/+60, EIS 2019-2049 (stricter of RST 2049/2050 inconsistency), ramp 0-15, prod maxima 150/375/120/130, fleetOut 15-30. Source: Apr-2026 bounds snapshot — current online page not held locally (provenance gap). Traffic/ops/energy/offsets bounds sections still open

Context Metrics

none

Missing

None

References

src/data/references.ts

Partial

None

Regional Scenarios

none

Intentionally excluded?

None

Present in April snapshot only — appears removed from current docs; classify Older-but-useful

SAF (standalone page)

src/engine/saf.ts

Partial

Partial

Old saf.rst superseded by jetFuel/methane/hydrogen restructure; saf.ts implements PtL CI eq. 112

Gap-register refresh (2026-08-02)#

Every row below was re-verified against the current engine and a green test this pass (vitest run: 1,820 tests across 112 spec files, all passing — 1,816/111 at the 2026-08-02 refresh, plus DL-167’s spec file, which landed after the refresh). A claim flips to Implemented only when both the implementing module and its test exist; Implemented (standalone) / (shadow) means the equations exist and pass tests but are not wired into ``computeLCA`` — the controlled-integration registry (src/engine/integration.ts, DL-138, enforced by tests/suite-o-integration-governance.spec.ts) records each module’s stage, and no production default has changed.

Former register claim

Current status

Module

Test evidence

Glossary (Missing)

Closed (docs)

Glossary

n/a (documentation page)

Introduction/Nomenclature — fleet-vs-route case distinction (Missing)

Closed (docs) / Partial (engine)

Introduction (nomenclature section); src/engine/fleet-tensor.ts (per-type × route tensor, DL-137; existing-aircraft axis honestly lumped, operator axis synthetic)

tests/suite-n-corsia-tensor.spec.ts

Payload Capacities (Missing)

Implemented — Exact, 17/17 equations (DL-132)

src/engine/payload.ts, src/engine/rtk-network.ts

tests/suite-e-payload-fleet.spec.ts

Fleet Size Estimation (Missing)

Implemented — Exact, 5/5 equations + both τ_avg bucket tables (DL-132); CASCADE’s own β_NEC placeholders carried as published, so independent validity stays Unverified

src/engine/fleetEstimation.ts

tests/suite-e-payload-fleet.spec.ts (E.7/E.8)

Energy Demand (Missing)

Implemented — two layers: aggregate roll-up in production (2026-07-18) plus all 29 governing equations standalone (DL-136, Stage-1 shadow)

src/engine/energyDemand.ts; src/engine/energy-demand-full.ts

tests/energy-demand.spec.ts; tests/suite-j-energy-demand-full.spec.ts

Context Metrics (Missing)

Implemented — 6/6 equations (DL-134), incl. the Breguet electric range with its 19 % on-page self-disagreement reported, not hidden

src/engine/context-metrics.ts

tests/suite-h-cost-context.spec.ts

Cost model (Mostly missing)

Implemented — all 22 equations incl. MAC and per-payload-distance costs (DL-134); standalone — the production path still emits the legacy absolute series; currency year unstated by CASCADE (COST_CURRENCY_NOTE)

src/engine/cost-model.ts; src/engine/cost-series.ts; src/engine/fuel-costs.ts

tests/suite-h-cost-context.spec.ts; tests/sbatch-cost.spec.ts; tests/fuel-costs.spec.ts

CORSIA operator accounting + w(t) (Missing)

Implemented (standalone) — OEB/OGF/w(t) schedule and CGI operator analogues (DL-045/046), plus the eq. 16/17/19/24/31 aggregation identities and the printed-vs-floored SGF divergence made measurable (DL-137). Not wired into computeLCA; operator set synthetic (one per origin state)

src/engine/routes/corsia-operator.ts; src/engine/corsia-aggregation.ts

tests/corsia-operator.spec.ts; tests/route-corsia.spec.ts; tests/suite-n-corsia-tensor.spec.ts

CGI to 2100 (Missing)

Implemented (DL-044) — auto-offset wiring 2024–2035 + linear CGI baseline to end_year; constrained mode only

src/engine/cascade.ts (cgiBaselineAt, cgi_enabled, cgi_gamma_end)

tests/horizon-2100.spec.ts; tests/end-year.spec.ts

Route-level flight substitution & seat/cargo capacity corrections (Missing)

Implemented (shadow) — the full fleetRenewal.rst route chain: substitution, freighter/passenger payload corrections, the seven-step RCTK conservation proof, belly-cargo mapping (DL-136)

src/engine/fleet-renewal-route.ts

tests/suite-k-fleet-renewal-route.spec.ts

Per-type flight counts / traffic conservation (Missing)

Implemented (standalone) — the ac × rt flight tensor and its six folds + eq. 4 production-rate → r_ss (DL-137). The existing-aircraft axis is lumped (EXISTING_LUMPED) pending licensed fleet data

src/engine/fleet-tensor.ts

tests/suite-n-corsia-tensor.spec.ts

Eligibility plane (Missing)

Implemented — route eligibility = size-class eligibility ∧ distance ≤ usable range (0.8 × design range, documented assumption)

src/engine/futureAircraft.ts

tests/future-aircraft.spec.ts

Market-saturation freeze (Missing)

Still open — adjudicated deviation: pro-rata normalisation instead of CASCADE’s freeze-at-\(t_{marketSat}\) \(x^*(rt,t)\); the three-step \(t_{marketSat}\) interpolation is not implemented

deviation registered (Aircraft — Fleet Renewal & Future Aircraft)

tests/future-aircraft.spec.ts (pro-rata behaviour pinned)

Per-route resolution (Missing)

Partial — opt-in 'route_resolved' traffic model scales CORSIA quantities by eligible fractions; the route-level modules above run standalone/shadow; the production wedge engine remains aggregate

src/engine/routes/*; src/engine/cascade.ts:654

tests/route-corsia.spec.ts; tests/route-model.spec.ts

PtG e-methane (Missing)

Implemented (DL-032; PtG electricity/H₂ demand closed by DL-136)

src/engine/saf.ts:ciCh4PtgAt; src/engine/energy-demand-full.ts

tests/methane-parity.spec.ts; tests/carrier-conservation.spec.ts; tests/suite-j-energy-demand-full.spec.ts

NEC/DW/WW bio-methane split (Missing)

Implemented (DL-048)

src/engine/saf.ts (bio-methane category split)

tests/methane-split.spec.ts

Editable fuel loss \(f_{loss}\) (Missing)

Implemented (DL-081) — year-trajectory ch4FLossAt (constant mode = bit-identical legacy default)

src/engine/leakage-trajectory.ts

tests/leakage-trajectory.spec.ts

Grid-linked liquefaction CI (Missing)

Implemented (DL-162 §4) — \(CI_{liq}(t) = \varepsilon_{liq} \cdot CI_{elec}(t)\) in the shared methane loss machinery (ch4_eps_liq, default 0.04)

src/engine/saf.ts:ch4LossTermsAt

tests/leakage-trajectory.spec.ts; tests/evidence-register.spec.ts

Vapour-loss compounding (Missing)

Implemented (DL-134) — stagewise \(1-\prod_i(1-f_i)\), with the naive sum alongside so the drift is measurable

src/engine/methane-stoichiometry.ts:downstreamVapourLoss

tests/methane-stoichiometry.spec.ts

SMR in the electricity roll-up / liquefaction electricity in energy demand (Missing)

Implemented in the full module (DL-136, shadow) — htype decomposition, PtG + liquefaction + removals electricity, product slate \(P_{PtL}\), α_eFuel allocation. The production roll-up keeps the documented simplified treatment (bit-identical default)

src/engine/energy-demand-full.ts

tests/suite-j-energy-demand-full.spec.ts

Regional Scenarios (Missing / “intentionally excluded?”)

Withdrawn — the page is absent from the July-2026 CASCADE corpus (27 files, DL-131/132); there is no current source to cover

n/a

docs/rst-coverage-matrix.md (corpus inventory)

Air-traffic dataset “mock + global CAGR” (Simplified)

Partly stale as claimed — traffic_model has three URL-shareable tracks (legacy_anchor / cascade_series / route_resolved, DL-022/045); the opt-in route_resolved track runs CORSIA/CGI eligibility on the synthetic-representative route set and reports eq. 10 per-class flight counts + traffic conservation identities; since DL-165 every result carries provenance.trafficBasis (the DL-139 §6 five facts from the run’s actual inputs). Gross remains a global scalar on all tracks; an observed route-level baseline stays licence-blocked (Air Traffic Dataset)

src/engine/traffic-dataset-provenance.ts; src/engine/traffic-basis-registry.ts

tests/traffic-dataset-provenance.spec.ts; tests/suite-p-adjudication.spec.ts

Traffic growth “single global CAGR” (Simplified)

Partial — multi-segment cagrPeriods in production; the full Hermite linking family, region-pair CAGR form and per-route projections standalone (DL-137, shadow). The Hermite width α is never valued in the corpus (required caller argument, no default); the eq. 13 region-pair form is now valued by Boeing’s published CMO 2026 workbook table + Airbus GMF 2026 (DL-166, src/data/market-outlooks.ts, boeing_cmo_2026 scenario); named traffic bases with mandatory provenance (CASCADE_PARITY / CURRENT_EVIDENCE_*) per DL-139 — the 2019-rooted vs 2023-rebased readings differ by 21.77 % from 2032 and no selector may hide which one a number came from

src/engine/traffic-growth-full.ts; src/engine/traffic-basis-registry.ts; src/data/market-outlooks.ts

tests/suite-l-traffic-growth-full.spec.ts; tests/suite-p-adjudication.spec.ts; tests/market-outlooks.spec.ts

Route-level traffic baseline (Simplified — “mock only”)

Implemented (standalone, licence-gated) — versioned offline Cirium snapshot schema with coverage validation and export refusal until licence retention is confirmed (DL-133 §11); governed live corridor snapshot loader, gitignored, mock fallback (DL-153)

src/engine/route-traffic-baseline.ts; src/data/cirium-snapshot.ts; src/data/cirium-live.ts

tests/suite-g-cirium-baseline.spec.ts; tests/cirium-live.spec.ts

Future-aircraft structural gaps (Simplified)

Partial — EIS-gated class adoption exported as a single factory so UI and engine share one implementation (DL-160); chained ac_generations baseline renewal (DL-049); flight tensor standalone (DL-137). Remaining: market-saturation freeze (deviation above), Boeing-proprietary range-energy tables (adjudicated — no exact value parity), lumped existing-type axis

src/engine/cascade.ts:makeAcAdoption; src/engine/fleet-tensor.ts

tests/future-aircraft-ui.spec.ts; tests/multi-generation.spec.ts; tests/suite-n-corsia-tensor.spec.ts

Operations per-route (Simplified)

Implemented (shadow) — the printed three separate linear ramps, the multiplicative \(e^* = (1-\Delta\eta)e_{in}\) form and the eq. 5 flight-count recomputation (DL-137); the three end-values are never valued in the corpus (required caller arguments). Production wedge unchanged (subtractive, S-curve — divergence documented)

src/engine/operations-full.ts

tests/suite-m-operations-fuelburn.spec.ts

Electricity grid CI (Simplified)

Partial — low-carbon CI is now a user input per the RST (ci_elec_lc, DL-129) and the market-share curve family incl. half-S is selectable (curve_elec_lc, DL-161). Remaining divergence: the legacy default interpolates CI linearly in year, and α_lowcarbon has no stated value in the RST

src/engine/saf.ts:gridCIAtFor

tests/dl129-grid-ci-lowcarbon.spec.ts; tests/curve-shapes-flat-pulse.spec.ts

Jet-fuel baseline CI (Simplified)

Partial — anchors remain fixed (WTW 89 / TTW 74 / WtT 15 gCO₂e/MJ) with jeta_upstream_share (DL-051); per-carrier lifecycle-boundary selection (WTW/TTW/WtT/custom stage sets) is first-class per DL-162 (Lifecycle boundaries)

src/engine/lifecycle-boundaries.ts

tests/lifecycle-boundaries.spec.ts

Supplementary coverage (landed after the CSV snapshot)#

The CSV above is the 2026-07-18 snapshot and is authoritative for the rows it carries; the following engine work landed after the snapshot and is recorded here rather than by editing the CSV (each item is documented at the linked page):

Item

Status

Test evidence

Note

Carrier conservation (DL-033, in-code label)

Fixed

tests/carrier-conservation.spec.ts (10)

SAF + CH₄ shares scaled pro-rata when their sum exceeds 1 — CASCADE’s aggregate-mix \(\sum X = 1\) constraint; bit-identical within budget (Energy Carriers). In-code DL-033 label; the decision log assigns DL-033 to Workstream B (numbering collision).

Horizon 2050/2075/2100 + CGI (DL-044)

Extended

tests/end-year.spec.ts (21), tests/horizon-2100.spec.ts (14)

end_year with hold-not-stretch (\(Y_{SAT} = 2050\) anchors every curve normalisation), prefix invariance, 2050-KPI stability; CGI auto-offsets to \(\gamma_{end}\,G_{2019}\) at end_year, constrained mode only (Traffic Growth, Scenarios, Ambition Levels & Parameter Bounds).

Contrail avoidance lever

Extended (app parity)

tests/contrails.spec.ts (20)

The RST set publishes no contrail formulation (grep-verified); knowledge factors 0/0.6/1.0 and \(R_{CO_2eq} = 2/3\) are documented fallbacks; pure module, not yet in the sweep (Operations).

CORSIA routes filter + operator accounting (DL-045/046)

Closed

tests/route-corsia.spec.ts (14), tests/corsia-operator.spec.ts (14)

Closes the CORSIA matrix row’s “operator/CGI Missing”: edition-listed participation (ICAO Ed. 6/7), fuel-weighted eligible fraction, per-operator accounting with homogeneity-reduction proof (CASCADE’s route-homogeneous form is the exact special case).

Baseline renewal, multi-generation, methane split, display gaps (DL-047…DL-050)

Closed (V3.0 gap register)

tests/baseline-renewal.spec.ts (6), tests/multi-generation.spec.ts (13), tests/methane-split.spec.ts (7), tests/ops-presets.spec.ts (5), tests/display-logic.spec.ts (9)

Opt-in conventional-generation baseline renewal (chained phase-out curves, one-entry chain provably ≡ single step); NEC/DW/WW bio-methane split; named ops presets; CI-by-end-use display decomposition.

Deviations register (summary)#

Registered implementation decisions that diverge from the published CASCADE formulation, each documented at the point of use:

  • Market-share cap: pro-rata normalisation instead of CASCADE’s freeze-at-\(t_{marketSat}\) (Aircraft — Fleet Renewal & Future Aircraft).

  • Insertion-rate constraint: module-level specs are rejected (RangeError) when \(r_{ss} > 1/T_{ramp}\) rather than truncated (Aircraft — Fleet Renewal & Future Aircraft); the truncating helper exists for the aggregate engine.

  • Usable range = 0.8 × design range — HyFlux assumption the RST does not specify (Aircraft — Fleet Renewal & Future Aircraft).

  • Offsets wedge base: constrained mode applies removals to residual emissions; the legacy percent mode keeps the gross base frozen (DL-027).

  • σ(t) normalisation shown vacuous under HyFlux’s parameterisation (Carbon Offsets & Removals).

  • PtL CI without artificial floor on the stoichiometric track (Energy Carriers).

  • Energy-demand roll-up (production): aggregate partition instead of per-route resolution; SMR ignored in the electricity roll-up; no liquefaction electricity; \(P_{PtL} = 1\) (Energy Demand). All four are closed in the standalone 29-equation module (energy-demand-full.ts, DL-136, shadow); the production default is unchanged.

  • Methane: Boeing’s published 558 adopted over the derived 596 in the frozen parity track (F1); single-multiplier reading of \(f_{loss}\) (F2) (Energy Carriers). DL-130 made this two-track: the CURRENT_EVIDENCE basis modules default to the derived 596 (and to the Sabatier floor 1.20636 over the published \(\varepsilon_{H_2,PtG} = 1.14\)), with the published values reproducible under CASCADE_PARITY (src/engine/basis.ts).

  • Fleet renewal: continuity-derived intercept \(b\) used where CASCADE’s published closed form omits “+1” (F3) (Aircraft — Fleet Renewal & Future Aircraft).

Decision-log highlights#

From ENGINEERING_DECISION_LOG.md (all entries 2026-07-18):

  • DL-006 — Two-track regression baselines approved: frozen legacy-defect spec plus corrected spec with documented deltas.

  • DL-012 — Removal-capacity defect fixed: constrained mode (default) uses min(demand, capacity) removals; legacy percent mode pinned by the frozen parity spec. Headline net at defaults 0.14 → 0.00 Gt (cause: arbitrary 95 % aggregate cap removed; capacity not binding at defaults).

  • DL-016 — All remaining as any casts removed; scenario writes go through the statically validating setScenarioField<K>.

  • DL-017 — Load factor wired as a physics change (RPTK conservation, freighters exempt), neutral at defaults; 7 validation tests.

  • DL-018 — URL-state v2: named sparse diff over the generated 199-field registry; v1 decode frozen for old links.

  • DL-019 — All six strict TypeScript flags enabled, 0 errors.

  • DL-020 — Pulse curve implemented from the RST formulation; 11 tests.

  • DL-021 — Concurrent methane feature preserved; benchmark made a gate for any parity claim.

  • DL-022 — Two-track traffic model: headline ≡ series by construction; methane benchmark complete with findings F1/F2 recorded.

  • DL-023 — CORSIA equation map (21 equations) + sectoral-subset benchmark; deviation pinned and later closed by DL-027.

  • DL-024 — LH₂ delivered CI reproduces the CASCADE closed form exactly (first Exact classification); PtL moved to the stoichiometric formulation two-track.

Later entries (DL-026…DL-050) closed the §26 Future-Aircraft actions, Workstreams A/B/D/F, the airport-map scaffold, the Cirium Sky client (DL-040), the Monte-Carlo cost engine (DL-039), the Phase-6 decision map (DL-038), the horizon-2100 + CGI wave (DL-044), the CORSIA equation map (DL-045/046), the remaining CASCADE V3.0 engine and display gaps (DL-047…DL-050), and drafted the Boeing evidence-gap letter (A1–A5 documentation inconsistencies, B1–B6 undisclosed assumptions — not sent, awaiting review).

The July/August 2026 correction-and-parity programme (DL-129…DL-164) regenerated the coverage matrix against the July-2026 CASCADE corpus (DL-131/132), fixed the grid-CI input and methane two-track defects (DL-129/130), wrote the six source-page closure modules — cost, context metrics, energy demand, fleet-renewal route chain, traffic-growth Hermite family, operations, flight tensor, CORSIA aggregation (DL-134/136/137) — under an explicit integration-stage registry that keeps them out of the production path (DL-138, integration.ts), adjudicated the named traffic bases (DL-139), audited control liveness (DL-140/141), corrected the DL-140 LH₂ ledger term (DL-142), added the governed Cirium snapshots (DL-133 §11 / DL-153), the Stage-2 route-aware sequential shadow (DL-154), the shared EIS-gated adoption factory (DL-160), curve-shape selection for grid/SAF adoption (DL-161), per-carrier lifecycle boundaries (DL-162, Lifecycle boundaries) and the Boeing-CMO traffic root (DL-164, Scenarios, Ambition Levels & Parameter Bounds). See docs/dl131-programme-report.md through docs/dl142-lh2-ledger-correction.md and the refresh table above.

Test suite#

The vitest suite is the parity evidence. Current state: 1,820 tests across 112 spec files, all passing (vitest run; 1,816/111 at the 2026-08-02 refresh — DL-167’s spec landed after it). Historical anchors: 536/536 across 42 files at the 2026-07-18 snapshot; 226/226 across 16 files at the Phase-4 Workstream-A report. Type checking: tsc 0 errors under all six strict flags. The table below lists the foundational specs by name (counts as of 2026-07-18); the post-snapshot work is covered by the lettered suites tests/suite-a…suite-q (HyFlux correctness, cascade parity, physics evidence, divergence regression, payload/fleet, gap closure, Cirium baseline, cost/context, unvalued partials, energy-demand full, fleet-renewal route, traffic-growth full, operations/fuel-burn, CORSIA/tensor, integration governance, adjudication, liveness) plus the DL-numbered and v5 specs — the refresh table above names the relevant spec for every closed row.

Spec file

Tests

Evidence for

tests/airport-demand.spec.ts

19

Airport demand-driven sizing (DL-035)

tests/baseline-renewal.spec.ts

6

Baseline fleet-renewal toggle (DL-047)

tests/bounds-electric.spec.ts

11

CASCADE bounds + electric wedge (DL-029)

tests/breakeven-ladder.spec.ts

17

Workstreams F & D, Q7–Q10 (DL-037)

tests/cascade-parity.spec.ts

4

Frozen legacy baseline (±0.5 %)

tests/carrier-conservation.spec.ts

10

Carrier conservation + PtG pathway (DL-033/032)

tests/cirium-client.spec.ts

11

Cirium Sky API client, mocked fetch (DL-040)

tests/contrails.spec.ts

20

Contrail-avoidance lever (app parity)

tests/corsia-operator.spec.ts

14

Per-operator CORSIA accounting (DL-046)

tests/corsia-parity.spec.ts

8

CORSIA sectoral subset (DL-023/027)

tests/custom-flags.spec.ts

4

Custom-settings badges

tests/decision-map.spec.ts

11

Phase 6 decision map (DL-038)

tests/display-logic.spec.ts

9

Display gaps G8/G11/G12 (DL-050)

tests/energy-demand.spec.ts

20

Energy-demand roll-up

tests/end-year.spec.ts

21

end_year horizon contract (DL-044)

tests/fleet-insertion.spec.ts

13

Insertion machinery (DL-028)

tests/fleet-renewal-parity.spec.ts

6

Fleet renewal equation parity + F3

tests/fuel-costs.spec.ts

9

Workstream B cost stacks (DL-033)

tests/future-aircraft.spec.ts

36

Future Aircraft module

tests/future-aircraft-ui.spec.ts

15

AircraftModal lever wiring (DL-026/028)

tests/geodesic.spec.ts

16

Geodesic map math (DL-031)

tests/horizon-2100.spec.ts

14

Horizon 2100 + CGI acceptance (DL-044)

tests/hydrogen-pathways.spec.ts

6

LH₂/GH₂ distinction (DL-024)

tests/load-factor.spec.ts

8

Load-factor physics (DL-017)

tests/mc-scthermal.spec.ts

9

Monte Carlo + SC thermal debits (DL-039)

tests/methane-parity.spec.ts

13

Methane benchmark + F1/F2 (DL-022/032)

tests/methane-split.spec.ts

7

NEC/DW/WW bio-methane split (DL-048)

tests/multi-generation.spec.ts

13

Chained generation machinery (DL-049)

tests/ops-presets.spec.ts

5

Named ops presets (DL-048)

tests/parity-actions.spec.ts

15

Battery multiplier, EIS gating, CI_GH2 (DL-026)

tests/preset-collections.spec.ts

5

Scenario-library collections (drift guard)

tests/ptl-stoich.spec.ts

11

PtL stoichiometry (DL-024)

tests/pulse-curve.spec.ts

11

Pulse curve (DL-020)

tests/removal-capacity.spec.ts

12

Constrained offsets (DL-012)

tests/route-corsia.spec.ts

14

routes_CORSIA eligibility (DL-045)

tests/route-filter.spec.ts

14

Route/class display filter

tests/route-model.spec.ts

19

Part B route-model scaffold

tests/sbatch-cost.spec.ts

14

S-batch + cost-tab engine layer (DL-043)

tests/supporting-models.spec.ts

21

RNG supply, non-CO₂, aircraft mass

tests/traffic-model.spec.ts

8

Two-track traffic (DL-022)

tests/url-state.spec.ts

9

URL codec v1/v2 (DL-018)

tests/usable-fuel.spec.ts

11

Workstream A reproduction (DL-030)

Measured CASCADE LH₂ wedge accounting (2026-08-01 live-API capture)#

Source: data/evidence/cascade-measured-lh2-2050.json (captured orchestrationLayerInterface payloads and full 2050 netEmissions decompositions); fable-addendum-lh2-measured.md (repository root) Test evidence: tests/cascade-measured-lh2.spec.ts (20 tests: fixture consistency + parity governance)

A live-API experiment (Waypoint 2050 Scenario 0 — Baseline, Low SAF; year 2050; five runs A–F varying the hydrogen-aircraft lever, H₂ production route and per-carrier hydrogen scope) resolved the wedge-allocation question this register previously carried as its highest-value open clarification. Measured behaviour:

  • LH₂ aircraft abatement books wholly in the Aircraft wedge, under netEmissions.futureAircraft.byAircraftClass.hydrogen, with delivered-LH₂ CI applied inside the Aircraft module (\(W = E_{\mathrm{H2}}\,(CI_{\mathrm{jet}} - CI_{\mathrm{LH2,del}})\), measured \(E_{\mathrm{H2}} \approx 5.887\times10^{12}\) MJ recovered identically from a CI change and from a scope change).

  • Anti-double-counting is sequential activity removal: hydrogen aircraft shrink the residual Jet-A pool (\(15.083 \to 10.342 \times 10^{12}\) MJ, None → High) and the SAF streams scale with that pool at unchanged blend shares. There is no explicit de-duplication subtraction and no Energy-wedge LH₂ term.

  • Per-carrier emission scope acts inside the Aircraft module (H₂ SMR WTW → TTW: −43.04 → −580.99 Mt) while the Energy wedge stays bit-identical; the parity request encodes scopes as a positional four-value string (jet fuel, hydrogen, electricity, methane; 1 = WTW, 2 = TTW).

  • Carriers are distinct: gaseous H₂ for e-fuels vs delivered LH₂ for aircraft, related by \(CI_{\mathrm{LH2,del}} = CI_{\mathrm{GH2}} + \varepsilon_{\mathrm{liq}}\,CI_{\mathrm{elec}}\) (measured 4.432 = 0.2 × 22.16 gCO₂e/MJ), and e-SAF follows \(CI_{\mathrm{PtL}} = 1.4\,CI_{\mathrm{GH2}} + 1.11\) against a fixed 89 gCO₂e/MJ WTW comparator — the e-fuel wedge legitimately changes sign (−25.84 Mt benefit under electrolysis, +19.00 Mt penalty under SMR).

Consequences recorded in this register:

  • Sequential wedge architecture is now the highest-value structural gap. The HyFlux engine computes wedges independently against gross; CASCADE propagates stage state (Traffic → Aircraft → Operations → Energy → Offsets), so downstream wedge magnitudes diverge whenever hydrogen aircraft are active even at perfect CI parity (measured Operations −128.63 → −102.56 Mt, Energy/SAF −305.10 → −209.20 Mt, A → B). The CASCADE_SEQUENTIAL accounting mode is now implemented at two stages, both shadow-only: the Stage-1 aggregate chain (sequential-shadow.ts, tests/sequential-shadow.spec.ts) and the Stage-2 route-aware shrinking pool with range-eligible LH₂ switching (sequential-shadow-stage2.ts, DL-154, tests/sequential-shadow-stage2.spec.ts). computeLCA must never import either (gate asserted by test against the production source); the production LEGACY_INDEPENDENT_PERCENT mode stays bit-identical and must not be labelled CASCADE parity.

  • Parity governance: lh2_ci_driven (alias lh2_ledger) is a HyFlux-only accounting view; computeLCA throws when it is combined with evidence_basis: 'CASCADE_PARITY', and no library preset enables it (see HyFlux Extensions).

  • Offset saturation: in the measured scenario offsets are endogenous and net 2050 saturates at zero in every run, so net emissions carry no independent evidence about the hydrogen pathway; comparisons must use gross, pre-offset emissions and offset demand.

  • Open reconciliation (deliberately unresolved): the wedge-implied effective e-SAF energy over the reported energyQuantity.safEnergy.eFuel is ≈ 561.5/675.3 ≈ 0.831; registered as the e-SAF effective-volume reconciliation gap and locked by test as unresolved — no invented factor may close it. The A→B wedge reconciliation likewise leaves a recorded ≈ +8.1 Mt residual once the endogenous offsets response is included.

The fixtures are measured responses for one scenario, one year and one captured configuration — they anchor the parity adapter and are never treated as universal defaults, and the engine does not claim to reproduce them (synthetic data; no route-level orchestration).

Security note SEC-2026-07-18-01#

During the Phase-0 audit (2026-07-18), live Cloudflare deployment credentials (an API token and account ID) were found pasted inline in a prompt file inside the working tree. The file is untracked: exhaustive scans of the full git history and the rest of the tree found no other exposure, and the value has never been reproduced in any report, log, artefact, URL state or deployed bundle (and is not reproduced here).

Resolution and standing rules:

  • The owner declined token rotation and accepted the residual risk; the token must be treated as permanently exposed.

  • The credential must never enter git history, any artefact, log, report, URL state or deployed bundle; the prompt file stays untracked and is excluded from any commit or archive (scrubbing before any such commit remains recommended).

  • Agents working on this repository never use the credential for any operation.

  • Deploys use environment-variable credentials supplied at deploy time, preview branch only; production promotion requires explicit owner approval each time.

(Incident record: Phase0-Report-2026-07-18.md §3; resolution recorded in DL-002 and the completion report.)