Say that a conditional variant commit reads the getters a second time

Judging the merge against the file re-runs Project for the records the commit
lands and for re-resolved variants, so "once per landing record" holds only for
the admission. Handing the plan's projections to Judging would not cover the
re-resolved dependents, so the contract now states the second read.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-09-29 19:37:03 +02:00
commit 384ee30ff6

View file

@ -83,10 +83,13 @@ which route wrote it.
exception. The subscriber stays subscribed and the commit stands. A throwing
handler cannot undo the store's adoption of a load; the store and cache
already agree when publication starts.
- A record's `[CultName]` and `[CultIndex]` getters run once per landing record,
before the store is written and before any `Sequence` is minted. A getter that
throws refuses the whole change set, loads included: nothing is written,
minted or left in memory.
- An admission runs a record's `[CultName]` and `[CultIndex]` getters once per
landing record, before the store is written and before any `Sequence` is
minted. A conditional commit on a store that holds variants is judged a second
time against the file it merges onto, which runs the getters again for the
records it lands and for any variant it re-resolves; that judgement is also
before the store is written. A getter that throws refuses the whole change
set, loads included: nothing is written, minted or left in memory.
- Pulling all stores pulls every attached store even if a handler throws during
one store's load, then rethrows.
- Hydration failure on open is loud: a corrupt store file, or a record whose