Skip to content

0008 — Ship Registry Overhaul

Status

Folded into SYSTEMS/ship-registry.md

Context

A central Ship Registry separates possession (current pilot) from ownership (registered owner of record), replacing the single Ship.owner_id foreign key. It carries an append-mostly history table, an immutable REG-XXXX-YYYY registration number, the six ownership-affecting events (Drift, Borrow, Trade, Abandon, Salvage, Steal), the 30% legal-salvage transfer with a 24h dispute window, and Wanted Status for stolen-ship pilots. The full durable rule now lives in the target spec; this ADR remains as the append-only audit trail.

  • SYSTEMS/ship-registry.md — full launch-target spec (purpose, registration format, six-event state machine, hatch-pin lock, salvage break, trading, abandonment, stolen-report flow, Wanted Status effects, eject + board flow).
  • FEATURES/gameplay/ships.md — manual-eject and ship-registry section; "Ownership and piloting" reframing (no more "active ship").
  • FEATURES/gameplay/ranking.md — stolen-ship triggers; Wanted Status subsection.
  • DATA_MODELS/ships.mdShip model field changes; ShipRegistry table target spec.
  • DATA_MODELS/player.mdPlayer.wanted_status boolean.
  • FEATURES/galaxy/sectors.md — movement reject condition uses Player.current_ship_id IS NULL.
  • GLOSSARY.md — Borrowed, Drifting, Registration Number, Stolen, Wanted Status, Hatch Pin, Salvage Break, Trading, Abandoned entries.
  • services/gameserver/src/services/ship_registry_service.py — target service.