aesop_modelisation (MIDAS)
Critical infrastructure modeling microservice — 5 PNAIV sectors, IS graph topology, H3 spatial tiling, cascade propagation engine.
MIDAS Internal Architecture
MIDAS Django Applications
| App | Purpose | Key Models |
|---|---|---|
app_midas_core |
Shared configuration, base classes, constants | MidasConfig, OperationalStateChoices, PropagationProfile |
app_midas_pnaiv |
5 PNAIV critical infrastructure sectors | Pnaiv, SecteurActivite (Communications, Energie Electricite, Energie Hydrocarbures, Transports, Eau) |
app_midas_is |
Information System graphs: nodes, edges, cross-IS dependencies | InformationSystem, Noeud, Arete, DependanceInterIS |
app_midas_geo |
H3 hexagonal tiling and altitude layers for spatial indexing | H3Cell, CoucheAltitude, NoeudGeoLocalisation |
app_midas_propagation |
Cascade engine: BFS/weighted propagation across IS and cross-IS | PropagationRun, PropagationStep, CascadeResult |
app_midas_injection |
Three disruption injection modes: functional, geographic, manual | InjectionScenario, InjectionPoint, InjectionMode |
app_midas_dashboard |
Aggregated indicators and visualization for analysts | IEG_Noeuds, IEG_IS, IEG_Pnaiv, IEP_CrossDependency, DeltaIndicator |
app_midas_api |
REST API exposing graph state, propagation results, indicators | Serializers, ViewSets (read-only + simulation triggers) |
Architecture Concepts
Dual Storage Strategy
MIDAS uses two complementary storage engines on the same PostgreSQL instance:
- Django ORM (relational) — Standard CRUD operations, admin interface, foreign keys for sector/IS/node hierarchy. Powers the dashboard and API serializers.
- Apache AGE (graph) — Cypher-based traversal for propagation queries. Each IS is a labeled subgraph; nodes and edges are mirrored from ORM. Cross-IS dependencies are edges between subgraphs.
Writes go through Django ORM first, then sync to AGE via signals. Reads for propagation use AGE directly for O(E+V) traversal performance.
IS Graph Model
Each Information System (IS) is modeled as a directed weighted graph:
- Nodes (Noeuds) — Physical or logical facilities: telecom towers, substations, refineries, water plants. Each has an
operational_state(200=nominal, 300=degraded, 500=destroyed). - Edges (Aretes) — Connections between nodes with a
capacity_weightrepresenting flow capacity. Directed: a power line from plant to substation is not symmetric. - Cross-IS Dependencies — A data center (Communications) depends on a substation (Energie Electricite). These are modeled as inter-graph edges with their own dependency weight and criticality flag.
H3 Spatial Indexing
Every node is geolocated on an H3 hexagonal grid (resolutions 4-7) with an altitude layer assignment:
- Hex tiling — Uber's H3 provides equal-area hexagons for geographic injection: "disable all nodes in these hexes" simulates area-effect disruptions (bombing, EMP, flood).
- 10 altitude layers — From FONDSMER (seabed) through SURFTER (ground) up to GEO (geostationary orbit). Allows 3D modeling of satellite links, submarine cables, and aerial infrastructure.
Cascade Propagation Engine
The core analytical capability of MIDAS. When nodes are disrupted (via injection), the engine propagates effects:
- Intra-IS propagation — BFS/weighted walk within a single IS graph. A destroyed substation degrades all downstream nodes proportionally to edge weights.
- Inter-IS propagation — Crosses dependency edges. A power outage cascades into telecom (no power to towers), then into water (no SCADA communications).
- Output indicators — IEG_NOEUDS (per-node), IEG_IS (per-IS aggregate), IEG_PNAIV (per-sector), IEP (cross-dependency exposure). Delta indicators track change from baseline.
Operational Modes
Standalone Mode (MIDAS for civilian planners) — MIDAS can operate independently as a critical infrastructure resilience analysis tool. Civilian agencies (SGDSN, ANSSI, prefectures) use it to model national infrastructure, simulate disruption scenarios, and assess cascading failure risks. In this mode, injection is manual or scenario-based, and the dashboard provides direct analytical outputs without feeding into a military simulation loop.
AESOP Substrate Mode (military integration) — When deployed as part of the AESOP trilogy, MIDAS serves as the infrastructure modeling substrate for
aesop_simulation. The simulation's OODA loop engine consumes MIDAS graph state and propagation results via app_midas_api. Strike planning in the simulation triggers injection scenarios in MIDAS, and the resulting cascade indicators feed back into operational decision support. Intelligence from aesop_intell can also enrich the MIDAS model by updating node states based on OSINT signals.