RFC-0024: Distributed Ownership State Machine
Status: Normative — frozen for v0.2.0. OwnershipRecord=(entity,generation,owner_region,epoch,world_version). Legal states: OWNED -> PREPARE_TRANSFER -> FROZEN -> INSTALLING -> OWNED; any validation/timeout transitions to ABORTING -> OWNED at source. Target is not owner before durable INSTALL succeeds. Protocol messages carry TransferId, entity/generation, source/target, expected epoch, base version, schema hash, and payload hash. Source proposes; target reserves/accepts; source freezes and serializes snapshot; target validates/installs; target durably acknowledges new epoch=old+1; source releases. Duplicate messages are idempotent by TransferId. Commands require matching epoch and owner, otherwise PWE_E_OWNERSHIP_STALE; two owners for one epoch is fatal split-brain.