Canonical Identity
- Canonical identity is
SkillKey { source_uuid, skill_name }. source_uuidis immutable unless changed through lineage events.- Runtime execution paths consume canonical identity only.
Required Source Record Fields
Every source identity record must include:source_uuiddisplay_nametransport_kind- locator
fingerprint status(activeorretired)
Governance Checks
Startup rejects:- UUID collisions with conflicting fingerprints unless lineage explicitly permits.
- UUID mutation without lineage.
- split/merge/rotate lineage without complete per-skill remap coverage.
Migration Procedures
Rotate (one source to one source)
- Add lineage event
rotatefrom old UUID to new UUID. - Add remap rows for all affected skills (
old_uuid/skill->new_uuid/skill). - Deploy config and verify canonicalization tests pass.
Split (one source to many)
- Add lineage event
splitwith all target UUIDs. - Add explicit per-skill remaps from old UUID to exactly one target UUID per skill.
- Reject deployment if any source skill lacks remap coverage.
Merge (many sources to one)
- Add lineage event
mergewith all origin UUIDs and target UUID. - Add explicit per-skill remaps from each origin UUID skill to target UUID skill.
- Reject deployment if any origin skill lacks remap coverage.
Incident Recovery
If startup fails with lineage/remap validation:- Freeze rollout and keep prior registry active.
- Fix missing remaps or incorrect lineage edge.
- Re-run identity migration tests:
- Roll forward only after tests pass and resolver-boundary canonicalization is verified.
