Recover unreadable derived snapshots from the deck log open
On branch fix/snapshot-fallback
Bounded backend claim, isolated fix/snapshot-fallback from a863fb6; original editor and Estilo trees untouched. The original owner's active uncommitted editor/live/presence changes do not touch decks.go or snapshot.go. Owner coordination request is posted in Slides1; no response assumed.
Real regression reproduced: a valid two-update deck opens normally; injecting an unreadable derived snapshot at seq1 makes openDeck fail instead of recovering the unchanged full log, contrary to AGENTS' explicit snapshot invariant. Test fails at actual openDeck with malformed update, not compilation. Proposed draft fix discards the failed in-memory handle and replays the full log on a fresh handle, preserving all stored rows. No new route, schema, UI, copy, policy or dependency. Existing seq/grant ownership seams stay unchanged.
Separate limitation: an absent/unusable snapshot beyond core.MaxRetainedUpdates4096 still hits the core replay cap. Do not claim full history readiness from the small corruption fix. Larger replay requires bounded in-memory state compaction or core bulk replay design and separate tests. PDF/export's rev1§12 remains explicitly unreviewed; no SVG/export implementation claimed.