ARIA Data Index¶
The canonical registry of every observation stream ARIA learns from. Per ADR-0092, this index is the single source of truth for what ARIA tracks: each stream's trigger, payload, storage, retention, and player-facing transparency surface. The dialogue engine's retrieval tools, the memory-journal browser, and the consciousness memory-diversity rule all derive from this registry.
Status: ✅ Shipped (registry) —
aria_data_streamscatalog table + idempotentseed_aria_data_streamsstartup hook (main.py:187-197) mirror all 21 stream keys in this index;GET /ai/data-index(enhanced_ai.py:883) serves the registry. Several rows still listnew stream tablestorage — registry rows exist but dedicated writer/storage for those streams remains 🚧 partial. No doc-only stream keys missing from the seeder on tip. (re-verified 2026-08-21 vs Sectorwars210246bce720.)
Three rules govern the index:
- Registry-driven. The index is mirrored by the
aria_data_streamscatalog table (§ Registry table). Adding a data point ARIA tracks is a registry row plus a writer hook — never a hardcoded enum. Thememory_typetaxonomy is derived: one type per stream key. - Per-player, always. Every stream is partitioned by
player_idunder the ADR-0016 isolation rule. A stream records what this player experienced, from their own point of view. - Transparent by default. Every stream is visible to its player in the memory-journal browser unless its registry row says otherwise. ARIA's inputs are inspectable — the player can always see what their companion has seen.
Registry table¶
aria_data_streams
key String PK -- e.g. "commerce.trade"
domain Enum: nav | commerce | threat | asset | social | meta
display_name String -- memory-journal label
description Text -- player-readable one-liner
trigger_event String -- the game event that writes it
payload_schema JSONB -- JSON-schema of the payload fields
storage_table String -- where rows live
retention_class Enum: permanent | rolling_90d | budget_pruned
transparency_visible Boolean default true
version Integer -- bumped on payload-schema change
Retention classes: permanent rows survive until player deletion (cascading delete per ../OPERATIONS/aria.md § Privacy); rolling_90d rows age out at 90 days; budget_pruned rows are evicted oldest-first by the nightly prune pass when the player approaches the 10 MB storage cap (ADR-0051 SK31). The prune pass covers every budget_pruned stream in this index.
The streams¶
Navigation (nav)¶
| Key | Trigger | Core payload | Storage | Retention |
|---|---|---|---|---|
nav.sector_visit |
Move commit into a sector | sector_id, timestamp, visit_count, hazards observed on arrival | ARIAExplorationMap |
permanent |
nav.warp_discovery |
Warp reveal (scan / traversal_attempt / corp_share / aria_inference) | warp_layer, warp_id, visibility_state, revealed_via | player_warp_knowledge |
permanent |
nav.formation_sighting |
First detection of a special formation | formation_id, detection method | player_formation_knowledge |
permanent |
nav.chart_acquisition |
Chart packet learned (purchase / corp share / probe return) | source, sector set, learned_at | player_known_sectors (ADR-0072 Pillar 2) |
permanent |
nav.echo_outcome |
Conjectural hop confirmed or refuted (ADR-0092 §6 speculative plots) | predicted edge, actual outcome, confidence at prediction | new stream table | rolling_90d |
Commerce (commerce)¶
| Key | Trigger | Core payload | Storage | Retention |
|---|---|---|---|---|
commerce.port_catalog |
Dock / market view | station_id, commodity set offered, buy/sell directions, port class | ARIAMarketIntelligence (per-commodity rows) |
budget_pruned |
commerce.price_observation |
Market view (deduped per window) | station_id, commodity, price, quantity, timestamp | ARIAMarketIntelligence.price_observations |
budget_pruned |
commerce.trade |
Trade completion | the ADR-0038 observation row: commodity, action, stations, quantity, price, profit, outcome | ARIATradingObservation |
budget_pruned |
commerce.haggle |
Haggling exchange resolves | station_id, commodity, style used, offer path, outcome | new stream table | budget_pruned |
commerce.contract |
Contract accepted / completed / failed / expired | contract_id, type, counterparty station, outcome, net | new stream table | budget_pruned |
Threat (threat)¶
| Key | Trigger | Core payload | Storage | Retention |
|---|---|---|---|---|
threat.combat |
Combat resolution involving the player | opponent ship type, NPC archetype or player-flag, outcome, hull at exit, weapon used, sector | ARIAPersonalMemory (type threat.combat) |
budget_pruned |
threat.drone_encounter |
Sector-defense or hostile drones engaged or observed | sector_id, drone count band, owner class, outcome | new stream table | budget_pruned |
threat.mine_encounter |
Nav-hazard mine detected or struck | sector_id, hazard type, detected-vs-struck, damage | new stream table | budget_pruned |
threat.npc_sighting |
NPC presence observed on sector arrival | sector_id, archetype, faction, disposition, timestamp | new stream table | rolling_90d |
threat.player_sighting |
Another player's ship observed in-sector | sector_id, ship type, displayed name, timestamp | new stream table | rolling_90d |
Assets (asset)¶
| Key | Trigger | Core payload | Storage | Retention |
|---|---|---|---|---|
asset.ship_event |
Ship acquired / upgraded / damaged / repaired / insured / lost | ship_id, event class, before/after summary | new stream table | budget_pruned |
asset.cargo_event |
Cargo loaded / jettisoned / salvaged / stolen | commodity, quantity, cause, sector | new stream table | budget_pruned |
Social (social)¶
| Key | Trigger | Core payload | Storage | Retention |
|---|---|---|---|---|
social.team_event |
Team join / leave; knowledge share received | team_id, event class, share provenance | new stream table | permanent |
Meta (meta)¶
| Key | Trigger | Core payload | Storage | Retention |
|---|---|---|---|---|
meta.dialogue |
ARIA exchange (question asked, answer mode local/deep) | intent class, mode, resonance spent, timestamp | ARIAPersonalMemory (type meta.dialogue) |
budget_pruned |
meta.recommendation_feedback |
Recommendation accepted / dismissed / outcome observed | recommendation_id, action, realized outcome | ai_recommendations feedback fields |
budget_pruned |
meta.onboarding |
First-login dialogue milestones | milestone key, timestamp | ARIAPersonalMemory (type meta.onboarding) |
permanent |
memory_type canon keys¶
ARIAPersonalMemory.memory_type values are registry keys, not free-form strings — one type per stream key in this index for every ARIAPersonalMemory-backed stream (threat.combat, meta.dialogue, meta.onboarding, and any future stream that lands on ARIAPersonalMemory storage). Existing rows were migrated to their canon keys ('combat' → 'threat.combat', etc.) — the one-time migration ratified by ADR-0093 item 2, which also explicitly leaves 'market' unmigrated pending the Pending-P1 ruling below (folded from ADR-0093, re-verified 2026-08-07).
Open — market memory_type (Pending). The live trade hook writes a 'market' ARIAPersonalMemory row that duplicates the canon commerce.trade → ARIATradingObservation row written by the same hook; no ARIAPersonalMemory-backed registry key exists for 'market', so it was left unmigrated. Two options are open: (a) retire the redundant write; (b) register a dedicated ARIAPersonalMemory-backed market stream key. Tracked as the aria-market-memory-type Pending entry in the repo-root DECISIONS.md.
Privacy boundaries¶
Streams record the player's own experience and never more:
threat.player_sightingcarries only what the player's client legitimately displayed: ship type, shown name, sector, time. Never cargo, credits, destination, cloaked presence, or any state the player could not see.- No stream ever contains another player's ARIA content, market intelligence, or observations (ADR-0016).
- Chat/message contents between players are not an ARIA stream.
ARIAPersonalMemory-backed streams are encrypted at rest like every memory row.
Consumers¶
| Consumer | Reads |
|---|---|
| Recommendation engine (ADR-0038) | commerce.*, nav.sector_visit |
| Course plotting / cascade planning | nav.* |
| Narration kernel (ADR-0068) | trigger-adjacent streams per catalog row |
| Deep Brain retrieval tools (ADR-0092 §3) | any stream, read-only, scoped by this registry |
| Memory-journal transparency browser | every stream with transparency_visible |
| Consciousness memory-diversity rule | distinct stream keys present in the player's dataset |
Memory diversity¶
Consciousness promotion (../FEATURES/gameplay/aria-companion.md § Consciousness tiers) measures breadth as distinct stream keys with at least one row in the player's dataset. Per-tier diversity thresholds (ratified by Max, 2026-07-10), against this registry's 21 canon streams:
| Promotion | Distinct streams required |
|---|---|
| → Aware | 3 |
| → Awakened | 6 |
| → Sentient | 10 |
| → Transcendent | 14 |
These thresholds are the canon target and supersede the interim raw-count rule currently shipped in aria-companion.md's progression table (its 10/30/75/150 memory-count column). See ADR-0092's addendum for the ruling record; the tier names above are the reconciled canonical sequence (see ADR-0093's tier-naming amendment).
Related¶
- ADR-0092 — the architecture this index serves.
player.md— ARIA tables and Player columns.../OPERATIONS/aria.md— storage budgets, prune pass, encryption, retention compliance.../FEATURES/gameplay/aria-companion.md— player-facing capability framing.