Air Traffic Dataset#

Implementation status: Simplified with declared bases (coverage matrix row Air Traffic Dataset — gross traffic is a global scalar on every track; data parity impossible by construction). The old register claim “mock + global CAGR, no route resolution” is partly stale: traffic_model is a real, URL-shareable input with three tracks (legacy_anchor | cascade_series | route_resolved — DL-022/DL-045), and the opt-in route_resolved track routes CORSIA/CGI eligibility through the routes_CORSIA state-pair filter over the synthetic-representative route set and reports per-class flight counts (eq. 10) plus the traffic conservation identities. Since DL-165 every LCAResult carries provenance.trafficBasis — the DL-139 §6 five facts (root year, root value, growth rate, COVID treatment, recovery assumption) built from the run’s actual inputs, plus a verbatim statement of which dataset the track runs on — so “no route resolution” (or its scope) is said by the engine, not remembered by the UI. Gross remains the same global \(y(t)\) on all tracks (numerically bit-identical, asserted by test). Source: src/engine/routes.ts:SYNTHETIC_ROUTES, src/engine/routes.ts:SYNTHETIC_AIRCRAFT_TYPES, src/engine/traffic-dataset-provenance.ts (DL-165), src/engine/traffic-basis-registry.ts (DL-139 named bases) Test evidence: tests/future-aircraft.spec.ts (dataset consumers), tests/cascade-parity.spec.ts (frozen aggregate baseline), tests/traffic-dataset-provenance.spec.ts (provenance + bit-identity), tests/suite-p-adjudication.spec.ts (named bases)

The synthetic 24-route dataset#

CASCADE resolves traffic per route from a licensed Cirium schedule extract. HyFlux cannot and does not reproduce that dataset; instead it ships a transparent synthetic stand-in, SYNTHETIC_ROUTES, used by the route-level Future Aircraft module (Aircraft — Fleet Renewal & Future Aircraft). Every value is a plausible, first-principles choice — distances are plausible great-circle values for the named city pairs (rounded), flight counts are plausible schedule densities — and none is a schedule-database extract.

The dataset spans four size classes and three distance bands:

Segment

Routes

Distance band

Eligible classes

Regional short-haul

8

400–1,000 km

regional

Single-aisle medium-haul

8

880–4,800 km

singleAisle

Widebody long-haul

4

5,550–11,020 km

widebody

Dedicated freighter

3

4,920–6,970 km

freighter

Combi (pax + freight)

1 (AMS–JFK)

5,850 km

widebody, freighter

Each route record carries: stable id, origin/destination codes, great-circle distance \(d^*\) (km), the set of eligible size classes, annual flights \(n_{in}(rt, 2019)\), and the typical existing-aircraft class. Ten synthetic existing Jet-A aircraft types (40–300 seats; 50.4 t and 68.1 t freighters) complete the dataset. Seat and payload capacities follow the publicly disclosed CASCADE size-class capacities (80 / 180 / 300 seats; 50.4 / 68.1 t freighters — the only public elements of Boeing’s reference aircraft, per constants.ts:SIZE_CLASSES).

Traffic at this layer is flat: \(n_{in}(rt,t) = n_{in}(rt,2019)\) — no traffic growth is applied at route level; growth lives in the aggregate engine (Traffic Growth).

Benchmark panel and governed Cirium snapshots#

A corridor panel provides gCO₂e/ASK benchmarks for major corridors. Two sources exist, both display/benchmark-only:

  • the labelled mock set (src/data/cirium-mock.ts, sampled from IATA WATS 2024 / ICAO figures [IATA, 2024]), and

  • an optional governed live Cirium corridor snapshot (DL-153, src/data/cirium-live.ts): real Cirium airport geometry with engine-derived (Method B) CO₂/ASK. The snapshot file is gitignored (licence gate — retentionConfirmed: false forbids redistribution, DL-133 §11); builds without it fall back to the mock set. The Sky Emissions product is not in the trial licence, so no value may be described as Cirium-observed emissions, and the scope note travels with every traffic-basis declaration (CIRIUM_LIVE_SCOPE_NOTE): a 10-corridor benchmark is never a traffic basis and no engine figure derives from it. Test evidence: tests/cirium-live.spec.ts.

Separately, DL-133 §11 defines a versioned offline route-traffic snapshot schema with coverage validation and provenance (src/data/cirium-snapshot.ts) and a route-level baseline builder that puts HyFlux and CASCADE on the same functional units — corrected flown distance \(d^* + 51\) nmi, no imputation, schedule-vs-actual basis kept explicit (src/engine/route-traffic-baseline.ts, tests/suite-g-cirium-baseline.spec.ts). It ships no Cirium data: every export path refuses row-level data until the licence position is explicitly confirmed.

Known deviations / limitations#

  • Fidelity vs Cirium. CASCADE’s route dataset is proprietary; the synthetic set is order-of-magnitude plausible only. Data parity must never be claimed (Phase-0 report §7/§12).

  • Aggregation. The aggregate engine (cascade.ts) uses a single global baseline (0.92 GtCO₂ in 2019) with no route, operator or aircraft dimension in the production wedges. The aircraft-type × route flight tensor and its folds exist standalone (fleet-tensor.ts, DL-137, tests/suite-n-corsia-tensor.spec.ts) with the existing-aircraft axis honestly lumped; the operator axis exists only in the synthetic CORSIA operator block. Real per-type/operator resolution is licence-blocked (Cirium).

  • Flat route traffic in the wedge path. Route flight counts do not feed growth; growth is modelled in the aggregate engine. On the opt-in route_resolved track, eq. 10 per-class flight counts \(n(rt,t) = n_{2019}(rt)\,y(t)\) and the traffic conservation identities are computed and reported (DL-165) — reporting only, not a route-level gross substitution.

  • Combi handling. The one dual-eligible route (AMS–JFK) is the only place passenger and freighter classes interact; fleet composition beyond class eligibility is not modelled.