v1.0.0
Core Architecture Foundations: establish the foundational architecture that all subsequent milestones build upon.
Primary Goals:
- Complete the GDBM to ImmuDB event sourcing migration through all 4 phases: dual-write (Phase 1), dual-primary with rollback (Phase 2), ES-primary with projection reads (Phase 3), and full GDBM removal (Phase 4)
- Establish Wisper as the universal event bus: define and publish all domain events, replace all legacy direct-call patterns (player.output, out_event, room.output, alert), and remove the deprecated reflection-based EventHandler
- Modernize server infrastructure: implement lifecycle hook system, migrate from IO.select to EventMachine reactor pattern, migrate API documentation from RDoc to YARD
- Implement the Trie-based command dispatch router and action middleware pipeline, replacing the O(n) Wisper fan-out for command matching
- Security hardening: upgrade password hashing from MD5 to bcrypt, replace Marshal serialization with Oj/JSON in all persistence paths
- Refactor the Hydration module to use per-class volatile declarations with ancestor chain traversal and thread-safe serialization
- Centralize ES command emission into a single EventSourceService
Acceptance Criteria:
- GDBM is completely removed from the codebase; the gdbm gem is not in dependencies; StorageMachine is deleted
- All persistence flows through Sequent/ImmuDB with Oj/JSON serialization
- Zero legacy direct-call patterns remain: no out_event(), room.output(), player.output(), or alert() in production code
- EventHandler class is deleted; combat delayed events use CombatService, NPC reactions use PriorityQueue
- All commands dispatch through the Trie-based CommandRouter with middleware pipeline
- Server network layer uses EventMachine reactor (no IO.select main loop)
- Lifecycle hooks fire for server, player, and object lifecycle events
- All passwords stored as bcrypt hashes; no MD5 in any code path
- Hydration uses per-class @_volatile_vars with SERIALIZATION_MUTEX
- All tests pass at 97% unit coverage threshold
12% Completed