# Systems Perspective Description Language — Maritime Navigation (SPDL-NAV) **Specification Document ID:** `SPDL-NAV-SPEC-2026-v4.2` **Classification:** Open Epistemic Standard / Real-Time Zero-Heap Marine Autonomous Substrate **Principal Architect:** Asse van Nix | Systems Perspective Framework & Proof-Driven Architecture Group **Target Environment:** Zig 0.16.0 Freestanding · Marine Autopilot ECDIS Compute · NMEA 0183/2000 Replacement **Applied Standards:** ISO/IEC 14977 EBNF · GBNF Maskable · IMO COLREGs 1972 · IEC 61162 (NMEA 0183/2000 Replacement) · IMO Resolution MSC.252(83) --- ## 1. Epistemic Architecture: Why NMEA 0183 and NMEA 2000 Must Be Replaced 1. **NMEA 0183 Text Frailty:** Uses unverified comma-separated ASCII sentences (`$GPRMC,...`) lacking structural types, units, and integrity guarantees. 2. **NMEA 2000 Proprietary Obscurity:** Cloaked behind paywalls and proprietary CAN PGN bit-packing. It has zero formal integration with the International Regulations for Preventing Collisions at Sea (COLREGs) or dynamic hydrodynamic ship stability margins. **SPDL-NAV** directly unifies vessel hydrodynamics with COLREGs safety barrier certificates. --- ## 2. Physical Invariants, DAEs & Mathematical Proof Gates ``` SPDL-NAV HYDRODYNAMIC MANIFOLD ┌─────────────────────────────────────────────────────────────────────────────┐ │ NON-LINEAR SHIP MANEUVERING DYNAMICS (Norrbin / Abkowitz Model) │ │ m * (u_dot - v * r - x_G * r^2) = X_hydro + X_prop │ ├─────────────────────────────────────────────────────────────────────────────┤ │ COLREGs RULE 13/14/15 STAND-ON & GIVE-WAY CONE BARRIER │ │ h_colregs(p_own, p_target, DCPA, TCPA) = DCPA - DCPA_safe >= 0 │ ├─────────────────────────────────────────────────────────────────────────────┤ │ TRANSVERSE HYDRODYNAMIC INTACT STABILITY BARRIER (IMO A.749) │ │ h_stability(GM) = GM_actual - GM_minimum_allowable >= 0 │ └─────────────────────────────────────────────────────────────────────────────┘ ``` --- ## 3. Formal ISO/IEC 14977 EBNF Grammar ```ebnf NavManifest = { Line } ; Line = [ Whitespace ] , ( Comment | NavRecord ) , Newline ; Whitespace = { " " | "\t" | "\r" } ; Newline = "\n" | "\r\n" ; Comment = "#" , { AnyChar - Newline } ; NavRecord = "(I) @NAV_INVARIANT" , " " , InvariantFields | "(M) @VESSEL_HYDRO" , " " , HydroFields | "(B) @COLREGS_BARRIER" , " " , ColregsFields | "(B) @STABILITY_BARRIER" , " " , StabilityFields | "(M) @AUTOPILOT_CMD" , " " , AutopilotFields | "(T) @NAV_OBSERVER" , " " , ObserverFields ; InvariantFields = "id:" , Token , " mmsi:" , Integer , " imo_class:MASS_DEGREE_4" , " alloc_policy:ZERO_HEAP" ; HydroFields = "id:" , Token , " length_m:" , Number , " beam_m:" , Number , " draft_m:" , Number ; ColregsFields = "id:" , Token , " target_mmsi:" , Integer , " rule:" , ColregRule , " min_dcpa_nm:" , Number , " min_tcpa_min:" , Number ; ColregRule = "HEAD_ON_RULE14" | "CROSSING_GIVE_WAY_RULE15" | "OVERTAKING_RULE13" ; StabilityFields = "id:" , Token , " min_gm_m:" , Number , " max_heel_deg:" , Number ; AutopilotFields = "id:" , Token , " rudder_cmd_deg:" , Number , " engine_rpm:" , Integer , " heading_set_deg:" , Number ; ObserverFields = "id:" , Token , " sog_knots:" , Number , " cog_deg:" , Number , " rot_deg_min:" , Number , " depth_m:" , 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 ::= NavRecord "\n" NavRecord ::= "(I) @NAV_INVARIANT" " " InvariantFields | "(M) @VESSEL_HYDRO" " " HydroFields | "(B) @COLREGS_BARRIER" " " ColregsFields | "(B) @STABILITY_BARRIER" " " StabilityFields | "(M) @AUTOPILOT_CMD" " " AutopilotFields | "(T) @NAV_OBSERVER" " " ObserverFields InvariantFields ::= "id:" [A-Za-z0-9_-]+ " mmsi:" [0-9]+ " imo_class:MASS_DEGREE_4 alloc_policy:ZERO_HEAP" HydroFields ::= "id:" [A-Za-z0-9_-]+ " length_m:" [0-9.]+ " beam_m:" [0-9.]+ " draft_m:" [0-9.]+ ColregsFields ::= "id:" [A-Za-z0-9_-]+ " target_mmsi:" [0-9]+ " rule:" ("HEAD_ON_RULE14"|"CROSSING_GIVE_WAY_RULE15"|"OVERTAKING_RULE13") " min_dcpa_nm:" [0-9.]+ " min_tcpa_min:" [0-9.]+ StabilityFields ::= "id:" [A-Za-z0-9_-]+ " min_gm_m:" [0-9.]+ " max_heel_deg:" [0-9.]+ AutopilotFields ::= "id:" [A-Za-z0-9_-]+ " rudder_cmd_deg:" [0-9.-]+ " engine_rpm:" [0-9]+ " heading_set_deg:" [0-9.]+ ObserverFields ::= "id:" [A-Za-z0-9_-]+ " sog_knots:" [0-9.]+ " cog_deg:" [0-9.]+ " rot_deg_min:" [0-9.-]+ " depth_m:" [0-9.]+ ``` --- ## 5. Production SPDL-NAV Manifest Exemplar ```spdl # ============================================================================== # SPDL-NAV v4.2 MANIFEST: AUTONOMOUS CONTAINER VESSEL (IMO MASS DEGREE 4) # Standard: IMO COLREGs 1972 | Engine: Freestanding Zero-Heap Navigation Substrate # ============================================================================== (I) @NAV_INVARIANT id:INV-NAV-CORE mmsi:244010200 imo_class:MASS_DEGREE_4 alloc_policy:ZERO_HEAP # --- SHIP HYDRODYNAMIC ASSETS --- (M) @VESSEL_HYDRO id:HULL_CONTAINER_140M length_m:142.5 beam_m:24.2 draft_m:7.8 # --- COLREGs SPATIAL & SHIP ROLL BARRIERS --- (B) @COLREGS_BARRIER id:BAR_COLREG_CROSSING target_mmsi:211345000 rule:CROSSING_GIVE_WAY_RULE15 min_dcpa_nm:1.5 min_tcpa_min:12.0 (B) @STABILITY_BARRIER id:BAR_INTACT_STABILITY min_gm_m:0.85 max_heel_deg:10.0 # --- AUTOPILOT STEERING COMMANDS --- (M) @AUTOPILOT_CMD id:CMD_TRACK_HOLD rudder_cmd_deg:-4.2 engine_rpm:115 heading_set_deg:042.5 # --- BRIDGE TELEMETRY (REPLACING NMEA 0183/2000) --- (T) @NAV_OBSERVER id:TEL_PRIMARY_NAV sog_knots:18.4 cog_deg:042.8 rot_deg_min:-0.5 depth_m:42.0 ``` --- ## 6. Standards Compliance Matrix ``` ╔═════════════════════════════════╦══════════════════════╦═════════════════════════════════════════════════════╗ ║ Dimension │ Verification Standard│ Enforced Implementation Evidence ║ ╠═════════════════════════════════╬══════════════════════╬═════════════════════════════════════════════════════╣ ║ Collision Regulations │ IMO COLREGs 1972 │ DCPA/TCPA distance barrier prevents close-quarters. ║ ║ Hydrodynamic Vessel Stability │ IMO Resolution A.749 │ Intact GM >= 0.85m enforced prior to rudder exec. ║ ║ Marine Sensor Serialization │ IEC 61162 Replacement│ Replaces brittle ASCII sentences with zero-heap AST.║ ║ Autonomous Shipping Control │ IMO MASS Degree 4 │ Deterministic autonomous maneuvering on silicon. ║ ╚═════════════════════════════════╩══════════════════════╩═════════════════════════════════════════════════════╝ ```