AXM  Protocol
Genesis kernel Core hub
Chat spoke Show spoke Embodied spoke
AXM Drone Show Spoke

axm-show

Compiles a show_spec.json into a genesis-verifiable shard. Same architecture as axm-embodied. Same relationship to genesis. Different domain.

show_spec.json → shard axm-verify PASS ML-DSA-44 · post-quantum KEMT reference spec
show_spec.json
show_compile.py
axm_build.compiler_generic
genesis-verifiable shard
axm-verify PASS
Invariant
No fork from the kernel. compile_generic_shard is the only path to a verifiable shard. The show compiler is a spoke. It does not reimplement signing, hashing, or Merkle construction.
axm-genesis · kernel
axm-core · hub
axm-chat · spoke
axm-embodied · spoke
▸ axm-show · spoke
§01

What Show Does

Domain
Drone Show
Takes an operator-authored show specification — venue, config, safety doctrine — and produces a cryptographically sealed, genesis-verifiable artifact.
Compiler
show_compile.py
Parses show_spec.json, extracts claim candidates at three tiers, delegates to compile_generic_shard, then self-verifies before emitting. Never emits a failing shard.
Schema
show_schema.py
Frozen interface between any authoring surface and the compiler. Validates airspace class, LAANC ceiling compliance, fallback behaviors, and comm degradation tiers.
HTTP Bridge
server.py
Flask bridge connecting the Glass Onion React planner UI to the real compiler and axm-verify. Endpoints: /show/compile and /show/verify on port 8410.
§02

Glass Onion Planner

The Glass Onion UI is an intent router for show planning. State flows in one direction — plan → compile → inspect — with no resets between modes. The compiled spec is frozen at the moment you click Compile.

PLAN venue · config · doctrine COMPILE compile_generic_shard INSPECT claims · verify · tamper
Plan Mode
Outer ring · ⌘1
Three tabs: Venue (locked T0 tile from FAA — airspace class, LAANC ceiling, geofence), Config (drone count, formation, altitude, duration), Doctrine (failure mode fallbacks + comm degradation tiers). Altitude exceeding LAANC ceiling blocks compilation.
Compile Mode
Middle ring · ⌘2
Streams the compilation log. Validates spec, extracts T0/T1/T2 claim candidates, serializes source document, delegates to compile_generic_shard for Merkle construction and signing. All five REQs must pass before the shard is emitted.
Inspect Mode
Inner ring · ⌘3 (after compile)
Six tabs: Claims (filterable by tier and subject), Graph, Provenance (doctrine chain), Source, Manifest, Verify. Includes a tamper test that flips one byte in the shard and re-runs axm-verify — confirm the failure mode works before the show.
§03

Three-Tier Claim Architecture

Every claim in the shard carries a tier. Tiers are not configuration — they are a semantic distinction baked into the schema. The compiler assigns them at extraction time based on which section of the spec the claim comes from.

T0
Regulatory
Source: venue{}
Airspace classification, LAANC ceiling, authorization requirements, geofence geometry, FAA data provenance. These are facts derived from regulatory data, not operator choices. Signed as immutable claims.
⊘ Cannot be overridden by any activation command · Compiler enforces at extraction time
≈9 claims · venue{}
T1
Operational
Source: config{}
Show name, drone count, formation type, maximum operating altitude, duration, launch time, geofence radius, minimum separation. What the operator configured. Subject to Tier 0 ceiling enforcement.
⌾ Operator-authored · max_altitude_ft must be ≤ venue.laanc_ceiling_ft
≈8 claims · config{}
T2
Contingency
Source: safety{}
Failure mode fallback behaviors and comm degradation tier mappings. The doctrine the swarm executes when things go wrong. Pre-compiled — the drone looks up its tier, it does not reason at runtime.
◈ Pre-compiled doctrine · Drone looks up tier, does not reason at runtime
≈11 claims · safety{}
Altitude Ceiling Enforcement
The schema validator rejects any spec where config.max_altitude_ft exceeds venue.laanc_ceiling_ft. The Glass Onion UI shows a live violation warning and disables compilation. The compiler enforces this independently of the UI.
§04

KEMT Reference Spec

The reference show specification targets KEMT — San Gabriel Valley Airport, El Monte CA. Class D airspace, LAANC available with auto-approval ceiling at 200ft AGL. The tile file is cached; replace with a live Aloft API pull when developer access is provisioned.

Airport
San Gabriel Valley Airport (KEMT)
Location
El Monte, CA · 34.0861°N, 118.0353°W
Airspace Class
Class D
Tower Frequency
121.2 MHz
LAANC
Available · 200ft AGL auto-approval
Authorization
Required
Elevation
296ft MSL
Overlying
LAX Class B shelf at 5000ft MSL
LAANC AUTO-APPROVAL GRID
Airport surfaceNO OPS
<1nm from runway100ft
1–2nm from runway200ft
2–3.7nm (outer)400ft
Tile File
tiles/kemt-sgv-v1.json is a cached FAA tile. The compiler reads venue facts from this file and promotes them to Tier 0 claims. Replace with a live Aloft pull.
REFERENCE SHOW CONFIG
Show nameKEMT Demo Show Alpha
Drone count50
Formationgrid
Max altitude200ft AGL
Duration480s (8 min)
Geofence150m radius
Min separation3.0m
Launch UTC2026-03-15T03:00Z
§05

show_spec.json Schema

Three sections map directly to the three claim tiers. The schema is the frozen contract between any authoring surface and the compiler. Valid enum values are enforced at parse time by show_schema.py.

show_spec.json · KEMT reference (examples/kemt_show_spec.json)
{
  "schema_version": "1.0.0",

  // ── TIER 0: Regulatory (venue facts, from FAA tile) ────────────────
  "venue": {
    "name": "San Gabriel Valley Airport (KEMT)",
    "latitude": 34.0861,
    "longitude": -118.0353,
    "airspace_class": "D",          // A B C D E G
    "max_altitude_agl_ft": 400,
    "laanc_available": true,
    "laanc_ceiling_ft": 200,
    "authorization_required": true,
    "tfrs_active": false,
    "data_source": "cached",     // aloft | airhub | manual | cached
    "data_retrieved_utc": "2026-03-01T12:00:00Z"
  },

  // ── TIER 1: Operational (operator choices) ────────────────────────
  "config": {
    "show_name": "KEMT Demo Show Alpha",
    "drone_count": 50,
    "formation_type": "grid",  // grid | circle | wave | sphere | text | custom
    "max_altitude_ft": 200,        // must be ≤ venue.laanc_ceiling_ft
    "duration_seconds": 480,
    "launch_time_utc": "2026-03-15T03:00:00Z",
    "geofence_radius_m": 150,
    "min_separation_m": 3.0
  },

  // ── TIER 2: Contingency (failure mode doctrine) ───────────────────
  "safety": {
    "wind_gust_fallback":       "hold_position",
    "rf_jam_fallback":         "return_home",
    "drone_failure_fallback":  "land_in_place",
    "gps_spoof_fallback":      "return_home",
    "battery_low_fallback":    "land_in_place",
    "crowd_incursion_fallback":"hold_position",
    "full_disconnect_fallback": "land_in_place",
    "comm_degradation_tiers": {
      "tier_0_full_mesh":       "execute_full_doctrine",
      "tier_1_degraded_rf":     "execute_reduced_doctrine",
      "tier_2_optical_only":    "loiter_or_rth",
      "tier_3_full_disconnect": "land_in_place"
    }
  }
}
FAILURE MODE FALLBACKS · VALID VALUES
FieldIconKEMT DefaultTier
wind_gust_fallback💨hold_positionT2
rf_jam_fallback📡return_homeT2
drone_failure_fallbackland_in_placeT2
gps_spoof_fallback🛰return_homeT2
battery_low_fallback🔋land_in_placeT2
crowd_incursion_fallback👤hold_positionT2
full_disconnect_fallback🔇land_in_placeT2
Valid values: return_home · hold_position · land_in_place · safe_zone
COMM DEGRADATION TIERS
T0 · Full Mesh execute_full_doctrine All RF links nominal. Execute full choreography as compiled.
T1 · Degraded RF execute_reduced_doctrine Partial link loss. Fall back to the reduced-complexity doctrine subset.
T2 · Optical Only loiter_or_rth RF lost, visual references only. Hold position or return home depending on fuel state.
T3 · Full Disconnect land_in_place All communications lost. Land immediately at current position.
Each tier maps to a pre-compiled doctrine subset. The drone looks up its tier — it does not reason about it at runtime.
§06

Shard Layout

Show shards follow the standard AXM Genesis shard format. Same manifest, same Merkle tree, same ML-DSA-44 signature. The show compiler extracts venue, config, and safety claims from show_spec.json and delegates to compile_generic_shard.

Full shard format specification on Genesis →

§07

Quick Start

01
Install
pip install axm-genesis
pip install -e .
Install the genesis kernel dependency first, then the spoke in editable mode.
02
Compile
axm-show-compile \
  examples/kemt_show_spec.json \
  show_shard/
Compiles the KEMT reference spec using ML-DSA-44 (default). Self-verifies before emitting.
03
Verify
axm-verify shard show_shard/

# {"status":"PASS",
#  "error_count":0,
#  "errors":[]}
All five REQs checked. Trust the shard only when status is PASS.
04
Run Server
cd axm-show-server/
python server.py
# http://localhost:8410
GOLD SHARDS · REPRODUCIBLE TEST ARTIFACTS
CLI
# Ed25519 + canonical timestamp → reproducible gold shard
axm-show-compile examples/kemt_show_spec.json show_shard/ --gold

# Explicit suite selection
axm-show-compile examples/kemt_show_spec.json show_shard/ --suite ed25519
axm-show-compile examples/kemt_show_spec.json show_shard/ --suite mldsa44  # default

# Test suite (4 tests expected PASS)
pytest tests/ -v
  test_kemt_spec_validates              PASSED
  test_kemt_spec_compiles               PASSED
  test_show_shard_verifies              PASSED
  test_altitude_ceiling_enforcement     PASSED