CultLib/packages
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens eb74ead837 Restore cross-runtime schema recovery and prove staging cleanup
Taking the standalone body as the CultCache base dropped a0b31b8, and it was a
real regression rather than a missing convenience. A record whose catalog entry
is absent -- written by another runtime, or older than the catalog it was
stamped against -- made decode_store_snapshot fail, and one such record failed
the entire pull. Recovering the type from the payload is what "across runtimes"
meant in that commit's title.

Restored in full: the payload is a MessagePack array whose first field is the
schema version, so the schema name is recoverable from the record itself; the
registry now also indexes schema name to entry type and refuses a name claimed
by a second type; and pull resolves a persisted type that is either a
registered type or a recovered schema name. The stale schema id is preserved on
the envelope rather than rewritten.

743eaa5's durability half needed no code. The standalone lineage reached the
same place independently through crash-atomic single-file snapshots and
abandoned staging cleanup, and its cleanup carries the same protections: only a
candidate named for this exact store plus a canonical UUID is removed, and
anything that is not a regular file is skipped. Untested, though, which is how
a careful deletion rule quietly becomes a careless one. Now asserted: an
abandoned canonical candidate is removed while a non-UUID lookalike, a bare
.tmp suffix, and another store's candidate all survive, and the committed
snapshot still reloads.

48 tests pass. This clears the cultcache half of the retained debt from b672fb7.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 00:45:48 +02:00
..
cultcache-py Finish the sequence-domain split in Python and Kotlin 2026-09-04 00:40:05 +02:00
cultcache-rs Restore cross-runtime schema recovery and prove staging cleanup 2026-09-04 00:45:48 +02:00
cultcache-ts Make TypeScript packages release-packable 2026-07-13 23:47:38 +01:00
cultmath Clarify CultMath and CultGeometry ownership 2026-08-26 17:47:06 +02:00
cultmesh-browser Harden CultMesh route fallback and secure onboarding 2026-08-18 19:41:03 +02:00
cultmesh-kotlin Finish the sequence-domain split in Python and Kotlin 2026-09-04 00:40:05 +02:00
cultmesh-rs Give the Rust CultMesh runtime a home 2026-09-03 23:09:45 +02:00
cultmesh-ts Recover authority-bound CultMesh and atomic generations 2026-08-26 19:01:24 +02:00
cultnet-rs Align the replay-window test with the reliable sequence domain 2026-09-04 00:36:36 +02:00
cultnet-ts Separate RUDP reliable and lossy sequence domains 2026-09-04 00:33:16 +02:00