Waymark Flight
Airspace readings and route proposals from a scene and a flight track
On this page
Overview #
Waymark Flight answers the questions a pilot or drone operator asks about the airspace around them. You describe the airspace — a few circles and rings with floors and ceilings — and give the last seconds of the flight; it says which areas the aircraft is inside, whether it is flying under a shelf, what boundary it will cross next and when, how far it is from the nearest restricted area and what to do about it. It can also propose a route from one point to another that stays out of the areas it must avoid.
Waymark Flight is the airspace model of the Waymark series. It reads an airspace scene of up to 24 cylinder or ring-shaped volumes — Class B, C and D surface areas and shelves, restricted and prohibited areas, temporary flight restrictions (TFR) and military operations areas (MOA) — plus an observed flight track of up to twelve points and the kind of mover (drone, light aircraft, helicopter or jet). One forward pass returns the containment set, the ring tier, whether the mover is under a shelf, the next boundary event with its ETA, whether the projected track enters a hazard volume, lateral and vertical margins to the nearest active hazard, the ceiling overhead and an advisory. Its planning decoder proposes up to eight waypoints that avoid restricted, prohibited and TFR volumes and, unless a clearance is allowed, controlled airspace, within the mover’s altitude envelope (drones at most 400 ft above ground).
Containment, boundary events and route planning are all solvable exactly with code, and the Falcon API runs that code on every request. Waymark Flight’s value is a robust reading from noisy, partial tracks — where the exact check, applied to a jittery track, misses more hazard entries than the model does — and fast combined answers in one pass. The exact checker is the guarantee: every reading is returned beside the exact one, the served advisory is the more cautious of the two, and every served route has passed the exact validator.
Waymark Flight is decision support and education only. It is not certified for navigation, and its training airspace is synthetic.
Intended use #
- Flight-training and education tools that explain where an aircraft stands relative to layered airspace, with the exact answer shown beside the model’s.
- Drone-planning and simulation tools that want a quick reading of a noisy track and an early warning of a hazard entry.
- Proposing a route through a caller-supplied scene that stays clear of restricted, prohibited and TFR volumes, validated before it is returned.
- Research on learned airspace readings, using the exact check and the disagreements field as a running comparison.
Out of scope #
- Navigation, flight planning of record, or any decision where a wrong answer has physical consequences. Not a navigation or safety system.
- Knowing real airspace: Waymark Flight does not know real charts, NOTAMs or TFR schedules and never looks them up; the caller supplies every volume.
- Polygonal or irregular airspace, airways, terrain, weather, traffic and wind; volumes are circles and rings only.
- Altitudes above 18,000 ft MSL, more than 24 volumes, or tracks longer than twelve points.
Choose Waymark Flight when #
- The question is about an aircraft or drone in a described airspace: what it is inside, what comes next, and how to route around what it must avoid.
- The track is noisy or partial and a reading robust to tracker jitter matters, with the exact check alongside.
- The scene is a photographed street and the mover is a person — choose Waymark Extra to simulate a walk, or LIM3D-XL to read an observed track.
- Only an exact answer is needed and no model reading is wanted — the exact checker alone is the right tool; Waymark Flight returns its result in
exacton every call.
Architecture #
| Parameters | 21,348,514 |
|---|---|
| Encoder | 8 pre-LN transformer layers, 384 wide, 8 heads, MLP 1,536 |
| Tokens | 1 global + 1 plan + 12 track steps + 24 volume tokens |
| Volume tokens | No position embedding: the reading does not depend on volume order |
| Tracking heads | inside, tier, under-shelf, next event, event kind, hazard entry, advisory; ETA, margins, ceiling |
| Planning decoder | 3 causal layers with cross-attention; up to 8 waypoints and a stop logit |
| Hazard threshold | 0.35 (below 0.5: fewer misses at the cost of false alarms) |
| Projection horizon | 300 s, constant velocity from the last 5 track points |
| Exact checker | ring-oracle/1.0 geometry and A* planner, run on every request |
| Weights | ring.bin, 85,400,498 bytes (float32) |
| Serving device | CPU container, scales to zero |
Waymark Flight is a pre-LayerNorm transformer encoder over numeric tokens, with no text vocabulary: a global token (mover kind, task and track summary), a planning token (start, goal, constraints and envelope), twelve track-step tokens and up to twenty-four volume tokens. Each volume token carries its kind, its shape (cylinder or ring), its centre relative to the mover as distance and bearing, its radii and the signed distances to its rings, its floor and ceiling relative to the mover’s altitude, whether it is active, the field elevation, the tier and the closing and tangential speed toward it. Volume tokens carry no position embedding, so the reading is the same whatever order the volumes arrive in. Every feature is relative to the mover and scenes were rotated at random during generation, so the frame’s origin and orientation do not matter.
The encoder feeds per-volume heads — an inside logit and a next-event pointer with a “none” option — and scene-level classifiers for tier, under-shelf, event kind, advisory, hazard entry and route feasibility, plus regressions for the ETA, the two margins and the ceiling. A three-layer causal decoder with cross-attention to the encoder emits waypoints (east, north and altitude relative to the start) one at a time, with a stop logit, up to eight. The small size (5.3M parameters, 256 wide) exists in the trainer; the served model is the base size.
What is deliberately absent: no map, no terrain, no real airspace data and no clock — the model sees only the scene and the track it is given. The exact geometry checker and the A* planner are not part of the network; they run beside it on every request.
Inputs & outputs #
Input #
| Field | Type | Required | Description | Limit |
|---|---|---|---|---|
volumes | array | Yes | The airspace scene: cylinder or ring-shaped volumes (Class B, C and D areas and shelves, restricted, prohibited, TFR, MOA) in a local east/north frame in nautical miles, altitudes in feet MSL. The caller supplies them; Waymark Flight knows no real airspace. | 1–24 volumes, unique ids |
mover | string | Yes | What is flying: drone, light, helicopter or jet. Sets the altitude envelope, climb rates and planning grid. | One of four values |
track | array | Yes | For /v1/airspace/read: the observed track, each point {t_s, x_nm, y_nm, alt_ft}. Optional context for /v1/airspace/plan. | 1–12 points, ascending t_s |
start | object | No | For /v1/airspace/plan: where the route begins, {x_nm, y_nm, alt_ft}. | Required on /v1/airspace/plan |
goal | object | No | For /v1/airspace/plan: a point {x_nm, y_nm, alt_ft?}, or {land_at: volumeId} to land at the airport of that volume. | Required on /v1/airspace/plan |
allow_controlled | boolean | No | For /v1/airspace/plan: true when a clearance into Class B, C or D is in hand. Restricted, prohibited and TFR volumes are always avoided. | Default false |
Every request carries an airspace scene. A volume is a cylinder, or a ring when inner_radius_nm is above zero, in a local east/north frame in nautical miles with any origin; altitudes are feet MSL, and a floor_ft of null means the volume starts at the surface. The full volume shape is on the input formats page. This scene is hand-built for illustration — a Class B surface area and one shelf around “Field A”, and a restricted area — and does not describe real airspace:
{
"volumes": [
{"id": "B0", "kind": "class_b", "center": {"x_nm": 0, "y_nm": 0}, "radius_nm": 5, "floor_ft": null, "ceiling_ft": 10000, "airport": "Field A", "field_elev_ft": 0, "tier": 0, "name": "surface area"},
{"id": "B1", "kind": "class_b", "center": {"x_nm": 0, "y_nm": 0}, "radius_nm": 10, "inner_radius_nm": 5, "floor_ft": 3000, "ceiling_ft": 10000, "airport": "Field A", "field_elev_ft": 0, "tier": 1, "name": "shelf 1"},
{"id": "R1", "kind": "restricted", "center": {"x_nm": -2, "y_nm": -7}, "radius_nm": 2, "floor_ft": null, "ceiling_ft": 6000, "name": "example restricted area"}
],
"track": [
{"t_s": 0, "x_nm": -12.9, "y_nm": -7, "alt_ft": 2500},
{"t_s": 10, "x_nm": -12.6, "y_nm": -7, "alt_ft": 2500},
{"t_s": 20, "x_nm": -12.3, "y_nm": -7, "alt_ft": 2500},
{"t_s": 30, "x_nm": -12.0, "y_nm": -7, "alt_ft": 2500}
],
"mover": "light"
}Limits on the input:
- At most 24 volumes with unique ids (default
V1…Vn);kindis one of the seven volume kinds;activedefaults to true,inner_radius_nmandfield_elev_ftto 0 andtierto −1 (0 is a surface area, 1 and up are shelves). - A track has 1–12 points in ascending
t_s. The current state is the last point; velocity is a least-squares fit over the last five points with one outlier-rejection pass. A single point, or points with no time span, mean zero velocity and no projected events. - Boundaries follow one convention: inner radius inclusive, outer radius exclusive, floor inclusive, ceiling exclusive. Inactive volumes never contain the mover, produce events or count for margins, ceilings or tiers.
- Every coordinate is within ±150 NM of the origin, every altitude between −2,000 and 60,000 ft and every radius at most 100 NM; values outside these ranges are rejected with
400. - The body is at most 64 KB; a larger body is refused before it is read and the connection is closed without a JSON error. Coordinates may use any origin inside those bounds; the model works relative to the mover.
Output #
| Field | Type | Description |
|---|---|---|
engine | string | Always ring. |
model | object | /v1/airspace/read: the model’s reading — inside, tier, under_shelf, next_event, hazard_entry, margin_lat_nm, margin_vert_ft, ceiling_ft, advisory. |
exact | object | /v1/airspace/read: the same fields computed by the exact geometric checker on the same input. |
advisory | string | /v1/airspace/read: the more cautious of the two advisories; at least turn_away when the exact check puts the mover inside an active hazard. |
disagreements | array | /v1/airspace/read: names of the fields on which the model and the exact check differ. |
source | string | /v1/airspace/plan: model when the model’s proposal passed the exact validator, oracle when the exact planner decided. |
feasible | boolean | /v1/airspace/plan: whether a valid route exists; reason names the obstacle when it does not. |
waypoints | array | /v1/airspace/plan: up to 8 points {x_nm, y_nm, alt_ft}, always valid under the exact checker. |
check | object | /v1/airspace/plan: the exact validator’s verdict on the served route, including valid and reached. |
notice | string | The decision-support notice: not certified for navigation. |
volume_kind 7 labels
class_bclass_cclass_drestrictedprohibitedtfrmoa
mover 4 labels
dronelighthelicopterjet
tier 5 labels
nonesurfaceshelf1shelf2shelf3
event_kind 6 labels
enter_lateralenter_climbenter_descendexit_lateralexit_climbexit_descend
advisory 8 labels
continuemonitorcontact_atcclimbdescendturn_awayholdland
{
"ok": true,
"engine": "waymark-flight",
"model": {"inside": [], "tier": "none", "under_shelf": false, "next_event": {"volume": "R1", "kind": "enter_lateral", "eta_s": 259}, "hazard_entry": true, "margin_lat_nm": 7.9, "margin_vert_ft": 10000, "ceiling_ft": 18000, "advisory": "monitor"},
"exact": {"inside": [], "tier": "none", "under_shelf": false, "next_event": {"volume": "R1", "kind": "enter_lateral", "eta_s": 267}, "hazard_entry": true, "margin_lat_nm": 8.0, "margin_vert_ft": 10000, "ceiling_ft": 18000, "advisory": "monitor"},
"advisory": "monitor",
"disagreements": [],
"notice": "Decision support and education only. Not certified for navigation."
}How to read the result:
modelis the network’s reading andexactis the geometric checker’s reading of the same input; show both, and trustexactfor what the track literally says.advisoryis the more cautious of the two advisories; on a tie in caution (for example climb against descend) the exact answer is kept, and when the exact check puts the mover inside an active hazard it is at leastturn_away.disagreementsnames the fields on which the two readings differ. Categorical fields count when they differ at all;margin_lat_nmcounts beyond 0.5 NM andmargin_vert_ftandceiling_ftbeyond 250 ft;next_eventcounts when the volume or kind differs or the ETAs are more than 30 s apart. An empty list means they agree; a non-empty one is the signal to look closer, not to pick the model.next_eventis the first boundary event on a constant-velocity projection over 300 s, ornull.hazard_entryis true when the projection enters an active restricted, prohibited or TFR volume at any point in the horizon, not only as the first event.margin_lat_nmis capped at 50 andmargin_vert_ftat 10,000 (the vertical margin counts only hazards whose footprint contains the mover);ceiling_ftis the lowest floor of an active controlled or hazard volume overhead, 18,000 when there is none.- The example values are illustrative of the shape; exact numbers depend on the weights.
Examples #
A route for the same scene, from the aircraft’s position to a point east of the restricted area, without a Class B clearance. The start and goal sit under the shelf at 2,500 ft, below its 3,000 ft floor, so the route stays outside controlled airspace:
{
"volumes": [
{"id": "B0", "kind": "class_b", "center": {"x_nm": 0, "y_nm": 0}, "radius_nm": 5, "floor_ft": null, "ceiling_ft": 10000, "airport": "Field A", "tier": 0},
{"id": "B1", "kind": "class_b", "center": {"x_nm": 0, "y_nm": 0}, "radius_nm": 10, "inner_radius_nm": 5, "floor_ft": 3000, "ceiling_ft": 10000, "airport": "Field A", "tier": 1},
{"id": "R1", "kind": "restricted", "center": {"x_nm": -2, "y_nm": -7}, "radius_nm": 2, "floor_ft": null, "ceiling_ft": 6000}
],
"mover": "light",
"start": {"x_nm": -12, "y_nm": -7, "alt_ft": 2500},
"goal": {"x_nm": 6, "y_nm": -7, "alt_ft": 2500},
"allow_controlled": false
}{
"ok": true,
"engine": "waymark-flight",
"source": "model",
"feasible": true,
"waypoints": [
{"x_nm": -12, "y_nm": -7, "alt_ft": 2500},
{"x_nm": -2, "y_nm": -9.8, "alt_ft": 2500},
{"x_nm": 6, "y_nm": -7, "alt_ft": 2500}
],
"check": {"valid": true, "reached": true},
"latency_ms": 12,
"notice": "Decision support and education only. Not certified for navigation."
}The route bends south of the restricted area, keeping more than the 0.5 NM buffer, and passes under the shelf without entering the surface area. Had the proposal clipped the restricted area or missed the goal, source would read oracle and the waypoints would be the exact planner’s. A landing goal is written {"land_at": "B0"}; the planner then relaxes the envelope floor within 5 NM of that volume’s airport.
Training #
Waymark Flight was trained from scratch as a Google Cloud Vertex AI custom job on one NVIDIA L4. The job allowed 40 epochs and stopped early at epoch 22 — about 64 minutes of training and 68 minutes of job time — on a validation score dominated by the missed-entry rate. The dataset was generated on the owner’s machine and uploaded with the job.
The data is synthetic airspace only: 250,000 generated scenes, each yielding one tracking and one planning example, about 484,000 examples in all. A scene has a primary airport with Class B, C or D airspace built as a surface area plus stepped shelves, up to three more Class D airports, restricted areas (some scheduled inactive), prohibited areas, TFRs and MOAs, with field elevations from sea level to 5,000 ft; 12 % of scenes are dense (20–24 volumes). Movers are drones, light aircraft, helicopters and jets, flying behaviours chosen to graze boundaries: under a shelf, climbing into or descending through a shelf floor, crossing a ring, skirting or heading at a hazard, descending into Class D, circling, sitting on a boundary. Tracks carry none, light, medium or heavy tracker-style position and altitude noise and up to five dropped points, against labels computed on the clean track. 35 % of planning examples use hard layouts — dense restricted areas, narrow gaps, routes under a shelf, goals near a TFR.
Every label comes from the exact geometry oracle (version ring-oracle/1.0) and every route target from its weighted A* planner, followed by exact shortcutting to at most eight waypoints; examples the planner could not solve inside its search limit were dropped. The dimensions are illustrative, not regulatory data.
Recipe: base size, AdamW with a cosine schedule, peak learning rate 6e-4, batch 1,024, seed 7, bf16 autocast. Losses are weighted so that misses cost more than false alarms: hazard-entry positives weigh four times, inside labels on hazard volumes and next-event targets that are hazard entries three times, and action advisories twice.
What it was not trained on: real airspace, charts or NOTAMs; real flight tracks or ADS-B data; polygonal volumes, terrain, weather or traffic.
Evaluation #
| Metric | Value | Source |
|---|---|---|
| Missed hazard entries, held-out tracks | 1.4 % | report.md of the 2026-09-18 Waymark Flight evaluation — 1,500 tracks, 210 hazard entries; the exact check on the same noisy track misses 3.8 % |
| Missed hazard entries, heavy tracker noise | 9.3 % | report.md of the 2026-09-18 Waymark Flight evaluation — the exact check on the same noisy track misses 20.7 % |
| Missed hazard entries, boundary-near | 7.1 % | report.md of the 2026-09-18 Waymark Flight evaluation — within 0.1 NM / 100 ft of a boundary; exact check on the noisy track 8.6 % |
| Inside F1, held-out tracks | 0.987 | report.md of the 2026-09-18 Waymark Flight evaluation — 0.937 boundary-near, 0.951 heavy noise |
| Advisory accuracy, held-out tracks | 0.953 | report.md of the 2026-09-18 Waymark Flight evaluation — 0.879 under heavy noise |
| Next-event ETA error, held-out | 12.9 s MAE | report.md of the 2026-09-18 Waymark Flight evaluation — 34.3 s for slow drones, 9.3 s for fast jets |
| Served route validity | 100 % on every planning set | report.md of the 2026-09-18 Waymark Flight evaluation — model proposal, exact validator and exact-planner fallback |
| Model proposals valid, held-out | 83.9 % | report.md of the 2026-09-18 Waymark Flight evaluation — 27.8 % on dense restricted layouts; fallback rate 32.2 % held-out, 86.6 % dense |
| Median planning time, model / exact planner | 11.1 ms / 1.3 ms | report.md of the 2026-09-18 Waymark Flight evaluation — held-out; the exact planner is faster at the median on every set |
| Validation missed-entry rate (best epoch) | 0.98 % | meta.json — 7,483 validation examples, epoch 22; false-alarm rate 3.6 % |
The figures come from the 2026-09-18 Waymark Flight evaluation (report.md and results.json), scored against the exact oracle on fresh synthetic scenes. Tracking sets have 1,500 tracks each; planning sets 500 requests each. As a baseline the evaluation also runs the exact oracle on the same noisy track the model sees, which is what a checker alone would answer in practice.
| Tracking set | Inside F1 | Tier | Next event | ETA MAE | Advisory | Missed entry | False alarm | Exact on noisy track: missed / false alarm |
|---|---|---|---|---|---|---|---|---|
| Held-out | 0.987 | 0.999 | 0.932 | 12.9 s | 0.953 | 1.4 % | 3.9 % | 3.8 % / 0.7 % |
| Boundary-near | 0.937 | 0.989 | 0.895 | 16.5 s | 0.920 | 7.1 % | 3.5 % | 8.6 % / 1.3 % |
| Dense | 0.992 | 1.000 | 0.927 | 14.3 s | 0.951 | 1.7 % | 5.1 % | 6.8 % / 1.8 % |
| Heavy noise | 0.951 | 0.997 | 0.861 | 24.7 s | 0.879 | 9.3 % | 5.9 % | 20.7 % / 2.1 % |
| Shelf transit | 0.998 | 1.000 | 0.957 | 12.6 s | 0.959 | 0.9 % | 1.7 % | 4.6 % / 0.1 % |
| Slow drones | 0.992 | 0.998 | 0.883 | 34.3 s | 0.922 | 6.9 % | 10.0 % | 21.4 % / 2.1 % |
| Fast jets | 0.981 | 0.999 | 0.937 | 9.3 s | 0.926 | 4.2 % | 4.4 % | 5.5 % / 0.8 % |
On every tracking set the model misses fewer hazard entries than the exact check applied to the same noisy track, and on every set it raises more false alarms — the trade the serving threshold of 0.35 was chosen for. Held-out margin errors are 0.76 NM lateral and 320 ft vertical, and the ceiling error 136 ft; the exact check on the noisy track is far closer on margins, which is why the served response carries both.
| Planning set | Feasibility | Model valid | Goal reached | Length vs exact | Served valid | Fallback | Median ms, model / exact |
|---|---|---|---|---|---|---|---|
| Held-out | 0.990 | 83.9 % | 88.3 % | 1.000 | 100 % | 32.2 % | 11.1 / 1.3 |
| Dense restricted | 0.988 | 27.8 % | 52.0 % | 1.001 | 100 % | 86.6 % | 20.6 / 7.8 |
| Narrow gap | 0.984 | 84.8 % | 85.7 % | 0.971 | 100 % | 33.8 % | 13.1 / 2.5 |
| Under shelf | 0.948 | 86.7 % | 99.0 % | 0.996 | 100 % | 29.8 % | 11.1 / 1.2 |
| Near TFR | 0.986 | 85.6 % | 89.2 % | 1.000 | 100 % | 30.6 % | 12.0 / 1.9 |
| Drones | 0.988 | 85.7 % | 98.2 % | 0.988 | 100 % | 25.0 % | 15.3 / 1.3 |
| Jets | 0.992 | 79.8 % | 70.7 % | 1.001 | 100 % | 43.2 % | 12.8 / 2.2 |
Served validity is the model’s proposal plus the exact validator plus the exact-planner fallback, and it is 100 % on every set by construction. The model alone produces a valid route that reaches the goal in 78 % of held-out requests and 15 % of dense restricted layouts. Stated plainly: the exact planner is faster than the model’s proposals at the median on every planning set (1.3 ms against 11.1 ms held-out), though its 95th percentile reaches 225 ms on dense restricted layouts. The planning decoder is a proposer, not a replacement for the planner.
Known gaps. The ground truth is the oracle on synthetic scenes, so these figures say how well Waymark Flight reproduces exact geometry in its own world, not how it performs on real airspace or real tracker output. No real flight data, no human evaluation and no comparison with a certified system exist. Latencies were measured in the evaluation harness, not through the Falcon API.
API #
| Endpoint | Auth | Body limit | Description |
|---|---|---|---|
POST /v1/airspace/read | Bearer preview key (fln_) or session token (fls_) | 64 KB; ≤ 24 volumes, 1–12 track points | Airspace scene + track + mover → the model’s reading beside the exact check, the more cautious advisory and the disagreements. |
POST /v1/airspace/plan | Bearer preview key (fln_) or session token (fls_) | 64 KB; ≤ 24 volumes | Airspace scene + mover + start + goal → a route of up to 8 waypoints, validated segment by segment; the exact planner decides when the model’s proposal fails. |
Waymark Flight is public on the Falcon API at POST /v1/airspace/read and POST /v1/airspace/plan. Both count against the spatial preview quota bucket, shared with /v1/spatial and /v1/move, and each body is limited to 64 KB. The base URL, envelope, authentication, rate limits and retry guidance are documented in API conventions.
POST /v1/airspace/read HTTP/1.1
Authorization: Bearer fln_…
Content-Type: application/json{
"volumes": [
{"id": "R1", "kind": "restricted", "center": {"x_nm": 0, "y_nm": 0}, "radius_nm": 2, "floor_ft": null, "ceiling_ft": 6000}
],
"track": [
{"t_s": 0, "x_nm": -6, "y_nm": 0, "alt_ft": 2500},
{"t_s": 30, "x_nm": -5.1, "y_nm": 0, "alt_ft": 2500}
],
"mover": "light"
}{
"ok": true,
"engine": "waymark-flight",
"model": {"inside": [], "tier": "none", "under_shelf": false, "next_event": {"volume": "R1", "kind": "enter_lateral", "eta_s": 101}, "hazard_entry": true, "margin_lat_nm": 3.1, "margin_vert_ft": 10000, "ceiling_ft": 18000, "advisory": "turn_away"},
"exact": {"inside": [], "tier": "none", "under_shelf": false, "next_event": {"volume": "R1", "kind": "enter_lateral", "eta_s": 104}, "hazard_entry": true, "margin_lat_nm": 3.1, "margin_vert_ft": 10000, "ceiling_ft": 18000, "advisory": "turn_away"},
"advisory": "turn_away",
"disagreements": [],
"notice": "Decision support and education only. Not certified for navigation."
}/v1/airspace/read takes volumes, track (1–12 points {t_s, x_nm, y_nm, alt_ft}, ascending t_s) and mover (drone, light, helicopter or jet), all required. /v1/airspace/plan takes volumes, mover, start {x_nm, y_nm, alt_ft}, goal ({x_nm, y_nm, alt_ft?} or {land_at: volumeId}), optional allow_controlled (default false) and an optional track, and returns source (model or oracle), feasible, reason when infeasible, waypoints, check (the exact validator’s verdict, with valid and reached), latency_ms and notice; a full plan exchange is under Examples. engine is always ring. The values above are illustrative of the shape.
Errors:
| Status | Code | Meaning |
|---|---|---|
| 400 | bad_json | The body is not valid JSON. A body over 64 KB is refused and the connection closed. |
| 400 | bad_volumes | volumes is missing, empty, over 24, has a duplicate id, an unknown kind or an impossible shape (radius, inner radius, floor above ceiling). |
| 400 | bad_track | track is missing, empty, over 12 points, out of time order or has a non-numeric field. |
| 400 | bad_mover | mover is not drone, light, helicopter or jet. |
| 400 | bad_start | /v1/airspace/plan: start is missing or malformed. |
| 400 | bad_goal | /v1/airspace/plan: goal is missing, malformed, or land_at names no volume in the scene. |
| 401 | invalid_credentials | Missing, malformed or revoked bearer credential. |
| 402 | payment_required | The credential’s owner is not in good standing with the preview. |
| 429 | quota_exceeded | The spatial bucket for the current UTC calendar month is exhausted; kind is spatial. |
| 502 | flight_failed | The Waymark Flight service failed after a valid request; safe to retry once. |
| 503 | flight_warming | The Waymark Flight service is starting after a quiet period; retry after the Retry-After interval (20 s). |
| 503 | flight_unavailable | No Waymark Flight service is configured, or it did not answer; retry once after 2.5 s. |
An infeasible plan is not an error: it answers 200 with feasible: false and a reason such as start_in_blocked, goal_in_blocked, start_in_controlled_no_clearance, goal_outside_envelope, no_route or no_route_without_clearance.
Runtime & deployment #
| Kind | CPU service |
|---|---|
| Resident | One CPU container holding the weights, the exact geometry checker and the exact planner |
| Serving | The Falcon API routes /v1/airspace/read and /v1/airspace/plan, fronting the Waymark Flight service |
| Cold start | Scales to zero when idle; the first call after a quiet period waits a few seconds and may answer 503 flight_warming with Retry-After 20 |
| Concurrency | — |
| Timeout | — |
Waymark Flight runs as a CPU service on Cloud Run, fronted by the Falcon API; a preview key never reaches the service directly. The container holds the weights, the exact geometry checker and the exact planner, and every request runs both the model and the checker. The service scales to zero when idle, so the first call after a quiet period waits a few seconds while it starts and may answer 503 flight_warming with a Retry-After of 20 s; later calls answer in milliseconds of model time plus the network.
- Pairing.
/v1/airspace/readalways returnsmodelandexactside by side;/v1/airspace/planvalidates the model’s proposal segment by segment and falls back to the exact planner, so a served route is always valid under the exact checker. - Selection. There is no request field: both routes are bound to Waymark Flight, and
enginereadsring. - Metering. Both routes count in the spatial bucket, once per call that reaches the service.
- Retries. Retry
503 flight_warmingafterRetry-After; retry503 flight_unavailableand502 flight_failedonce after 2.5 s.
What the host must provide:
- The airspace volumes, from an authoritative source the host is responsible for, converted to the local east/north frame in nautical miles and feet MSL.
- A track from its own tracker, at most twelve points, newest last.
- A presentation that shows the exact reading and the notice, and never presents a Waymark Flight answer as a navigation instruction.
| Setting | Configured value |
|---|---|
| Device | CPU container on Cloud Run |
| Instances | minimum 0 (scales to zero) |
| Cold start | a few seconds; 503 flight_warming, Retry-After 20 s |
| Body limit | 64 KB |
| Quota bucket | spatial |
Limits & safety #
- Not certified for navigation. Not a navigation or safety system; no answer is a clearance or an instruction.
- Synthetic, illustrative airspace: the training scenes use made-up dimensions, and Waymark Flight is not a source of real airspace data.
- The caller supplies the volumes. Waymark Flight does not know real-world airspace, NOTAMs or TFR schedules; a volume the caller leaves out does not exist for it, and
activeis whatever the caller says. - Weakest near boundaries (within a few hundred feet or about 0.1 NM), under heavy tracker noise and for very slow drones. Missed hazard entries in the evaluation: 1.4 % held-out, 1.7 % dense, 0.9 % shelf transit, 4.2 % fast jets, 6.9 % slow drones, 7.1 % boundary-near and 9.3 % under heavy noise.
- False alarms are the price of fewer misses: up to 10 % of slow-drone tracks raise a hazard entry that the clean track does not have.
- The model’s own route proposals fail the exact validator often in dense layouts (27.8 % valid on dense restricted sets); only the served route, after the check and fallback, is guaranteed valid — and only against the volumes supplied.
- Circles and rings only, at most 24 volumes, twelve track points and 18,000 ft; a constant-velocity projection of 300 s cannot anticipate a turn.
Out of scope: real flight operations, dispatch, drone operations of record, and any use where a missed boundary has physical consequences. Hosts should show the exact reading beside the model’s and treat a non-empty disagreements list as a prompt to check, never as a vote.
Fixed weights per version; the model does not learn from requests.
Versions #
| Version | Date | Status | Note |
|---|---|---|---|
| 1.0.0 | Released | First released version. Base size, trained on one L4 and early-stopped at epoch 22 of 40; serves behind /v1/airspace/read and /v1/airspace/plan, always paired with the exact checker. |
Compatibility. A major version bump means the request or response contract changes — a new required field, a different frame or units, or a changed catalogue of volume kinds, movers, tiers, event kinds or advisories — and a host must be updated to read it. A minor bump is a retrain with the same contract: readings and proposals may differ, but the fields and catalogues are the same, and the exact check is unchanged. A patch bump changes only metadata or runtime settings.
Current weights: the best checkpoint (epoch 22) of the 2026-09-18 Vertex AI job, exported as ring.bin, 85,400,498 bytes in float32, base size, 21,348,514 parameters, paired with the exact oracle ring-oracle/1.0. Weights are not distributed during the private preview; see Access.
Weights are not distributed during the private preview.