---
name: gap_analysis_snapshot_2026_03_27
description: Spec vs implementation gap analysis - what exists, what is missing, what is partially done as of 2026-03-27.
type: project
---

Snapshot of implemented vs spec'd features as of 2026-03-27.

**Fully implemented (verified in code):**
- Combat: timer-based (next_attack_at), buffs/debuffs, derived stats (EffectiveAttack/Defense/Speed per spec formulas)
- 13 enemies with level bands, band-based scaling (bandDelta/overcapDelta)
- 15 weapons (daggers/swords/axes), 18 armor (light/medium/heavy with sets)
- XP v3 piecewise curve, LevelUp v3 with slow stat growth (30/40/50/60/100)
- HP NOT restored on level-up (confirmed in code comment + logic)
- Auto-equip via combatRating, auto-sell
- Offline simulator (30s tick)
- Adventure log, hero position persistence, per-buff quotas
- Server-owned map generation (world.Service), ETag-based caching
- WebSocket hub for real-time state push

**Partially implemented (design doc + migration + frontend UI, no backend handler/storage):**
- Quest system: migration 000006 exists with towns/npcs/quests/hero_quests tables; frontend has QuestLog.tsx and NPCDialog.tsx; types.ts has Town/NPC/Quest/HeroQuest interfaces; BUT no backend storage layer, handler, or router wiring

**Not implemented:**
- Hero name entry (spec S1.2): no name input screen, no uniqueness check, no name above model
- Item level (ilvl) system (spec S6.4): no ilvl field on items, no L(ilvl)*M(rarity) scaling
- Extended equipment slots (spec S6.3): only main_hand (WeaponID) and chest (ArmorID); no head/legs/feet/cloak/neck/finger/off_hand/wrist/quiver
- Bows, crossbows, ammunition (spec S5.1, S5.3): weapon types only daggers/swords/axes
- Shared world / other players (spec S2.3)
- Duel system (spec S2.3)
- NPC encounters on map (spec S2.4)
- Cities/towns on map visual (spec S2.5) - towns exist in DB schema but not rendered
- Buildings/structures collision (spec S2.6)
- Collision detection (spec S2.2)
- Achievements (spec S10.3)
- Daily/weekly tasks (spec S10.1, S10.2)

**Why:** Baseline for prioritizing next sprint work.
**How to apply:** Use as reference when planning features; items marked "partially implemented" are lowest-hanging fruit.
