comparison · c_9608dc0d38ab (tommy-mor) vs c_6c64824b0d83 (tommy-mor)
Side A fixes an actual deadlock bug (holding a RwLock read guard across nested lock acquisitions) with a real code change, adds a regression test, and improves test infrastructure (timeouts, log-file redirection to avoid pipe deadlocks). Side B is purely a planning/design document (PLAN.md) with no code changes, providing aspirational value but no immediate functional or bugfix contribution.
Commit A fixes a real production deadlock (non-reentrant tokio RwLock guards held across nested awaits in RoomCreate/RoomGrant) plus related test harness deadlocks from inherited pipes, and lands a working integration test; commit B only adds a PLAN.md design doc with no executable change.
Side A fixes a substantive concurrency bug by shortening the lifetime of `tokio::sync::RwLock` read guards before nested `read().await`/`write().await`, preventing deadlocks in `RoomCreate` and `RoomGrant`. It also adds an integration test for private room creation and improves test reliability with timeout/logging adjustments, whereas Side B only adds a detailed architectural planning document without changing project behavior.
comparison · c_6c64824b0d83 (tommy-mor) vs c_a337088f57f0 (tommy-mor)
Side B makes concrete, working improvements: it upgrades the dev fixture script to use cargo-watch for live-reload, persist fixture data across runs (rebase/reuse summary), prefer a stable port, and clean up UI markup in forum.rs — all directly usable, testable code changes. Side A is purely a planning document (PLAN.md) with no code changes; while it may guide future work, it has no immediate functional impact and its value depends entirely on future execution, making B's tangible, working tooling improvement more durable/immediately valuable.
A adds a concrete, phased storage/architecture plan (JSONL as source of truth, durable RocksDB projections, RAM bounded to hot scopes, write/read/startup paths) that defines lasting product direction under the 256MB constraint. B only improves local DX (cargo-watch fixture, persistent fixture-data/, preferred port) plus a small room-page markup trim—useful iteration friction reduction, but not fundamental system design.
Side B makes functional improvements to the developer workflow by switching the fixture runner to cargo-watch with persistent fixture data, adding preferred-port selection with fallback, reusing seeded data across runs, extending server startup timeouts, and updating supporting utilities. Side A is an extensive design document describing a future storage architecture and implementation plan, but it does not change project behavior or implement the proposed design.