Pin CultNet publish-after-commit, add write-routed interop, update contract status

- NetworkingTests.CultNetPutInsideCommitPublishesOnlyAfterCommit: a record
  staged in a batch reaches no CultNet observer before the store commits; a
  put made while staging is its own write. Chosen over refusing CultNet writes
  inside a batch, which would need ambient "inside a batch" state.
- Interop peer mode write-routed <catalog.cc> <run.cc>: cultcache.interop-note
  routes to the catalog file, cultcache.interop-run-note to the run file, one
  record each.
- store-composition contract: the C# column reads implemented for routing,
  attach, schema, lookups, globals, batch and conditional commit; overwriting
  a store is open, remove, upsert, flush. persistence-format: C# implements
  batch and conditional commit.
- tests README lists the new suites.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-09-13 17:58:00 +02:00
commit 03a71ebd66
5 changed files with 111 additions and 17 deletions

View file

@ -17,12 +17,21 @@ The tests currently cover:
- `CultCacheMessagePack.OpenAsync`, persisted globals, dirty state, and flush on
dispose
- cache lookups (`Get`, `GetAll`, runtime-type upserts)
- the ambient cache transaction (`ExecuteTransactionAsync`), until Cut 3
replaces it with the explicit batch commit
- `CultCache.Commit` batches on a directory store: visibility after the store
commits, abandoned stages, sealed batches, observers committing again
- explicit Cult document payload codecs, generated metadata, canonical schema
fixtures, and schema drift reports
- hand-written MessagePack snapshot and record serialization
- `StoreRoutingTests`: the Cut 1 store-routing contract, red until Cut 3
- `StoreRoutingTests`: the store-composition contract (routing, attachment is
hydration, read-only stores, global singletons, assignable lookups, batches,
all-or-nothing loads)
- `ConditionalCommitTests`: `Expect`, `ExpectUnchanged`, `TryCommit`, the
single-file lock, strictly increasing `storedAt`, and the same conditions on a
directory store
- `DirectoryStoreDurabilityTests`: failed manifest replace, content-addressed
pages, the commit lease, orphan pages and tampered pages, with faults from
real file locks
- `PreCut2StoreFormatTests`: stores written before Cut 2 still open
Selective hydration, the directory store's stage probes, pre-v4 directory
formats, and the SoA table are no longer in the tree; the SoA table is parked