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 |
|
Single-aisle medium-haul |
8 |
880–4,800 km |
|
Widebody long-haul |
4 |
5,550–11,020 km |
|
Dedicated freighter |
3 |
4,920–6,970 km |
|
Combi (pax + freight) |
1 (AMS–JFK) |
5,850 km |
|
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]), andan 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: falseforbids 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_resolvedtrack, 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.