0072 — ARIA course plotting, autopilot, and the chart knowledge economy¶
Status¶
Proposed — deferred (Max, 2026-06-28) for a later dedicated session; tracked under the ARIA
deferred design session in DECISIONS.md. Revisit with the ARIA deep-dive.
Context¶
Movement is turn-gated and wall-clock-instantaneous (movement.md): a banked turn pool lets a player burst through a long route in one session, and the worked example in that doc prices a 47-hop leg at ~57 turns with the experience "click, arrive, click, arrive." The turn economy handles distance well. The interface does not:
- The cockpit NAV monitor renders only the current sector plus its adjacent warp ring (
GalaxyMap.tsxreadscurrentSector + availableMoves). A player bound for a sector 40 hops away performs 40 manual hop selections with no course memory between them. - ARIA's route optimization (
plan_trade_cascade,aria-companion.md) is scoped to explored sectors and its pathfinding is target-spec (_find_profitable_paths). A Dijkstra implementation over the sector/warp graph already exists atservices/route_optimizer.pywithMAX_PROFIT / MIN_TIME / MIN_RISK / BALANCEDobjectives, but nothing player-facing consumes it. - ARIA's epistemic rule is architectural and narrative bedrock: ARIA can only see what its player has seen (
aria-companion.md). She cannot plot through a sector she has no knowledge of, and the game offers no mechanism today for acquiring navigational knowledge other than physically flying there — which is the very journey the player cannot plan.
Three knowledge layers already exist in canon and point the way out:
- Terran space and the Central Nexus are pre-discovered for everyone (
sectors.md). - Corp-shared scan knowledge is canonical: a corp-mate's warp discovery propagates to the corp (
sectors.md, with the Nexus-warp tier filter as the one exception per ADR-0064 R-V3). - ARIA's privacy rule forbids sharing ARIA's observations (market intelligence, predictions, memories) across players — but the galaxy's topology is the world's own geometry, not any player's intelligence product.
The distinction between where a sector is and what a sector is like is the load-bearing insight: topology can be bought, shared, and traded without ever breaching the personal-oracle rule. ARIA reads a chart the way any navigator reads a chart — and still says, honestly, that she has never flown the route.
Decision (proposed)¶
Three pillars, phased. ARIA becomes the ship's navigator: she plots courses through the union of what the player has flown and what the player has charted, executes them hop-by-hop as an autopilot, and turns the edge of her knowledge into a visible, purchasable, explorable frontier.
Pillar 1 — Course plotting and autopilot ("lay in a course")¶
Plot. POST /api/v1/nav/plot {target_sector_id, objective} computes a route with the existing route_optimizer.py Dijkstra over the player's known graph:
known graph = visited sectors (ARIAExplorationMap)
∪ pre-discovered space (Terran, Nexus)
∪ corp-shared discoveries
∪ charted sectors (Pillar 2)
The response is a hop list with per-hop turn costs (turn cost is physics, not intelligence — charts and visits price hops identically), total cost, and per-hop annotations: safety rating where ARIA has flown (visit-derived, never available for charted-only hops), tunnel length bands, known one-way directions. Known one-ways are never plotted against their direction; latent one-ways are plotted as charts show them — the trap is preserved by design (see Pillar 2's charted ≠ known rule).
If the target is outside the known graph, the plot returns the nearest known approach instead of failing — the refusal is a quest hook, not a dead end (see Pillar 3).
Engage. The autopilot is client-orchestrated: it executes the plot as a sequence of ordinary moveToSector calls on a visible cadence, one hop at a time, through the same movement service every manual hop uses. Nothing about movement semantics changes — turns charge per hop, encounter checks fire per hop, ARIA records each sector visit, discoveries land normally. The autopilot pauses (never silently continues) on: an encounter interrupt, an insufficient-turn wall, a hop rejection (e.g. a latent one-way bouncing the ship back), or any manual player action. It runs only while the session is live — a closed client is a parked ship, not a botting surface.
Cockpit surface. The NAV CHART accepts a destination (click a charted sector, or search by number); ARIA draws the course as a lit thread through the chart. The helm rail gains the course control: ENGAGE AUTOPILOT — 38 HOPS · 41 TURNS, with ABORT while underway. The viewscreen flies through every system on the way; the journey remains a journey.
Consciousness scaling. Plotting quality follows the existing tier ladder (aria-companion.md): Dormant plots shortest-path only; Awakened offers the MIN_RISK alternative built from visit-derived safety ratings; Transcendent re-plots mid-course around fresh hazard intelligence. The tiers differentiate the navigator, not the physics.
Pillar 2 — Charts: the navigational knowledge economy¶
A new per-player knowledge table (working name player_known_sectors: player_id, sector_id, source, learned_at, with source ∈ visited | public | corp | chart | probe) records topology knowledge distinct from ARIA's visit-anchored exploration map. The pathfinder reads the union; ARIA's market intelligence, predictions, and safety ratings remain keyed to actual visits and are never populated by any chart mechanism.
Acquisition ladder, cheapest to deepest:
| Source | Mechanism | What it teaches |
|---|---|---|
| Federation public charts | Free, ambient — formalizes the existing pre-discovered Terran/Nexus layer as a public knowledge source |
Fedspace + Nexus topology for every player |
| Cartography desk | A station service: ports sell regional chart packets (topology of the surrounding cluster/zone) for credits; price scales with zone danger | Sectors + warps in the packet's coverage; marked one-way directions |
| Corp chart sharing | Corp-mates' discovered topology auto-shares (extends the canonical corp-shared scan knowledge rule from warps to sector topology) | Everything any corp-mate has flown |
| Survey probes | A consumable launched from the current sector; walks the warp graph N hops over scaled real time, mapping topology; destructible in hostile space | Fresh frontier topology without risking the hull |
| Player chart trading | A player exports a chart packet of their own explored topology as a tradeable item (contracts / direct trade) | The explorer archetype gets an economy |
Charted ≠ known — the hard rule that keeps exploration alive. Charted-only sectors render as dim wireframe on the NAV CHART ("paper space"); flown sectors render full. Charts never carry: market data, ARIA predictions, safety ratings, hazard observations, latent one-way reveals, or any other player's ARIA content. A charted latent one-way looks bidirectional and still bites; a charted pirate den looks like any other paper sector. ARIA's line for a charted hop is the design contract: "I can plot through charted space, but I've never flown it — expect surprises."
Privacy boundary. Chart packets contain world geometry only (sector_ids and warp edges). The hard architectural rule in aria-companion.md — no cross-player flow of ARIA intelligence — is untouched: an exported chart is a map of the territory, never the seller's notes about it.
Pillar 3 — The navigator's voice¶
ARIA's console strip and the narration catalog (aria-companion.md) carry the feature's personality:
- Command grammar. "plot a course to 1001" typed into the ARIA strip resolves to the plot API (deterministic command parsing; LLM flavor optional on top). The course renders; the helm shows ENGAGE.
- Catalog additions (per-event suppression per existing conventions): course laid in (
P-N1), autopilot paused with reason (P-N2), destination arrival with journey summary (P-N3), and the frontier refusal (P-N4) — the feature's soul:
"Sector 1001 is twelve hops beyond my charts. Nearest charted approach is 889. The cartography desk at Industrial Hub Pollux sells the Vega Reach packet — or we fly it the old way and I'll learn the route for good."
Every refusal names the nearest approach, a concrete acquisition option, and the exploration alternative. ARIA's limit becomes the game's invitation.
- Exploration suggestions (aria-companion.md, design-only today) feed naturally into this surface: adjacent unexplored sectors are "opportunities to extend my charts."
Phasing¶
| Phase | Scope | Schema impact |
|---|---|---|
| 1 | Plot + autopilot through the existing known graph (visited ∪ pre-discovered ∪ corp), NAV CHART course thread, helm/strip surfaces, P-N1–P-N4 | None |
| 2 | player_known_sectors table, Federation public layer, cartography desk packets |
One additive table |
| 3 | Corp chart sharing, survey probes | Probe rows |
| 4 | Player chart trading via contracts | Contract integration |
Phase 1 alone retires the 40-click problem for all space the player can already see, with zero new game mechanics — it is orchestration over the existing movement service.
Constraints and non-goals¶
- No server-side movement loop. Every hop is an individually authorized move through the existing service; the autopilot cannot outrun, under-pay, or skip encounter checks, and it stops when the session ends.
- No turn-economy changes. The autopilot spends exactly what manual clicking spends. Distance is already priced.
- No ARIA oracle breach. No chart mechanism populates market intelligence, predictions, or safety ratings. Visit-gated intelligence stays visit-gated.
- Fleet autopilot is out of scope until fleet movement itself is live (fleet endpoints are currently dead; see FINDINGS).
- Subscription gating applies to plots: a free-tier plot terminates at the Nexus boundary exactly as traversal does (the P-F3 narration already covers the upsell).
Open decisions (Max)¶
- Chart packet pricing model and coverage radius (per-cluster vs per-zone packets).
- Survey probe stats: cost, hop range, walk speed, destructibility odds.
- Player-chart export: free-form region slices vs fixed packet shapes; whether a sale teaches
source='chart'permanently or as a time-limited lease. - Autopilot cadence (hops per second) — fast enough to feel like travel, slow enough that the viewscreen journey reads.
- Whether Awakened+ ARIA may auto-pause a plotted course on entering any sector whose visit-derived safety rating is below threshold (proactive caution vs player agency).
Cross-references¶
FEATURES/gameplay/aria-companion.md— epistemic rule, consciousness tiers, narration catalog, privacy rules.FEATURES/gameplay/movement.md— movement primitives, turn costs, the worked 108-turn journey.FEATURES/galaxy/sectors.md— discovery state, one-way and latent warps, navigation aids (A* listed as design target).FEATURES/galaxy/warp-gates.md, ADR-0030 — the long-distance primitives this complements (gates and Quantum Jump remain the fast options; plotting makes the ordinary option humane).- ADR-0034 — latent one-way semantics the charted ≠ known rule preserves.
- ADR-0038 — the visit-anchored learning model charts must not pollute.
services/gameserver/src/services/route_optimizer.py— existing Dijkstra engine (target consumer of Pillar 1).