lineageStorageSchema

The lineage stores' schema, registered as a DiceStorageSchema so one bean answers both questions about it: Drivine ensures its constraints and indexes, and dice's drift observation reads the same object to recognise (:ProjectionRecord) and (:CollectorRecord) nodes as its own. Registering the DDL by hand here, as this used to, left the second half to a separate list that could fall behind.

Natural keys back the MERGE upserts, so a replayed record updates in place and never duplicates; the range indexes back the lineage lookups. Both live in LineageSchema.