# v1.0 MVP — Archived Requirements

**Archived:** 2026-05-17 at milestone close
**Status:** SHIPPED — 38 active reqs complete, 11 relegated to Full Parity backlog
**Tag:** `v1.0`

## v1 Requirements (all 49)

### Extraction (Phase 1) — all complete

- [x] **EXT-01**: extract-gmd reads client `.gmd` and emits all GML scripts
- [x] **EXT-02**: extract-gmd emits all DnD action graphs (parser via 01-04; emit via 01-05)
- [x] **EXT-03**: extract-gmd emits all room layouts
- [x] **EXT-04**: extract-gmd emits sprites/sounds/fonts/backgrounds as native binary (Option A pivot: opaque BMP carried forward; BMP→PNG deferred to asset-pipeline)
- [x] **EXT-05**: extract-gmd reads server `.gmd` through same pipeline
- [x] **EXT-06**: All extracted artifacts committed to git
- [x] **EXT-07**: Re-extraction byte-identical
- [x] **EXT-08**: `decomp/TOOLS.md` documents era-appropriate decompiler stack

### Client Engine Documentation (Phase 2) — all complete

- [x] **CDOC-01**: 11 subsystem MDs at `docs/extracted-engine/` (commit `ad1e0c7`)
- [x] **CDOC-02**: Asset catalogue at `docs/extracted-engine/asset-catalog/index.{json,md}` (commit `31fc746`)
- [x] **CDOC-03**: Feature-vs-engine matrix — Phaser 3.90 = 286, Phaser 4.1 = 286, PixiJS 8.18 = 201 (commit `cd6eedf`)
- [x] **CDOC-04**: ADR 0001 locks Phaser 3.90.0 for Phase 6+7 (commit `8190e09`)

### Server Documentation (Phase 3) — all complete

- [x] **SDOC-01**: `docs/extracted-server/` — 11 subsystem MDs
- [x] **SDOC-02**: 39dll wire-protocol opcode table
- [x] **SDOC-03**: `.bno`/`.bnb`/`.bnu` field-by-field schemas (Drizzle 8-table baseline in `packages/db`)
- [x] **SDOC-04**: ADR 0002 persistence layer (SQLite + Litestream)
- [x] **SDOC-05**: Closed parity-feature checklist locked
- [x] **SDOC-06**: ADR 0003 canonical-snapshot resolution

### Server Rebuild (Phase 4) — all 14 complete

- [x] **SRV-01..07**: protocol package + game-logic step() + Colyseus Room + authority enforcement + 30 Hz tick + heartbeat + token-bucket rate limit
- [~] **SRV-08**: SIGTERM grace ✓ (impl + unit + int); kill -9 mid-tick verification ⏳ DEFERRED to Phase 5 staging — outcome partial but acceptable for v1.0 since SIGTERM is the primary Fly.io shutdown signal
- [x] **SRV-09**: Better-Auth + argon2id from packet 1
- [x] **SRV-10**: Legacy-account migration with transparent rehash
- [x] **SRV-11**: Forced password-change flow for weak/plaintext legacy passwords
- [x] **SRV-12**: Anti-port: typed admin stubs + lint-no-clipboard-rce (RCE-surface forcing function)
- [x] **SRV-13**: RoomRegistry runtime + build-time hot-reload + Ed25519-signed manifests
- [x] **SRV-14**: Moving-platform protocol envelope (no platforms shipped in MVP; envelope ready)

### Deploy (Phase 5) — all complete

- [x] **DEP-01..08**: Multi-stage Dockerfile, fly.staging.toml + fly.prod.toml, Litestream + Tigris, GH Actions pipeline (later swapped to operator-local), /health, pino + OpenObserve, RESTORE.md drilled, WS proxy idle timeout aligned
  - Note: CI pipeline (DEP-04) **swapped** to operator-local `flyctl deploy` at 06.7-09 (2026-05-17) after GH Actions storage quota exhausted. Local deploy path documented at `docs/deploy/LOCAL-DEPLOY.md`.

### Client Rebuild — MVP Gate (Phase 6) — all complete

- [x] **CLI-01..09**: Vite + Phaser 3 client, WSS handshake with PROTOCOL_VERSION check, login + game scenes, client-prediction + reconcile (06.7 made reconcile a self-noop; remote interp preserved), chat HUD, HiDPI nearest-neighbor + integer scale, asset pipeline w/ content-hashed manifest, **CLI-08 cleared** at `1f6073e` HUMAN-UAT round 2 PASS, disconnect/reconnect within grace
- [x] **AST-01**: Sprite atlas (BMP→PNG via sharp) + one background; content-hashed manifest

### Relegated to Full Parity backlog (2026-05-17)

11 reqs preserved in `.planning/todos/pending/2026-05-17-phase-7-full-parity-backlog.md`:
- AST-02 (MIDI→OGG vintage soundfont)
- AST-03 (BMP fonts → WOFF2 / sprite-strip atlases)
- AST-04 (Asset manifest content-hashed for cache-bust)
- PAR-01..08 (Full feature parity: client + server full surface, all rooms, full chat, .bnu migration, multi-room + presence, modernized admin UI, closed parity checklist drained)

## Traceability — final v1.0 status

| Req | Phase | Final status |
|---|---|---|
| EXT-01..08 | 1 | ✓ Complete |
| CDOC-01..04 | 2 | ✓ Complete |
| SDOC-01..06 | 3 | ✓ Complete (Linux CI verify deferred per HUMAN-UAT) |
| SRV-01..07,09..14 | 4 | ✓ Complete |
| SRV-08 | 4 | ~ Partial (kill -9 mid-tick verify deferred — see 04-HUMAN-UAT.md Test 1) |
| DEP-01..08 | 5 | ✓ Complete (DEP-04 swapped to local deploy at 06.7-09) |
| CLI-01..09 | 6 + 06.x | ✓ Complete (CLI-08 cleared via 06.7 `1f6073e`) |
| AST-01 | 6 | ✓ Complete |
| AST-02..04 | — | Relegated to Full Parity backlog |
| PAR-01..08 | — | Relegated to Full Parity backlog |

**Coverage:** 49 v1 reqs total → 38 satisfied + 1 partial (SRV-08) + 11 relegated.

---
*Archived 2026-05-17.*
