CultLib/packages/cultnet-py/CHANGELOG.md
Meta Vens e77246b657 Writers derive the catalog from the records they write; the merging is deleted
Every writer (C# single-file and directory, TypeScript, Python; Rust already did) chooses, for each schema id a record carries, one
entry that publishes it: the entry that owns the id (a registered descriptor, else an arrived entry), else one that lists it as
compatible. A registered descriptor wins over an arrived entry with the same own id. Entries are written as chosen, with no union of
compatible ids and no dependence on arrival order; an entry no record needs is not written. Two entries of one tier that share an own id
and disagree on the schema name, records of different types under one id, or a record no chosen entry publishes refuse the write with a
typed error (CultSchemaConflictException, SchemaConflictError) naming the id, the names and a record key, and the store is left as it was.
CultSchemaCatalogEntry.MergeById and the Python and TypeScript merge paths are gone. A cache-held record unchanged since the file was read
is rewritten under its registered id (C# single-file and directory), so an entry that lists an older id is not needed to publish it.
Changelogs for cultnet-py (removed export) and cultcache-py.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 10:03:34 +02:00

639 B

Changelog

Unreleased (breaking; version 0.x, so the next minor)

  • Removed resolve_document_and_schema_id_for_raw_record from the package exports. A raw record resolves to one local schema id, the one its document registers, so there is no wire id to return. Use resolve_document_for_raw_record(documents_by_schema_id, schema_id, record), which returns the document; take the schema id from document.catalog_entry().schema_id.
  • apply_raw_document_record, apply_raw_snapshot and apply_shard_log_response report and stamp the local schema id, also for a record that arrived under a compatible id or the schema name.