Mapping FAA Flow Management Data and Services (FMDS) capabilities against PERTI's existing functionality
The Flow Management Data and Services (FMDS) program is the FAA's effort to replace the legacy Traffic Flow Management System (TFMS), a suite of automation tools developed since the late 1980s that supports traffic flow management across the National Airspace System (NAS). TFMS manages over 45,000 flights daily and is used at 114+ facilities (21 ARTCCs, 35 TRACONs, 17 ATCTs, the ATCSCC, and others).
FMDS was announced as a Challenge-Based Acquisition (ChBA) in September 2025, with Initial Operating Capability (IOC) targeted for Q1 FY2029 (December 2028). The program defines six core functional areas: Manage Data (F.1), Assess NAS State (F.2), Conduct Traffic Flow Management (F.3), Conduct Post-Event Analysis (F.4), Manage Display (F.5), and Maintain Operations (F.6). Key documents include the final Program Requirements Document (fPRD, 160 pages), Concept of Operations (ConOps, 91 pages), Functional Analysis Document (FAD, 186 pages), and Human Interface Guidelines (HIG, 49 pages).
PERTI (Plan, Execute, Review, Train, Improve) is the VATSIM virtual ATC network's flow management platform, operated by vATCSCC (Virtual Air Traffic Control System Command Center). Built on PHP 8.2, Azure SQL, PostgreSQL/PostGIS, and MySQL, PERTI provides real-time flight data management, TMI modeling and implementation, demand/capacity analysis, spatial boundary processing, compliance monitoring, and multi-facility coordination -- all adapted for the VATSIM virtual ATC environment.
PERTI was designed independently to solve many of the same problems the FAA faces: balancing demand with capacity, coordinating TMIs across facilities, and providing integrated situational awareness. This document systematically maps FMDS's functional requirements against PERTI's existing capabilities to:
1. Identify where PERTI already provides equivalent functionality
2. Highlight gaps where FMDS capabilities could be adapted
3. Document areas where PERTI exceeds the FMDS baseline
4. Establish a roadmap for bringing FMDS concepts into PERTI
This comparison was conducted through:
1. Document-by-document review of all 14 FMDS acquisition documents (fPRD, ConOps, FAD, HIG, SOO, Master Site List, Method of Evaluation, and supporting attachments)
2. Codebase audit of the PERTI repository, examining PHP API endpoints, Python analysis scripts, JavaScript frontend modules, SQL schemas, and daemon processes
3. Functional mapping against the FMDS hierarchy (F.0 through F.6 and all sub-functions) using FMDS requirement IDs (FMDS_fPRD_XXXX) as reference points
4. Coverage classification using the following scale:
| Rating | Definition |
| Full | PERTI provides equivalent or better functionality |
| Partial | PERTI provides some aspects but lacks others |
| None | PERTI does not address this requirement |
| N/A | Not applicable to the VATSIM environment |
Ingests and processes external data sources including flight, weather, aeronautical, CDM, and space data to create a common model of NAS operations.
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| F.1.1.1 Ingest Flight Data (fPRD_0100) -- Acquire NAS and international flight data (plans, surveillance, surface events) | PERTI ingests from VATSIM data feeds every 15 seconds via scripts/vatsim_adl_daemon.php. Processes pilot positions, flight plans, and surface events. Data staged in adl_staging_pilots / adl_staging_prefiles. | Full | VATSIM datafeed replaces ERAM/STARS/CSS-FD. SimBrief integration provides enhanced flight plan data. |
| F.1.1.2 Ingest Schedule Data (fPRD_0104) -- Acquire OAG schedule data | No direct OAG equivalent. PERTI uses VATUSA/VATCAN/VATSIM event data via scripts/event_sync_daemon.php and SimBrief-filed plans. Statistical simulation uses sim_ref_ tables for pattern modeling. | Partial | Virtual airlines don't have OAG equivalents; event-based scheduling partially substitutes. |
| F.1.1.3 Ingest Weather Data (fPRD_0102) -- METARs, TAFs, radar, satellite, lightning, TCFs, wind, echo tops, WAF grid | PERTI ingests real-world METARs/TAFs from aviationweather.gov. Radar data displayed via assets/js/weather_radar.js. Weather impact analysis via assets/js/weather_impact.js and assets/js/weather_hazards.js. No TCF/WAF grid processing. | Partial | Real-world weather is used as a proxy for VATSIM conditions. No convective forecast or WAF grid equivalent. |
| F.1.1.4 Ingest Adaptation Data (fPRD_0103) -- NASR/NFDC, ERAM boundaries, international ANSPs | PERTI ingests NASR data via nasr_navdata_updater.py and AIRAC updates via airac_full_update.py. Boundary data in PostGIS (artcc_boundaries, tracon_boundaries, sector_boundaries). International FIR data in fir_boundaries. | Full | Uses same FAA NASR/CIFP source data. PostGIS provides equivalent spatial capability. |
| F.1.1.5 Ingest CDM Data (fPRD_0105) -- Flight data from CDM members (OOOI, TOS, substitutions) | PERTI receives OOOI-equivalent data from pilot clients (vPilot, xPilot plugins in integrations/pilot-clients/). SimBrief provides pre-departure plan data. vATIS provides ATIS data. No TOS/substitution protocol. | Partial | No formal CDM member framework. Pilot client integrations provide a subset of CDM functionality. |
| F.1.1.6 Ingest Space Data (fPRD_0662) -- Space launch/reentry information | N/A | N/A | No space operations in VATSIM airspace. |
| F.1.1.7 Ingest Sector Configuration Data (fPRD_0663) -- From SFDPS-ERADP | Sector configurations managed via splits_configs / splits_positions tables and assets/js/splits.js. Manual configuration rather than automated ingest. | Partial | Manual rather than automated, but functional equivalent exists. |
| F.1.1.8 Ingest Departure Sequencing Data (fPRD_0664) -- From TFDM | No TFDM equivalent. Departure sequencing data derived from ADL position tracking and OOOI events. | None | Future opportunity: integrations/vfds/ (Virtual FDS) could provide this. |
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| F.1.2.1 Process Flight Data -- Validate, parse, match, save | Full processing pipeline: validation in daemon, route parsing via adl/php/parse_queue_gis_daemon.php with PostGIS, flight matching by callsign+CID, normalized storage in 8-table architecture (adl_flight_core, adl_flight_plan, adl_flight_position, adl_flight_times, adl_flight_tmi, adl_flight_aircraft, adl_flight_trajectory, adl_flight_waypoints). | Full | 8-table normalized architecture is more modern than TFMS's monolithic design. |
| F.1.2.2 Process Schedule Data -- Validate and parse | Event schedule data processed via scripts/event_sync_daemon.php. Flight plan schedule data parsed during ingestion. | Partial | No OAG-equivalent schedule processing. |
| F.1.2.3 Process Weather Data -- Validate | Weather data validated and processed for display. api/data/weather.php and api/data/weather_impacts.php handle weather data processing. | Partial | Simpler validation than FMDS's CSS-Wx processing. |
| F.1.2.4 Process Adaptation Data -- Validate, filter, merge, alias, prioritize | NASR updater handles validation and merging. nav_fixes, nav_procedures, airways, airway_segments tables in both VATSIM_REF and VATSIM_GIS. Airway deduplication handled in updater. | Full | Covers validation, filtering, merging, and aliasing. |
| F.1.2.5 Process CDM Data -- Validate, parse, generate responses | Limited CDM processing. SimBrief data parsed; pilot client data processed. No formal substitution/TOS response generation. | Partial | Could be expanded for virtual airline CDM-like participation. |
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| F.1.3.1 Derive Modeled Trajectories -- Lateral/vertical/speed profiles, wind-adjusted speed, restriction effects, trajectory times, event list, conformance evaluation, ATC maneuver identification | PERTI generates trajectory predictions via adl/php/waypoint_eta_daemon.php using great-circle calculations, wind adjustment, and BADA/OpenAP performance data (aircraft_performance_profiles). Boundary crossings predicted via adl/php/crossing_gis_daemon.php. Route geometry stored as route_geometry (geography) in adl_flight_plan. No formal ATC maneuver identification (8 maneuver types). | Partial | PERTI has trajectory prediction but lacks FMDS's full 4D conformance evaluation and ATC maneuver classification (Hold, Coast, Vector, Ascend, Descend, Fly-At-New-Cruise, Direct-To-Fix, Wander). |
| F.1.3.2 Derive Weather Data -- Gridded and textual weather products | Weather data derived for display but not for trajectory modeling (no WAF grid processing). | Partial | Weather display works; weather-trajectory integration is limited. |
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| F.1.4.1-F.1.4.15 Provide Data -- Flight, demand, capacity, adaptation, weather, notifications, route availability, TMI, CDM, NAS event log, NAS status, system status, space, analytics, FxA data | PERTI provides data via comprehensive REST APIs (api/adl/, api/tmi/, api/data/, api/stats/), SWIM API (api/swim/v1/), WebSocket (api/swim/v1/ws/WebSocketServer.php), and Discord integration. SWIM API keys managed via swim_api_keys. | Full | PERTI's SWIM API and WebSocket provide equivalent data provision. Route availability (RAPT) is a gap. |
Evaluates the current and projected state of the NAS and enables Traffic Managers to identify near- and long-term problems.
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| F.2.1.1 Specify Default Capacities (fPRD_0673-0674, 1066) -- Airport, sector, fix default capacities from adaptation | Airport capacities: config_data table (VMS/LVMC/IMC AAR/ADR), airport_config / airport_config_rate. Sector capacity: sector_boundaries with altitude floors/ceilings. Fix capacity: demand_monitors with threshold definitions. | Full | Comprehensive default capacity system with weather-conditional rates. |
| F.2.1.2 Specify User-Defined Capacities (fPRD_0174-0175, 1067) -- Airport, sector, fix capacities from Traffic Manager input | manual_rate_override table for AAR/ADR overrides. p_configs for plan-specific rates. api/demand/override.php endpoint. Event-specific rates via event-aar.php. | Full | Supports per-event and ad-hoc rate overrides. |
| F.2.1.3 Manage Departure Fix Usage (fPRD_2005-2007) -- Fix rate, combining, availability | No departure fix usage management. PERTI monitors fix demand but doesn't manage fix rates or availability. | None | FMDS IDRP capability; future adaptation opportunity. |
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| F.2.2.1 Predict Deterministic Demand (fPRD_0675-0676, 1068-1069, 2009) -- Airport, sector, fix, FxA, departure route demand | Airport demand: api/demand/airport.php. Fix demand: api/adl/demand/fix.php with time-window filtering. Segment demand: api/adl/demand/segment.php. Airway demand: api/adl/demand/airway.php. Batch demand: api/adl/demand/batch.php. Monitors: api/adl/demand/monitors.php. Visualization: assets/js/demand.js with Chart.js. | Full | Comprehensive demand prediction across all NAS resource types. |
| F.2.2.2 Compute Smoothing Coefficients (fPRD_1082) -- Historical error distributions for airports, sectors, fixes | Not implemented. PERTI uses deterministic demand counts without probabilistic smoothing. | None | IDP capability; requires historical error analysis infrastructure. |
| F.2.2.3 Predict Probabilistic Demand (fPRD_1070-1072) -- Apply smoothing coefficients to deterministic demand | Not implemented. | None | Depends on F.2.2.2. Key FMDS enhancement over TFMS. |
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| Compare Demand and Capacity (fPRD_0161) -- Compare predicted demand to capacity thresholds | Demand charts (assets/js/demand.js) display demand vs. AAR/ADR capacity lines. DCI-equivalent alerts when demand exceeds capacity. Monitor alerts via demand_monitors. | Full | Visual comparison with threshold alerting. |
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| F.2.4.1-F.2.4.3 Route Blockage/Timeline (fPRD_0166-0167, 0879, 0877, 0876) -- WAF-grid-based route blockage scores, route timelines, PIG timers, trend indicators | Not implemented. No RAPT equivalent. PERTI displays weather radar overlaid on routes (assets/js/route-maplibre.js + assets/js/weather_radar.js) but does not compute route blockage scores. | None | Significant FMDS capability gap. Would require weather data integration with route geometry. |
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| F.2.5.1 Calculate Real-Time Metrics (fPRD_0171) | api/stats/realtime.php, flight_phase_snapshot periodic captures, flight_stats_hourly. | Full | |
| F.2.5.2 Generate Real-Time Reports (fPRD_0899, 0893, 0888, 0173) | Traffic management reports, flight list reports, monitor alert reports available via various API endpoints. Custom reports not as flexible as FMDS envisions. | Partial | Lacks FMDS's COTS-based custom report builder. |
| F.2.5.3 Enable Real-Time Analysis (fPRD_0140, 0129) -- TMI and flight history compilation | TMI event log: tmi_events table. Flight changelog: adl_flight_changelog. Full attribute history tracked. | Full | |
| F.2.5.4 Query Adaptation Data (fPRD_2008) -- Playbook, CDR, NFDC queries | CDR search: route_cdr table, assets/js/playbook-cdr-search.js. Playbook routes: route_playbook table. Fix lookup: api/data/fixes.php. Airspace elements: api/data/airspace_elements/. | Full |
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| F.2.6.1 Create Notifications (fPRD_0933, 0931, 0932, 0935-0937) -- Advisories, DCI, NAS events, general messages, slot modification, TMI parameter notifications | Advisories: tmi_advisories table, api/tmi/advisories.php. TMI publishing: assets/js/tmi-publish.js, Discord integration via load/discord/MultiDiscordAPI.php. DCI-equivalent demand alerts. NAS event notifications via Discord channels. | Full | Discord-based notification exceeds FMDS's internal-only notification system. |
| F.2.6.2-F.2.6.3 Issue and Acknowledge (fPRD_0195, 0164, 1073, 1074) | Multi-org Discord posting with reaction-based acknowledgment (discord-bot/bot.js). Coordination threads with facility approval tracking (tmi_proposals, tmi_proposal_facilities). | Full | Discord reactions provide acknowledgment equivalent. |
Provides tools to maintain the flow of air traffic by defining FxAs, conducting TMIs, and logging NAS events.
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| Define FxA (fPRD_1039) -- Crossing lines, circles, polygons with altitude/aircraft type attributes | No formal FxA definition tool. PERTI uses fix-based and segment-based demand monitoring (demand_monitors) and TMI compliance flow cones (Python analyzer.py + JS tmi_compliance.js). Spatial polygons exist for boundaries but not user-defined FxAs. | Partial | Monitor-based approach covers core use case. User-defined polygon FxAs would be an enhancement. |
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| F.3.2.1.1 Define Strategic Reroute (fPRD_0917) | Full reroute management: tmi_reroutes, tmi_reroute_routes, api/mgt/tmi/reroutes/. ICAO equipment eligibility not implemented. | Partial | Reroute definition is full; equipment-based eligibility filtering is missing. |
| F.3.2.1.2 Define Tactical Reroute (fPRD_1038, 1075, 1076) | Route amendments possible via manual entry. No automated route option generation or constraint-avoidance routing. | Partial | Manual rerouting works; automated alternative generation (IDRP) is absent. |
| F.3.2.1.3 Define GS (fPRD_0918) | Full GS lifecycle: api/tmi/gs/create.php, model.php, activate.php, extend.php, purge.php. Parameters stored in tmi_programs. | Full | Complete GS implementation including modeling and flight impact analysis. |
| F.3.2.1.4 Define GDP (fPRD_0919) | Full GDP definition: api/tmi/gdp_preview.php, gdp_apply.php, gdp_simulate.php. Parameters in tmi_programs, slots in tmi_slots. | Full | |
| F.3.2.1.5 Define AFP (fPRD_0920) | Not implemented as a distinct program type. Could be modeled as a GDP with FxA scope. | None | AFP requires FxA-scoped demand, which PERTI lacks. |
| F.3.2.1.6 Define CTOP (fPRD_0922) | Not implemented. CTOP requires Trajectory Options Set (TOS) processing. | None | Complex TMI type requiring CDM/TOS infrastructure. |
| F.3.2.1.7 Define COMP (fPRD_0921) -- Compression | GDP compression flag exists: compression_enabled in tmi_programs. Adaptive compression logic not fully implemented. | Partial | Schema supports it; algorithm needs implementation. |
| F.3.2.1.8 Define BLKT (fPRD_0722) -- Blanket | Not implemented. | None | Lower-priority TMI type. |
| F.3.2.1.9 Define TMI Interactions (fPRD_0721) | Multi-TMI interaction modeling not implemented. Programs operate independently. | None | Key FMDS ITM capability. |
| F.3.2.1.10 Define MIT (fPRD_1057) | MIT compliance analysis: scripts/tmi_compliance/core/analyzer.py performs haversine distance calculations, traffic sector computation, flow cone analysis. TMI entries: tmi_entries with restriction_value and restriction_unit. | Full | MIT monitoring and compliance are well-implemented. |
| F.3.2.1.11 Define MINIT (fPRD_1059) | MINIT compliance in analyzer.py with time-based spacing analysis. | Full | |
| F.3.2.1.12 Define STOP (fPRD_1058) | STOP restrictions via tmi_entries with protocol_type = 'STOP'. | Full | |
| F.3.2.1.13 Define APREQ (fPRD_1060) | APREQ entries can be created in tmi_entries. No automated approval workflow beyond Discord coordination. | Partial | Definition exists; automated ERAM-like approval flow is absent. |
| F.3.2.1.14 Define Time-Based Management (fPRD_1065) | No TBFM equivalent. | None | TBFM is a separate system; PERTI doesn't replicate metering. |
| F.3.2.1.15 Define Departure Sequencing (fPRD_2170) | Not implemented. integrations/vfds/ provides stub for future development. | None | TFDM-dependent capability. |
| F.3.2.1.16 Define TXT (fPRD_0725) | Text restrictions via tmi_entries with entry_type = 'TXT'. | Full | |
| F.3.2.1.17 Define ALT (fPRD_0724) | ALT restrictions via tmi_entries. | Full | |
| F.3.2.1.18 Define SPD (fPRD_0723) | SPD restrictions via tmi_entries. | Full | |
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| F.3.2.2 Validate TMI Parameters (fPRD_0187) | Validation in API endpoints (common.php helpers, parameter checks in each TMI API). | Full | |
| F.3.2.3 Model TMIs (fPRD_0727-0750) -- Compute assignments, impact metrics | GDP modeling: gdp_preview.php (RBS slot assignment preview), gdp_simulate.php. GS modeling: gs/model.php (affected flights, controlled/exempt/airborne counts). Reroute impact: compliance rate tracking in tmi_reroutes. No AFP/CTOP/multi-TMI modeling. | Partial | GDP and GS modeling are strong. AFP, CTOP, and multi-TMI interaction modeling are gaps. |
| F.3.2.4 Coordinate Restrictions (fPRD_0906-0914) -- Automated inter-facility coordination for MIT, MINIT, STOP, APREQ, TBM, DSP, TXT, ALT, SPD | Discord-based coordination: tmi_proposals with per-facility approval tracking, tmi_proposal_facilities, tmi_proposal_reactions. api/mgt/tmi/coordinate.php handles coordination workflow. Discord bot (discord-bot/bot.js) processes reaction-based approvals. | Full | Discord-based coordination is arguably more accessible than FMDS's internal automation. |
| F.3.2.5 Implement TMIs (fPRD_0752, 0185, 0939) -- Assign EDCTs, route assignments, departure windows | GDP EDCT assignment: gdp_apply.php applies sandbox to live. GS hold: gs/activate.php. Reroute assignment: api/mgt/tmi/reroutes/activate.php. Updates adl_flight_tmi with control records. | Full | |
| F.3.2.6 Monitor TMIs (fPRD_0764-0771) -- Route conformance, EDCT compliance | Reroute compliance: tmi_reroute_compliance_log, compliance rate in tmi_reroutes. EDCT compliance: tmi_flight_control.compliance_status, compliance_delta_min. TMI compliance analysis: scripts/tmi_compliance/core/analyzer.py + assets/js/tmi_compliance.js. | Full | Comprehensive compliance monitoring with visual analysis. |
| F.3.2.7 Cancel TMIs (fPRD_0740) | GDP purge: api/tmi/gdp_purge.php. GS purge: api/tmi/gs/purge.php. TMI cancellation: api/mgt/tmi/cancel.php. | Full | |
| F.3.2.8 Maintain TMIs -- Pop-ups, compression, slot modifications, EDCT updates | Pop-up processing: tmi_popup_queue, automatic detection of new flights entering program scope. Compression: schema support (compression_enabled), partial algorithm. Slot modifications: limited (no CDM substitution protocol). EDCT updates: adl_edct_overrides for manual changes. | Partial | Pop-up detection works. CDM-style substitutions and adaptive compression algorithms need work. |
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| Log NAS Events (fPRD_0774-0786, 1025) -- Deicing, outages, delays, SWAP, PIREPs, shift summaries, DCI resolutions, SAA, runways, TMI implementations, critiques, misc events | TMI event logging: tmi_events table with comprehensive event types. NTML-equivalent: api/tmi/advisories.php for advisory publishing. DCC advisory system: dcc_advisories. Runway config logging: airport_config_history. SUA tracking: sua_activations. No formal shift summary log. | Partial | TMI and advisory logging are strong. Formal NTML-style shift logging and some event types (deicing, PIREPs, SWAP) are gaps. |
Employs historical data to improve algorithms, enable replay, and generate reports of past data.
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| F.4.1 Analyze Historical Data (fPRD_1078-1080) -- Average ground times, CDM quality assessment, error distributions | Airport taxi reference: airport_taxi_reference table with 3,628 airports, using 90-day rolling P5-P15 averages. sp_RefreshAirportTaxiReference stored procedure. GS delay analysis using taxi reference. No CDM quality assessment or error distribution computation. | Partial | Taxi time analysis is well-developed. Error distributions (for IDP) are not computed. |
| F.4.2 Replay TFM Data (fPRD_0200-0202) -- Request, retrieve, control replay of historical data | review.php provides post-event review interface. api/data/review/ endpoints. Flight trajectory archive: adl_trajectory_archive + adl_trajectory_compressed. No interactive replay with TMI trial modeling. | Partial | Data archival supports review but lacks FMDS's full replay capability with TMI re-modeling. |
| F.4.3 Retrieve Archived TFM Data (fPRD_0203) | adl_flight_archive for completed flights. Trajectory data in tiered storage (adl_flight_trajectory → adl_trajectory_archive → adl_trajectory_compressed). Blob storage archival via scripts/adl_archive_daemon.php. | Full | Tiered archival with blob storage is well-implemented. |
| F.4.4 Generate Archived Data Reports (fPRD_0797) | Statistics tables: flight_stats_daily, flight_stats_hourly, flight_stats_airport, flight_stats_artcc, flight_stats_carrier, flight_stats_citypair, flight_stats_tmi. API: api/stats/. | Full | Comprehensive statistical reporting. |
Manages the user interface display and configuration settings.
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| F.5.1 Display Data (fPRD_0206-0218, 0221, 0812, 0815, 0915, 0941-0944, 1077) -- Flight, demand, capacity, adaptation, weather, notifications, route availability, reports, FxAs, TMIs, NAS event log, NAS status, space, replay, archived reports | Flight data: api/adl/current.php, api/adl/flight.php, MapLibre visualization (assets/js/route-maplibre.js). Demand: assets/js/demand.js with Chart.js bar charts. Capacity: AAR/ADR in demand charts. Adaptation: airspace elements viewer (airspace-elements.php). Weather: radar + impact + hazards overlays. Notifications: advisory display, TMI publish. TMI: assets/js/tmi-active-display.js, GDT (gdt.php). NAS status: status.php. No route availability display, space data, or interactive replay. | Partial | Most display requirements met. Gaps: route availability (RAPT), space data, integrated replay, time-slider for past/present/predicted views. |
| F.5.2 Capture UI Activity (fPRD_0223) -- Screen recording for post-event analysis | Not implemented. | None | Low priority for VATSIM. |
| F.5.3 Maintain User Display Settings (fPRD_0222, 0259, 0261, 0916) -- Save/recall/delete config | Per-page settings stored in browser localStorage. No server-side preference persistence across workstations. | Partial | Browser-local only; FMDS requires server-side Pref Sets portable across devices. |
Records and archives operational data, maintains adaptation, monitors the system, manages access, and supports testing/training.
| FMDS Requirement | PERTI Capability | Coverage | Notes |
| F.6.1 Record Data (fPRD_0224-0232, 0823-0831, 0924-0948) -- Record all data types | Comprehensive recording: flight data in 8-table schema, TMI data in tmi_events, demand in stats tables, weather data cached, adaptation versioned, UI activity not recorded. | Full | All operationally relevant data types are recorded. |
| F.6.2 Archive Data (fPRD_0233-0241, 0838-0846, 0927, 0950-0952, 2160) -- Long-term archival | scripts/archival_daemon.php handles trajectory tiering. scripts/adl_archive_daemon.php daily blob archival. flight_stats_retention_tiers manages retention policies. | Full | Tiered archival with configurable retention. |
| F.6.3 Maintain Adaptation (fPRD_0242-0247, 2061-2064, 0852) -- Access, diff, conflict detection, modify, test, deploy | nasr_navdata_updater.py for NASR updates. airac_full_update.py for AIRAC cycles. ref_sync_log tracks sync status. No formal diff/conflict detection or staged deployment workflow. | Partial | Automated updates work; lacks FMDS's formal dev-vs-ops dataset management. |
| F.6.4 Monitor & Control (fPRD_0248-0254, 2163) -- System monitoring, diagnostics, recovery | scripts/monitoring_daemon.php collects system metrics. status.php system status page. healthcheck.php for Azure. Daemon health monitoring in startup scripts. | Partial | Basic monitoring exists; lacks FMDS's comprehensive M&C with component-level control. |
| F.6.5 Analyze System Performance (fPRD_0255-0258) -- Diagnostics, utilization, response time reports | adl_refresh_perf tracks ingestion performance. api/adl/diagnose.php diagnostic endpoints. No formal response time or utilization reporting. | Partial | |
| F.6.6 Identify Access Management (fPRD_0625, 0940-0949, 1018-1031, 2068) -- RBAC, authentication | VATSIM OAuth (login/), session-based auth (sessions/handler.php). Admin users in admin_users. SWIM API key management (swim_api_keys). Discord bot uses API key auth. No formal RBAC system with role creation/assignment. | Partial | Authentication works; formal RBAC (create/assign/delete roles) is limited. |
| F.6.7 Simulate Scenarios (fPRD_2019-2025, 0885-0892) -- Define, maintain, process, control scenarios with closed-loop simulation | simulator.php and api/simulator/ provide basic ATC simulation. Statistical simulation reference tables (sim_ref_). No full closed-loop TFM scenario simulation with replay. | Partial | Basic simulation exists; FMDS's full scenario simulation with scripted training is significantly more comprehensive. |
| F.6.8 Support Testing and Training (fPRD_0894-0896, 2026-2029) -- Message injection, open/closed loop testing, scripted training, store/review scenarios | Limited testing support. No message injection, scripted training scenarios, or student run-through recording. | None | FMDS's training system is far more comprehensive than anything PERTI provides. |
| Functional Area | Full | Partial | None | N/A | Total | Coverage % |
| F.1 Manage Data | 7 | 8 | 1 | 1 | 17 | 65% |
| F.2 Assess NAS State | 8 | 2 | 3 | 0 | 13 | 69% |
| F.3 Conduct TFM | 14 | 7 | 6 | 0 | 27 | 65% |
| F.4 Post-Event Analysis | 2 | 2 | 0 | 0 | 4 | 75% |
| F.5 Manage Display | 0 | 2 | 1 | 0 | 3 | 33% |
| F.6 Maintain Operations | 2 | 5 | 1 | 0 | 8 | 56% |
| TOTAL | 33 | 26 | 12 | 1 | 72 | 64% |
The strongest areas are TMI implementation (GDP, GS, restrictions), data management, demand prediction, and notification/coordination. The weakest areas are advanced display features, route availability prediction, probabilistic demand, and training/testing infrastructure.
PERTI provides several capabilities that FMDS does not describe or that go beyond FMDS's scope:
FMDS describes automated coordination methods (fPRD_0906-0914) but within its internal automation system. PERTI's Discord-based coordination system (load/discord/MultiDiscordAPI.php, discord-bot/bot.js) provides:
tmi_proposal_reactionsWhile FMDS requires TMI monitoring (F.3.2.6), PERTI's compliance analysis goes deeper:
scripts/tmi_compliance/core/analyzer.py): Haversine-based spacing calculations, traffic sector computation, flow cone analysis with bearing clusteringassets/js/tmi_compliance.js, ~280KB): Approach bearing → 45-degree clustering → per-stream distance-bin centerline → Gaussian smoothing → monotonic convergence → buffer polygon visualizationFMDS references geographic boundaries and airspace, but PERTI implements sophisticated spatial processing:
adl/php/boundary_gis_daemon.php): Every 15 seconds, determines which ARTCC/TRACON/sector each flight occupies using PostGIS ST_Containsadl/php/crossing_gis_daemon.php): Predicts when flights will enter/exit boundaries with time estimatesadl/php/parse_queue_gis_daemon.php): Converts route strings to PostGIS geography with waypoint resolutionadl_boundary_grid): Fast lat/lon → boundary mapping without full polygon intersectionPERTI's airport taxi reference (airport_taxi_reference, 3,628 airports) uses a methodology inspired by the FAA ASPM program:
PERTI's SWIM API (api/swim/v1/) provides FIXM-aligned data access that goes beyond FMDS's data provision requirements:
api/swim/v1/ws/WebSocketServer.php) for real-time event streamingSubscriptionManager.phpswim_flights denormalized viewFMDS serves institutional users (FAA facilities, CDM airlines). PERTI extends to individual participants:
PERTI's 8-table normalized flight architecture (adl_flight_core, adl_flight_plan, adl_flight_position, adl_flight_times, adl_flight_tmi, adl_flight_aircraft, adl_flight_trajectory, adl_flight_waypoints) is more modern than TFMS's legacy monolithic design. This architecture enables:
adl_flight_changelog with field-level granularitySeveral factors make the VATSIM environment materially different from real-world NAS operations, affecting how FMDS concepts can be adapted:
| Factor | Real-World NAS | VATSIM |
| Daily flights | ~45,000 | ~2,000-5,000 (varies greatly) |
| Schedule predictability | High (OAG data, airline schedules) | Low (individual pilot decisions) |
| Event-driven peaks | Weather/holiday | Organized events, time-of-day patterns |
| CDM participation | 40+ airlines | None (individual pilots) |
| Flight plan reliability | Moderate (amendments tracked) | Lower (SimBrief plans may not match actual) |
| Factor | FMDS | PERTI |
| Architecture | Cloud-native IaaS, microservices | Azure App Service (Linux), PHP monolith with daemon pattern |
| Sites | 114 physical facilities | 1 web application, N Discord organizations |
| Availability requirement | 99.99% | Best-effort (free-tier constraints) |
| Users | 600 concurrent (peak) | ~50-200 concurrent (peak events) |
| Data sources | ERAM, STARS, TFDM, TBFM, CSS-FD, CSS-Wx | VATSIM data feed, aviationweather.gov |
| Authentication | PIV/CAC + RBAC | VATSIM OAuth + session |
| Factor | FMDS | PERTI |
| TMI authority | Legally binding (EDCTs enforceable) | Advisory (compliance is voluntary) |
| Coordination | Formal inter-facility procedures | Discord-based consensus |
| Training | Formal certification requirements | Community-driven training |
| Post-event accountability | FAA oversight, congressional scrutiny | Internal improvement cycle |
VATSIM does not simulate weather effects on aircraft performance. Weather on VATSIM is informational only -- it affects runway selection and ATIS but not aircraft trajectories or separation requirements. This means:
Based on the gap analysis and VATSIM-specific considerations, the following adaptations are prioritized by impact and feasibility:
| Initiative | FMDS Reference | PERTI Impact | Effort |
| Airspace Flow Program (AFP) | F.3.2.1.5 | Enables FxA-scoped demand programs beyond airport GDPs | Medium -- extend existing GDP infrastructure with FxA scope |
| Integrated Situation Display | F.5.1, HIG | Consolidate demand, TMI, weather, and flight data into a single view | High -- significant frontend redesign but high operational value |
| Formal NTML/NAS Event Log | F.3.3 | Structured logging of shift events, TMI critiques, operational decisions | Low -- mostly database schema and simple UI |
| Server-side Display Preferences | F.5.3 | Allow users to save/recall configurations across devices | Low -- database table + API endpoint |
| Initiative | FMDS Reference | PERTI Impact | Effort |
| Adaptive Compression | F.3.2.8.2 | Automatically optimize GDP slots as tactical situation changes | Medium -- algorithm development against existing slot infrastructure |
| TMI Interaction Modeling | F.3.2.1.9 | Model combined effects of multiple overlapping TMIs | High -- requires cross-program impact computation |
| Post-Event Replay | F.4.2 | Replay historical data with TMI trial modeling capability | High -- requires temporal data access layer and replay UI |
| Route Availability Visualization | F.2.4 | Display weather-based route status timelines (simplified RAPT) | Medium -- overlay weather radar on route corridors with status scoring |
| Initiative | FMDS Reference | PERTI Impact | Effort |
| Probabilistic Demand (IDP) | F.2.2.2-F.2.2.3 | Improve demand prediction accuracy using historical error analysis | High -- requires statistical analysis infrastructure and historical data accumulation |
| CTOP Implementation | F.3.2.1.6 | Enable multi-element programs with trajectory option sets | Very High -- requires TOS protocol, multi-FxA scope, complex assignment algorithms |
| Departure Fix Management | F.2.1.3 | Manage departure fix rates, combining, and availability | Medium -- extends existing demand monitoring |
| Training Scenario System | F.6.7-F.6.8 | Scripted training with closed-loop simulation | Very High -- requires full simulation environment with scenario management |
| Initiative | FMDS Reference | PERTI Impact | Effort |
| 4D Conformance Evaluation | F.1.3.1.2 | Detect and classify ATC maneuvers from trajectory data | High effort, moderate value for VATSIM |
| FxA Definition Tool | F.3.1 | User-defined polygonal flow evaluation areas | Medium effort, adds analytical flexibility |
| CDM-like Pilot Engagement | F.1.1.5 | Formalized pilot data sharing for demand improvement | Medium effort, requires community buy-in |
| RBAC Enhancement | F.6.6 | Full role-based access control with role management | Medium effort, needed as organization scales |
| # | Document | Pages | Key Content |
| 1 | Announcement of ChBA | 6 | Acquisition structure, 3-phase process, deadlines |
| 2 | Attachment 1: SOO | 8 | 3 core objectives, 16 technical objectives, 10-year PoP |
| 3 | Attachment 2: fPRD | 160 | Hundreds of FMDS_fPRD_XXXX requirements across F.1-F.6 |
| 4 | Attachment 5: ConOps | 91 | As-is vs to-be operations, 6 operational scenarios, user roles |
| 5 | Attachment 6: FAD | 186 | 200+ leaf functions, FFBDs, N2 diagrams, data dictionary |
| 6 | Attachment 7: HIG | 49 | UI/UX design principles, color coding, font requirements, 78-item checklist |
| 8 | Attachment 9: NDA/NUA | 3 | Non-disclosure agreement for SSI documents |
| 10 | Attachment 11: Business Declaration | 1 | FAA business declaration form |
| 11 | Attachment 12: Method of Evaluation | 4 | Meets/Does Not Meet on 4 criteria |
| 13 | Attachment L2: Minimum Org Requirements | 1 | 8 mandatory questions including TRL 8 requirement |
| 14 | Attachment L3: Prior Experience Reference | 1 | Reference template |
api/tmi/gdp_preview.php -- GDP impact preview with arrival-time filteringapi/tmi/gdp_apply.php -- Apply GDP from sandbox to live ADLapi/tmi/gdp_simulate.php -- GDP simulationapi/tmi/gs/ -- Full GS lifecycle (create, model, activate, extend, purge, flights, demand, list, get)api/tmi/gs/common.php -- Shared GS utilities (DB helpers, auth, input parsing)api/tmi/gs_preview.php -- Ground Stop preview with departure filteringapi/tmi/advisories.php -- TMI advisory managementapi/tmi/entries.php -- TMI restriction entries (MIT, MINIT, STOP, APREQ, etc.)api/mgt/tmi/coordinate.php -- Multi-facility coordination workflowapi/mgt/tmi/promote.php -- TMI promotion (staging to active)scripts/tmi_compliance/core/analyzer.py -- Python TMI compliance enginescripts/vatsim_adl_daemon.php -- 15-second flight data ingestionadl/php/parse_queue_gis_daemon.php -- Route parsing with PostGISadl/php/boundary_gis_daemon.php -- Spatial boundary detectionadl/php/crossing_gis_daemon.php -- Boundary crossing predictionadl/php/waypoint_eta_daemon.php -- Waypoint ETA calculationapi/adl/demand/fix.php -- Fix-based demandapi/adl/demand/segment.php -- Route segment demandapi/adl/demand/airway.php -- Airway demandapi/demand/airport.php -- Airport demandapi/demand/rates.php -- AAR/ADR ratesapi/demand/override.php -- Manual rate overridesassets/js/demand.js -- Demand chart visualizationassets/js/route-maplibre.js -- MapLibre route visualizationassets/js/tmi-active-display.js -- Active TMI displayassets/js/tmi_compliance.js -- TMI compliance visualization (~280KB)assets/js/weather_radar.js -- Weather radar overlayassets/js/gdt.js -- Ground Delay Tableassets/js/splits.js -- Sector split managementapi/swim/v1/ -- SWIM API (FIXM-aligned)api/swim/v1/ws/WebSocketServer.php -- Real-time WebSocketload/discord/MultiDiscordAPI.php -- Multi-org Discord postingdiscord-bot/bot.js -- Discord Gateway bot for coordinationscripts/startup.sh -- Daemon orchestrationscripts/archival_daemon.php -- Trajectory tiering and archival