mirror of
https://github.com/spacedriveapp/spacedrive.git
synced 2026-10-30 21:09:14 -04:00
A store has two halves. The generation is rebuildable for as long as its origin still answers, the assertion layer never is, and the origin stops answering without an event. So the invariant is a rule about what code may assume rather than a claim about stores, and the registry row tracks what is actually known about the origin. Falls out of that: reindex and evict are transactions over one half, and sync replicates the generation while merging assertions. Which means the assertion tables need their key and their merge columns settled before P2 fills them, so P1 gains the re-key, convergent content ids and the uuid narrowing. New doc is docs/core/design/source-durability.md. Also records two contradictions found on the way: whether sources may nest (contract 1 and the previs disagree), and that nothing reconciles record uuids when two devices index the same origin.