# Node · plane · hop schema (public)

Agent-readable shapes used across **geo-desk**, **lane-line-tree**, **gov-tree-hub**, and **map-hub**.

Privacy: no SSN, DOB, FOIA PDF bodies, paystubs. House origin is public taxlot class only (3116 SE 21st · R585600350).

## Planes

| Plane | Meaning |
|-------|---------|
| LOCAL | LAN / CPE / house edge |
| GOV | Identifier / policy / agency class |
| MAIN | ISP access → metro → BAR → coast edge → CDN |
| EDU | Education / research nets |
| STKS | Stocks / clearing / exchange gravity |
| SPACE | Sat / LEO / GEO / orbital context |
| TERRAIN | Full-Earth DEM / particle terrain mode (optional) |

Multi-world MAIN copies may appear at `lon ± 360·n`.

## Hop object (`ugrad-gov-hops-v2`)

```json
{
  "n": 1,
  "name": "CPE gateway",
  "ip": "—",
  "ms": 1.2,
  "plane": "LOCAL",
  "layer": "L3/LAN",
  "role": "CPE",
  "orgKey": "cpe",
  "asn": null,
  "org": null,
  "tier": "edge",
  "tier_label": "CPE",
  "throughput_mbps": null,
  "throughput_class": null,
  "wiki": null,
  "notes": "public class only"
}
```

Pack envelope:

```json
{
  "schema": "ugrad-gov-hops-v2",
  "mode": "live | public-demo",
  "honesty": "string",
  "geo": { "ip": "", "lat": 0, "lon": 0, "city": "", "asn": "", "org": "" },
  "hops": [],
  "edges": [{ "ok": true, "name": "1.1.1.1", "ms": 7 }],
  "lines": [],
  "copy_tree": ""
}
```

Public offline sample: `/data/public-samples/hops-demo.json`.

## Signal graph (`ugrad-signal-graph-v1`)

Used by lane-line-tree style cards:

```json
{
  "schema": "ugrad-signal-graph-v1",
  "nodes": [{ "id": "cpe", "name": "CPE gateway", "orgKey": "cpe", "parent": "root" }],
  "links": [{ "source": "root", "target": "cpe" }]
}
```

Sample: `/data/public-samples/signal-demo.json`.

## Cable feature (map-hub)

`data/all_cables.json` is a **list of GeoJSON Features** (not a FeatureCollection). Demo subset:

`/data/public-samples/cables-demo.json`

Properties commonly used: `name`, `id`, `length`, `rfs`, `landing_points[]`.

## H3 demo

`/data/public-samples/h3-demo.json` — anchor + cells by resolution for public shells when full `pdx-h3-addresses.json` is heavy or missing.

## Public health (no :9876)

- `GET /health.json` — static public status  
- `GET /VERSION.json` — authoritative build  
- Local fleet (optional): `http://127.0.0.1:9876/api/health`

## Lite mode

- Query: `?lite=1` · `?ai=1` · `?bench=1` · `?demo=1`  
- Force full layers: `?full=1`  
- Public hosts default lite via `tools/public-lite.js` (`wantLite()`).
