namespace XFESystem.Documents; public sealed record StoredDocument(ReadOnlyMemory Content, string Revision, bool IsReadOnly = false); /// The OS filesystem adapter must enforce permissions, bounded reads and atomic compare-and-save. public interface IDocumentStorage { ValueTask ReadAsync(DocumentLocation location, int maximumBytes, CancellationToken cancellationToken); /// Replace the complete file atomically only if the revision still matches. Return its new revision. ValueTask ReplaceAsync(DocumentLocation location, ReadOnlyMemory content, string expectedRevision, CancellationToken cancellationToken); } public sealed class DocumentConflictException(string message) : IOException(message);