cultcache-rs: expose a store's schema catalog (versions) to consumers #167

Merged
libby merged 2 commits from rs-snapshot-schema-version into main 2026-11-13 18:49:47 +00:00
Member

Cut cultlib-gaps:cut_spec:cut-cut-rs-snapshot-schema-version.r1.

Adds public read-only SchemaCatalogEntry (schema_id, schema_name, schema_version, content_hash, compatible_schema_ids), SingleFileMessagePackBackingStore::pull_schema_catalog (shared lock, absent file or legacy array is an empty catalog) and resolve_schema_entry (own id first, else first entry listing it as compatible, as the decoder does). Decoder, encoder and CultCacheEnvelope are unchanged.

Tests (tests/schema_catalog.rs, consumer-side, public API only): Rust-written two-type store, compatible-listed id, owner-over-lister, legacy/absent, and the C#-written golden tests/vectors/key-identity/foreign-store.cc (existing; no dotnet run). Each hand-mutated red.

Note: the Rust writer publishes <schema id>.v1 for every type (no version attribute), so test 1 distinguishes types by their per-id version string rather than by differing numeric versions.

🤖 Generated with Claude Code

Cut cultlib-gaps:cut_spec:cut-cut-rs-snapshot-schema-version.r1. Adds public read-only `SchemaCatalogEntry` (schema_id, schema_name, schema_version, content_hash, compatible_schema_ids), `SingleFileMessagePackBackingStore::pull_schema_catalog` (shared lock, absent file or legacy array is an empty catalog) and `resolve_schema_entry` (own id first, else first entry listing it as compatible, as the decoder does). Decoder, encoder and `CultCacheEnvelope` are unchanged. Tests (tests/schema_catalog.rs, consumer-side, public API only): Rust-written two-type store, compatible-listed id, owner-over-lister, legacy/absent, and the C#-written golden tests/vectors/key-identity/foreign-store.cc (existing; no dotnet run). Each hand-mutated red. Note: the Rust writer publishes `<schema id>.v1` for every type (no version attribute), so test 1 distinguishes types by their per-id version string rather than by differing numeric versions. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
cultcache-rs: expose a store's schema catalog entries (version, hash, compatible ids) and the decoder's id lookup
Some checks failed
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Has been cancelled
adfa91d300
SingleFileMessagePackBackingStore::pull_schema_catalog reads the catalog under the shared lock pull_all takes; resolve_schema_entry resolves a record's schema id as the decoder does. Decoder, encoder and CultCacheEnvelope unchanged.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cultcache-rs: pin catalog versions that differ from <name>.v1 and first-lister resolution (tests only)
All checks were successful
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Successful in 21m27s
2dd16e8512
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
libby merged commit 70f21da06a into main 2026-11-13 18:49:47 +00:00
libby deleted branch rs-snapshot-schema-version 2026-11-13 18:49:47 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/CultLib!167
No description provided.