d85dde52c4
- seal() now runs before the final dispose close() and bumps the disk epoch: work an event handler enqueues while dispose awaits the closing tail is superseded, and an already-running fenced or authoritative rewrite fails its commit guard at the rename fence instead of publishing over a file a revival reopened. - The authoritative repair path resets the disk tail itself, escaping the close() serialization, and would atomically publish the emptied entry list; it now no-ops once sealed and commit guards also check the seal. - Execution-time gates cover the queued title persist and fenced rewrite callbacks; setSessionName/appendCustomEntry attempted by a handler that outlives dispose are dropped and covered by the seal regression, and a failed atomic batch across the seal can no longer truncate the file.