Append update to roomId's log.
Replace the room's log with a freshly compacted state (called periodically).
Hard-delete a room.
Load any saved updates for roomId and return them as a single merged blob.
Read one log by its FILE path, without mapping a room id to a name. For
callers that enumerate the data dir (the blob-GC scan) and must read a
file whose name is not a well-formed encodeURIComponent output.
Same result contract as load: null for an empty or unparseable log.
Set requireComplete for GC: an incomplete suffix may hide blob references.
The default retains complete-prefix recovery for ordinary room loads.
OptionalrequireComplete: boolean
Append-only file-per-room persistence.
Update layout: each
append()writes one frame[length:u32][bytes]to<dataDir>/<sanitizedRoomId>.log.load()reads the file and returns the concatenated payload.Compaction rewrites the log atomically by writing to a temp file then renaming.