From b26c98f18502cc6d79ea983dbe059dfe8da1ef9c Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 13 Sep 2026 17:17:14 +0200 Subject: [PATCH] Note that CultManagedDocument is parked with SoA; state the page load rule The parked/cultcache-soa tag message says the managed document was deleted separately. parked-features.md now supersedes that; the tag is unchanged. The directory store gains its design statement and a comment that only manifest-named pages are loaded. Co-Authored-By: Claude Opus 5 --- docs/parked-features.md | 4 ++++ .../DirectoryMessagePackBackingStore.cs | 2 ++ 2 files changed, 6 insertions(+) diff --git a/docs/parked-features.md b/docs/parked-features.md index eda55694..aa65294b 100644 --- a/docs/parked-features.md +++ b/docs/parked-features.md @@ -20,6 +20,10 @@ can be restored instead of reinvented. reactive POCO handle added with the SoA storage in 5428870 "Make SoA cache-managed document storage". Same tag, same intent: the document stays a POCO while the cache owns its columnar storage. +- Tag message correction: the `parked/cultcache-soa` tag message says + `CultManagedDocument` was "deleted separately, not parked". This note + supersedes it: `CultManagedDocument` is parked under the same tag and is + restored alongside SoA. The tag itself is left as written. - Consumers when parked: none outside tests. - Restore: `git show parked/cultcache-soa:src/GameCult.Caching/CultManagedDocument.cs`, take the SoA types and `CultManagedDocument`, restore both `Document` diff --git a/src/GameCult.Caching.MessagePack/DirectoryMessagePackBackingStore.cs b/src/GameCult.Caching.MessagePack/DirectoryMessagePackBackingStore.cs index fd8d3c26..13264e6f 100644 --- a/src/GameCult.Caching.MessagePack/DirectoryMessagePackBackingStore.cs +++ b/src/GameCult.Caching.MessagePack/DirectoryMessagePackBackingStore.cs @@ -11,6 +11,7 @@ using MessagePack; namespace GameCult.Caching.MessagePack; +// A small hot manifest indexes the store; each record lives in one cold content-addressed page. public sealed class DirectoryMessagePackBackingStore : CacheBackingStore { private const string IndexedFormatVersion = "cultcache.store.v4.directory-content-addressed-pages"; @@ -60,6 +61,7 @@ public sealed class DirectoryMessagePackBackingStore : CacheBackingStore var loaded = new Dictionary(StringComparer.Ordinal); using (AcquireCommitLease()) { + // Only pages named by the manifest read under the lease are loaded; orphaned pages are never loaded. var manifest = ReadManifest(); Trace($"manifest records={manifest.Records.Length}"); _durableCatalog = manifest.SchemaCatalog;