Extraction Run Schema
The constraints, indexes and node labels DrivineExtractionRunStore needs, as plain data.
A host declares specs in a SchemaCatalog bean and Drivine's schema manager ensures them on startup; the module's TestApplication shows the shape. LABELS is every label the store writes, which is what a test teardown or an operator's audit sweep needs.
The three constraints are not optional tuning. Every write here is a MERGE or a CREATE on a natural key, and neither is race-free without a uniqueness constraint on that key: concurrent writers all miss the match, all take the create branch, and the store fills with copies of one run. The terminal-write constraint does more than that — see DrivineExtractionRunStore for why it is what makes compare-and-set hold across processes rather than only across threads.
Properties
Header to the terminal write that ended it.
The (:ExtractionRunInvocation) child: one node per attempt at one planned model call.
The longest tenant id this store will write.
A claim to the run that produced it: (:Proposition)-[:PRODUCED_BY_RUN]->(:ExtractionRun).
Header to invocation child.
The (:ExtractionRunTerminalWrite) node: at most one per run, and the thing that says so.