drift Check Runner
The shipped runner. It stamps the declaration, snapshots the graph, runs both comparisons and writes a report, and it touches no proposition on any path.
Registered only when there is something to observe and somewhere to write the answer, which is why it is conditional on both ObservedSchemaSource and DriftReportStore. Under the default in-memory backend neither exists, and the context starts with the rest of the loop wired.
Two differs, resolved independently
A check asks two different questions and each has its own collaborator: DeclaredObservedDiffer compares the declaration against the live graph, and MetamodelDiffer compares the declaration against the baseline a sweep last reconciled. One object commonly answers both — the shipped StructuralMetamodelDiffer does — so the two are looked up separately and the same bean is free to satisfy each. An application that supplies a distinct bean for either role gets that bean used for that role, and whichever role no bean fills falls back to a StructuralMetamodelDiffer built here. Looking up one interface and testing the result for the other is what let a consumer's MetamodelDiffer be silently ignored.
Parameters
Candidates for the declaration-against-graph comparison.
Candidates for the declaration-against-baseline comparison.