Skip to content

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_streams catalog table + idempotent seed_aria_data_streams startup 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 list new stream table storage — 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 Sectorwars2102 46bce720.)

Three rules govern the index:

  1. Registry-driven. The index is mirrored by the aria_data_streams catalog table (§ Registry table). Adding a data point ARIA tracks is a registry row plus a writer hook — never a hardcoded enum. The memory_type taxonomy is derived: one type per stream key.
  2. Per-player, always. Every stream is partitioned by player_id under the ADR-0016 isolation rule. A stream records what this player experienced, from their own point of view.
  3. 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

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.tradeARIATradingObservation 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_sighting carries 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).