feat: MemPalace × Evennia fleet memory scaffold (#1075)
Add foundational architecture for the MemPalace × Evennia integration
milestone. All sub-issues (Phase 1–4 and infra) can now build on top
of this scaffold.
**nexus/mempalace/**
- `config.py` — MEMPALACE_PATH, FLEET_PALACE_PATH, FLEET_WING, CORE_ROOMS
- `searcher.py` — `search_memories()`, `search_fleet()`, `add_memory()`,
`MemPalaceResult`, `MemPalaceUnavailable`; ChromaDB imported lazily
**nexus/evennia_mempalace/**
Commands:
- `CmdRecall` — `recall <query>` / `recall <query> --fleet`
- `CmdEnterRoom` — `enter room <topic>` teleports to a palace room
- `CmdRecord` / `CmdNote` / `CmdEvent` — write decisions, breakthroughs,
and events into the palace (Phase 4)
Typeclasses:
- `MemPalaceRoom` — room whose description auto-populates from palace search
- `StewardNPC` — answers player questions via wing memory search (Phase 3)
All classes use a graceful Evennia stub so the module imports cleanly
outside a live Evennia/Django environment.
**docs/mempalace/rooms.yaml** (#1082 deliverable)
Fleet-wide room taxonomy standard: 5 required core rooms, 3 write rooms,
optional domain rooms, tunnel policy, and privacy rules.
**tests/**
- `test_mempalace_searcher.py` — 20 tests covering config, ChromaDB mocking,
search/add, error paths
- `test_evennia_mempalace_commands.py` — 20 tests covering all commands,
`_closest_room`, `_extract_topic`, StewardNPC responses
40 new tests, all passing.
Refs #1075