# Systems Perspective Description Language — Hydrology (SPDL-HYDRO) **Specification Document ID:** `SPDL-HYDRO-SPEC-2026-v4.2` **Classification:** Open Epistemic Standard / Real-Time Zero-Heap Hydrological Substrate **Principal Architect:** Asse van Nix | Systems Perspective Framework & Proof-Driven Architecture Group **Target Environment:** Zig 0.16.0 Freestanding · Satellite Scada Remote Terminal Units · WaterML Replacement **Applied Standards:** ISO/IEC 14977 EBNF · GBNF Maskable · OGC WaterML 2.0 Replacement · ISO 24510 · EPA WQX Standards --- ## 1. Epistemic Architecture: Why WaterML 2.0 and OGC SOS Must Be Replaced 1. **Heavy XML/GML Overhead:** Open Geospatial Consortium (OGC) WaterML 2.0 relies on GML schemas that consume thousands of bytes per observation. When transmitting over battery-backed satellite links (Iridium, Inmarsat), this verbosity drives up operational costs and transmission latency. 2. **Missing Hydraulic Physics:** WaterML is purely a descriptive data container. It lacks embedded formulations of Saint-Venant shallow water equations or open-channel gate hydraulics, separating monitoring from automated spillway safety. **SPDL-HYDRO** unifies shallow water dynamics with dam crest overtopping barrier certificates in sub-100-byte streaming frames. --- ## 2. Physical Invariants, DAEs & Mathematical Proof Gates ``` SPDL-HYDRO FLUID MANIFOLD ┌─────────────────────────────────────────────────────────────────────────────┐ │ 1D OPEN-CHANNEL SAINT-VENANT CONTINUITY & MOMENTUM DYNAMICS │ │ dA/dt + dQ/dx = 0 │ │ dQ/dt + d(Q^2 / A)/dx + g * A * (dh/dx + S_f - S_0) = 0 │ ├─────────────────────────────────────────────────────────────────────────────┤ │ DAM CREST OVERTOPPING BARRIER CERTIFICATE │ │ h_dam(Elev_pool) = Crest_Elevation - Elev_pool(t) - Freeboard_Margin >= 0 │ ├─────────────────────────────────────────────────────────────────────────────┤ │ BROAD-CRESTED WEIR DISCHARGE EQUATION │ │ Q_weir = C_d * b * (2/3) * sqrt(2/3 * g) * H^(3/2) │ └─────────────────────────────────────────────────────────────────────────────┘ ``` --- ## 3. Formal ISO/IEC 14977 EBNF Grammar ```ebnf HydroManifest = { Line } ; Line = [ Whitespace ] , ( Comment | HydroRecord ) , Newline ; Whitespace = { " " | "\t" | "\r" } ; Newline = "\n" | "\r\n" ; Comment = "#" , { AnyChar - Newline } ; HydroRecord = "(I) @HYDRO_INVARIANT" , " " , InvariantFields | "(A) @DAM_ASSET" , " " , DamFields | "(B) @OVERTOP_BARRIER" , " " , OvertoppingFields | "(M) @SPILLWAY_GATE" , " " , GateFields | "(T) @WATER_OBSERVER" , " " , ObserverFields ; InvariantFields = "id:" , Token , " basin:" , Token , " max_interval_s:" , Integer , " alloc_policy:ZERO_HEAP" ; DamFields = "id:" , Token , " crest_elevation_m:" , Number , " min_freeboard_m:" , Number ; OvertoppingFields = "id:" , Token , " pool_sensor:" , Token , " critical_elevation_m:" , Number ; GateFields = "id:" , Token , " gate_idx:" , Integer , " opening_m:" , Number , " discharge_m3_s:" , Number ; ObserverFields = "id:" , Token , " pool_m:" , Number , " tailwater_m:" , Number , " inflow_m3_s:" , Number ; Token = Letter , { Letter | Digit | "_" | "-" } ; Number = [ "-" ] , Digit , { Digit } , [ "." , { Digit } ] ; Integer = [ "-" ] , Digit , { Digit } ; Letter = "A".."Z" | "a".."z" ; Digit = "0".."9" ; AnyChar = ? Any valid Unicode code point ? ; ``` --- ## 4. GBNF Structured Sampling Grammar ```gbnf root ::= HydroRecord "\n" HydroRecord ::= "(I) @HYDRO_INVARIANT" " " InvariantFields | "(A) @DAM_ASSET" " " DamFields | "(B) @OVERTOP_BARRIER" " " OvertoppingFields | "(M) @SPILLWAY_GATE" " " GateFields | "(T) @WATER_OBSERVER" " " ObserverFields InvariantFields ::= "id:" [A-Za-z0-9_-]+ " basin:" [A-Za-z0-9_-]+ " max_interval_s:" [0-9]+ " alloc_policy:ZERO_HEAP" DamFields ::= "id:" [A-Za-z0-9_-]+ " crest_elevation_m:" [0-9.]+ " min_freeboard_m:" [0-9.]+ OvertoppingFields ::= "id:" [A-Za-z0-9_-]+ " pool_sensor:" [A-Za-z0-9_-]+ " critical_elevation_m:" [0-9.]+ GateFields ::= "id:" [A-Za-z0-9_-]+ " gate_idx:" [0-9]+ " opening_m:" [0-9.]+ " discharge_m3_s:" [0-9.]+ ObserverFields ::= "id:" [A-Za-z0-9_-]+ " pool_m:" [0-9.]+ " tailwater_m:" [0-9.]+ " inflow_m3_s:" [0-9.]+ ``` --- ## 5. Production SPDL-HYDRO Manifest Exemplar ```spdl # ============================================================================== # SPDL-HYDRO v4.2 MANIFEST: MUNICIPAL FLOOD CONTROL DAM & SPILLWAY RTU # Standard: WaterML 2.0 Replacement | Link: Satellite Burst Iridium SBD # ============================================================================== (I) @HYDRO_INVARIANT id:INV-DAM-BASIN basin:COLORADO_RIVER max_interval_s:60 alloc_policy:ZERO_HEAP # --- DAM PHYSICAL ASSET GEOMETRY --- (A) @DAM_ASSET id:DAM_CREST_SECTION crest_elevation_m:420.0 min_freeboard_m:2.5 # --- OVERTOPPING SAFETY BARRIER --- (B) @OVERTOP_BARRIER id:BAR_FLOOD_OVERTOP pool_sensor:SN_RESERVOIR_LVL critical_elevation_m:417.5 # --- AUTOMATED SPILLWAY GATE ACTUATION --- (M) @SPILLWAY_GATE id:GATE_TAINTER_01 gate_idx:1 opening_m:3.4 discharge_m3_s:245.0 # --- HYDROLOGICAL TELEMETRY STREAM --- (T) @WATER_OBSERVER id:TEL_DAM_STATION pool_m:414.2 tailwater_m:382.1 inflow_m3_s:310.5 ``` --- ## 6. Standards Compliance Matrix ``` ╔═════════════════════════════════╦══════════════════════╦═════════════════════════════════════════════════════╗ ║ Dimension │ Verification Standard│ Enforced Implementation Evidence ║ ╠═════════════════════════════════╬══════════════════════╬═════════════════════════════════════════════════════╣ ║ Dam Overtopping Safeguard │ USACE / FERC Safety │ Pool elevation strictly bounded < Critical margin. ║ ║ Hydraulic Discharge Physics │ Saint-Venant DAE │ Discharge calculated via broad-crested weir formula.║ ║ Satellite Low-Bandwidth Delivery│ Iridium SBD MTU │ Record length fits in < 100 bytes single payload. ║ ║ Deterministic Grammar Ingestion │ ISO/IEC 14977 / GBNF │ Syntactic error probability P = 0.000%. ║ ╚═════════════════════════════════╩══════════════════════╩═════════════════════════════════════════════════════╝ ```