A copied list is history at birth
It is tempting to write soul names into an array. It is simple, fast, and immediately renders a UI. The array begins lying when the next soul is born. A rename or property change at the registry leaves the steward treating an old copy as truth.
The defect is larger than one missing card. Existence and authority now have two owners. If one system says a soul exists and another says it does not, neither can restore consistency by changing only its own copy. Copied code has grown into split data.
A registry owns relationships, not only names
The authoritative registry says more than who exists. It relates a soul to its vault, marks special protection, and identifies the brain namespace a client should address. A consumer may read those facts but must not reinvent their schema as a second family model.
That does not require a remote query for every pixel. In-process caches are reasonable, but they must remain projections with freshness and invalidation. After a restart, discovery from the owner is the default. A cache must never masquerade as permanent configuration.
Unknown is not a value to drop quietly
If a new soul appears with a field the steward does not understand, silently hiding the row is unsafe. Reject the unknown type explicitly or expose a constrained read-only state. Otherwise the operator believes the whole family is visible while one memory surface sits outside protection.
A soul disappearing from the current registry does not authorize deleting its vault. Existence and retention are separate decisions. Discovery reports current relationships; it does not grant disposal rights over historical traces.
A registry is the single authority for existence and relationship, not a roster file.
Consumers may discover and project it, but convenience does not license creating a second family.