Dynamic Heterogeneous Flight Graphs for AAM Security
A graph neural network approach to risk modeling and security analysis for Advanced Air Mobility (AAM) systems using heterogeneous flight data.
Initial Research & Scoping
◈ FoundationalNov 2025 to Jan 2026
Early literature review, data source evaluation, and the first pass at architecture and methodology. Several decisions from this period were revised later; the superseded ones are marked where they appear.
This phase set the starting architecture and research foundation. The update pattern, graph structure, and training labels all changed later, and the entries below track each change.
Data Source Evaluation
Surveyed the available aircraft trajectory and accident/incident datasets. AAM-specific data barely exists outside simulators, so the project works with conventional aircraft surveillance data instead.
Literature Review: Dynamic GNN Patterns
Reviewed 30 papers across Dynamic GNNs, Temporal Knowledge Graphs, and dynamic heterogeneous graphs. Three architectural patterns for temporal graph data kept recurring across them.
Initial Model Architecture & Methodology
First pass at the model architecture: a multi-stage pipeline running from raw data through graph construction and GNN layers to a risk output, plus the methodology calls on decoder, loss function, and GNN design.
Raw Data Schema Definition
Documented the field-level schema for OpenSky state vectors, NTSB event records, and NTSB aircraft records. These definitions stayed stable for the rest of the project.
Synthetic Data Approach
✕ DroppedJan 14 to Feb 16, 2026
Attempted to build training data by matching NTSB accidents to OpenSky trajectories, then generating synthetic collisions for the missing aircraft. The pipeline matched 370 accident-trajectory pairs and generated 20 synthetic collision encounters.
Dropped. Most incidents had only one aircraft's ADS-B data, the synthetic collisions were unrealistic, and no near-miss data could be generated.
Data Quality Requirements
Defined what counts as a "usable" accident-trajectory pair. The trajectory requirements (minimum points, time alignment, etc.) were written up as a spec that the pipeline code enforces.
Airport Proximity Baseline Analysis
Baseline analysis of proximity metrics near busy airports during normal operations. Sampled major US airports to learn what "normal close" looks like, so proximity alone would not be mistaken for risk.
Trajectory Pattern Mining
Tried mining repeatable kinematic patterns from trajectory features, hoping to characterize normal flight behavior and spot anomalies.
Synthetic Pipeline Implementation
Built the end-to-end synthetic data pipeline. Matched 370 NTSB accident-trajectory pairs and tiered them by quality: 212 gold, 38 silver, 22 bronze, 98 rejected.
Incident Classification & Narrowing
Classified the 41 usable incidents into multi-aircraft conflicts (15), runway incursions (11), and wrong surface/runway events (15). Narrowed the list to the 8 airborne multi-aircraft conflicts that have trajectory data.
Canonical Schema & Synthetic Generation Plan
Designed a canonical data schema to standardize real and synthetic data formats. Step 5 tackled synthetic collision generation to fill the missing-aircraft gap: 7 of 8 incidents had only 1 aircraft's trajectory.
Synthetic Pipeline Results: Limitations Found
Generated 20 synthetic collision encounters, but only collisions (y=1), no near-misses. The limitations were fundamental: dead-reckoned positions, rotation distortion, and a perfect 0.0m separation at every collision. This was the inflection point that led to the surrogate pivot.
Final Synthetic Data Attempts: Approach Dropped
Last attempts to salvage the synthetic approach: an updated classification (v2) and a hybrid simulator proposal for near-miss generation. Both were dropped in the end. The simulator was too complex for thesis scope, and the underlying data gap could not be solved synthetically.
The Surrogate Pivot
✓ ValidatedFeb 19 to Mar 6, 2026
A literature review surfaced surrogate safety measures (LoS, well-clear, NMAC, CPA) as well-established alternatives to direct accident labels. An empirical validation on real LA Basin data confirmed these signals are dense enough for training after airport filtering.
Validated. Surrogate signals provide dense, computable training labels while preserving the core architecture.
Literature Review: Surrogate Safety Measures
Deep research report on surrogate safety measures for airspace collision risk modeling. Mapped the aviation safety literature onto the thesis architecture constraints: computable at event time, dense enough for learning, and compatible with an encounter-to-accident interpretation.
The Pivotal Decision: Surrogate Labels
The defining document for the project's current direction. The thesis architecture stays the same, but the training labels change from accidents to surrogate safety measures. Defines severity tiers, published thresholds, and the MVP training plan.
LA Basin Empirical Validation
Empirical audit of surrogate safety signals on 4 hours of LA Basin ADS-B data. Confirmed the surrogates are viable once airport noise is filtered out.
Graph & Pipeline Build-Out
✓ ValidatedMar 12 to Mar 30, 2026
With the surrogate approach validated, work shifted to defining the formal graph schema, evaluating update strategies, and scaling data collection to the top 5 US airports by passenger traffic.
Complete. The graph schema was finalized at the end of March and data collection scaled to national airports; the work then moved into model selection and training.
Graph Update Strategy Evaluation
Evaluated three graph update patterns: event-only, periodic (constant-interval snapshots), and hybrid. This report recommended Pattern 2 (event-driven) as backbone with Pattern 3 (hybrid) as encoder. The late-March meeting overruled it in favor of Pattern 1 (snapshot-based).
Definitive Graph Schema
Settled the graph schema in the graph definition report, finalized at the late-March meeting: a two-layer multigraph with aircraft nodes and directed proximity edges carrying raw separation distance. Pattern 1 (snapshot-based) updates were chosen at that meeting, reversing the Mar-13 recommendation of Pattern 2 + Pattern 3.
Scaled Data Collection: Top 5 US Airports
Scaled the 4-hour LA Basin pilot to a representative national dataset. Defines the study scope: top 5 US airports by passenger traffic (KATL, KDFW, KDEN, KORD, KLAX), with 24-hour ADS-B query windows.
Model Training & the Leakage Saga
✓ ValidatedApr 7 to Jun 15, 2026
Model selection, the move into DyGLib, and the first real training runs. A too-good first AUROC turned into a week of leak hunting, which ended with encounter aggregation as permanent methodology and a defensible canonical result.
DyGFormer selected and validated through the leakage scare. Encounter aggregation, the LA-only scope, and threshold Class B were all locked in as methodology.
Model Selection: DyGFormer + TGN
Scored 16 dynamic-GNN architectures against six criteria. DyGFormer came out as the primary model, with TGN kept as the baseline, both run through the DyGLib benchmark library.
DyGLib Integration
First DyGLib integration. Wrote to_dyglib.py to convert the encounter data, chose per-second edge semantics over per-encounter edges to preserve intra-encounter trajectory, and assigned z-node IDs with pd.factorize on ICAO24.
First DyGFormer Training: 0.9972 AUROC
First DyGFormer training run scored 0.9972 AUROC, which initially read as a success. Two code blockers were fixed along the way, and a sigmoid saturation problem was traced to the edge features and fixed with z-scoring.
Self-Reversal: Within-Encounter Leakage
Reassessed the previous day's result and withdrew it: within-encounter redundancy is itself a leakage channel, so the "genuine learning confirmed" conclusion did not hold. Scaling paused until encounters could be aggregated.
Encounter Aggregation
Aggregated per-second edges into one row per encounter (gap_threshold_s=60). EdgeBank collapsed to 0.516 while DyGFormer held 0.877 ± 0.003, which is the real signal. Encounter aggregation became permanent methodology.
Five-Airport Scale-Up
Scaled up to all five airports (OpenSky_5ap_enc, 145,709 encounters). The historical-negative score collapsed from 0.944 to 0.620, hypothesized at the time as cross-airport pollution.
Event Definition Lock-Down
Locked the event definition: an event is an observed encounter, an exposure opportunity. Surrogates are features, not labels, and severity-tier labeling was explicitly rejected. LA rebuilt at 24 hours (44,566 encounters).
Seven-Day Canonical LA Dataset
Extended LA from 1 day to 7 consecutive days (2024-06-15 to 2024-06-21, 254,243 encounters). Adopted the canonical headline result of 0.8219 ± 0.0036, disproved the cross-airport-pollution hypothesis, and decided to scope the thesis to LA only.
Class B Dataset, Built Twice in One Day
Built the Class B Only dataset twice in one day. v1 kept all 161,029 terminal encounters (0.8227), which turned out to be a framing error. v2 added --require-safety-flag any, leaving 11,804 encounters at 0.7576, the cost of asking the harder question.
Repository Cleanup and Master Docs
Cleanup day. Dropped methods were archived under _archives/, the _final script pair was promoted, and three master context docs were written: PROJECT_TIMELINE, PROJECT_DICTIONARY, and AAM_Data_Pipeline_Summary.
Sparsity Audit and Threshold Classes
A sparsity and frequency audit turned up the 12:00 to 12:00 UTC file-window convention in the OpenSky data. Defined threshold classes A, B, and C by reclassifying existing data offline, roughly 1000x faster than re-querying OpenSky.
Threshold Sweep and the 100-Epoch Correction
Trained all three threshold classes. The 10-epoch results (0.7959 / 0.7763 / 0.6440) suggested a small-data ceiling for Class C, but the 100-epoch follow-up corrected that reading: 0.8508 / 0.8281 / 0.7514. The instability was under-training, and Class B was locked as the recommended operational filter.
Node Identity Audit
Answered Dr. Noruz's question on node identity: one persistent node per ICAO24, so aircraft-as-airframe is confirmed. The flight-instance alternative was framed as a rebuild-scale decision.
Forecast-Head Extension
◌ In ProgressJul 8, 2026 to present
The active phase: extending DyGFormer from event-conditional link scoring to state-conditional event forecasting. The design direction is agreed with the advisor and a head design is proposed, awaiting approval; implementation has not started.
In progress. The forecast-head design is proposed and awaiting advisor approval; no code has been written yet.
Advisor Meeting: Forecast-Head Phase Opens
The advisor meeting opened the forecast-head phase: extend DyGFormer from event-conditional link scoring to a state-conditional forecast, P(surrogate-flag event in (t, t+δ] | history < t). Options ranked B (frozen encoder + MLP probe), then C (δ-conditioned sequence head, the novelty claim), then A (fine-tune).
Forecast-Head Design Proposed
The forecast-head design proposal is registered as the phase's reference spec, awaiting advisor approval, with the head option not yet settled. The proposal conditions the head on δ and evaluates several horizons, from tens of seconds to a few minutes, with history fixed at the DyGLib default of the last 32 encounters. No code has been written.