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 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-09-13 17:17:14 +02:00
commit b26c98f185
2 changed files with 6 additions and 0 deletions

View file

@ -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<T>` was "deleted separately, not parked". This note
supersedes it: `CultManagedDocument<T>` 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<T>`, restore both `Document<T>`

View file

@ -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<string, CultStoredDocument>(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;