Bug fix
Fix flaky TestPerCursorReads caused by a race condition in meta updates. Concurrent LoadMeta → modify → SaveMeta cycles (e.g., captureOutput cleanup vs handleRead) could overwrite each other's changes, resetting cursor positions to 0.
Added atomic UpdateMeta to the storage interface so each call site only mutates the fields it owns.
See #11 for details.