"There should only ever be one answer to 'which copy is real?' The moment there are two, you've built a bug."
The Question Every System Must Answer
Point at any piece of data in a system and ask: is this the truth, or a copy of the truth? A store that holds the truth is authoritative. A store that holds a copy — one you could throw away and regenerate — is derived. Every well-built system knows, for every byte it holds, which of the two it is. Every fragile system has places where nobody can say.
Moving Files Destroys the Answer
Now watch what the gather-by-moving trap does to this. Before the move, the original is authoritative — full stop. After you copy it into a gather-folder, there are two files with the same content and equal claim to being real. Edit one; the other is now wrong, but nothing marks it as the copy. You've manufactured ambiguity. Six months later you find two versions of the same essay and you genuinely cannot tell which one you meant to keep. The move didn't gather your writing; it dissolved its authority.
Declaring Keeps the Line Bright
The registry approach never crosses the line. The originals stay authoritative because they're never copied — only pointed at. Everything Lantern builds from them (the chunk table, the FTS index, the vectors) is unambiguously derived: none of it is truth, all of it is rebuildable, and if any of it disagrees with an original, the original wins by definition. There is never a moment where two things both claim to be the real copy.
This Is Bigger Than Lantern
Caches, search indexes, materialized views, denormalized tables, thumbnails, compiled assets — all derived. The discipline is identical everywhere: mark them as derived, never let them become a second source of truth, and recover them by rebuilding, not repairing. Lantern's whole "index is disposable, originals are sacred" posture is just this one idea, held without exceptions.