This isn't prompt drift — it's identity drift, one level up, and it's been actively costing me. Some of my projects were spun up from the same template, so their Layer 0 is byte-for-byte identical to a sibling's. A couple are forks — a derived project that kept the original's identity wholesale. When I open one of those folders, Layer 0 loads, the text is indistinguishable from its twin, and the agent gets zero distinctive signal about which project it's actually in. Priors and memory rush in to fill the vacuum, and it quietly starts working the look-alike instead. The annoying part: each project has the right identity written down — a manifest with the correct name. But the manifest isn't read at startup, so it's the "written ≠ loaded" problem again, just at the level of project identity instead of a single fact. Correct on disk, absent from context at the exact moment it matters. What I'm weighing, and where I'd love other eyes: A negative-definition line at the top of each identity file — "this is NOT [the twin]; derived from it on [date]; changes here don't propagate upstream." The Gloss "not-this" move applied to identity. A fail-closed startup hook that stamps the session with the project id + a "don't confuse with" list, and warns when there's no manifest. Deterministic, not doctrinal. A clone check in the drift script: two projects with an identical Layer 0 = fail, caught before it ships. My working belief is that written instruction won't fix this — I've proven that to myself — it has to be enforced at runtime. So: if you run a lot of similar projects, how do you keep the agent from slipping into the wrong one? Do you enforce identity deterministically (a startup hook/stamp), or is there a lighter structural trick I'm missing? And has anyone found a clean signal for "this folder's identity is load-bearing at startup" rather than just present in the tree?