The gate (SPEC-144 D4)
The registry must be byte-identical before and after: same types, ids, scopes, sourceUrls, data bags, and registration order, because order decides last-write-wins on a site-scoped collision. Capture a snapshot of the registry over the storytelling fixtures before touching anything, and assert against it.
Sequencing note
WORK-617 removes the transforms of character, realm and faction in the same plugin. The two are independent, but land them one after the other rather than on parallel branches.
Acceptance Criteria
- A registry snapshot over the storytelling fixtures is captured before the migration and asserted after it — types, ids, scopes,
sourceUrls, data bags and registration order character, realm, faction, lore and plot register through registers.entitybond registers through registers.edge, and bond edges resolve through getRelated identically to todaycharacter alias lookup resolves identically, including "first registration wins" for a duplicate alias- The plugin's
register and aggregate hooks are deleted, not merely unused, and extractEntityName / extractEntityData go with them - The plugin's
postProcess is untouched
References
- SPEC-144 — problem statement, D4
- SPEC-147 — the storytelling replacement this feeds