DriftQuarantinePolicy

Decides which propositions a schema change has stranded, and flags them.

Quarantining is non-destructive. An affected proposition comes back as an immutable copy moved to PropositionStatus.QUARANTINED with a metadata note explaining why; the original is untouched and nothing is written to any store. Persisting the copies is the caller's job, which is what lets a drift check preview a sweep without changing anything.

A quarantined proposition has an owner. It sits in a status of its own, which every lifecycle policy in DICE leaves alone, so nothing automatic can lift the hold and nothing automatic can mistake it for ordinary staleness. Only DriftSweepCapable.releaseFromQuarantine lets one back into use.

It takes a MetamodelDiff, a comparison of two declared versions, which is what says exactly which types the schema stopped recognising. A drift check compares a declaration against a live graph and synthesizes the equivalent diff, so quarantine is decided on one kind of input.

val diff = result.quarantineDiff
val swept = sweepStore.sweep(diff, policy, contextId)

Inheritors

Functions

Link copied to clipboard
abstract fun candidateMentionTypes(diff: <Error class: unknown class>): Set<String>

Every entity type name that, appearing as a mention type, could make a proposition a candidate under diff.

Link copied to clipboard
abstract fun evaluate(diff: <Error class: unknown class>, propositions: Iterable<Proposition>): QuarantineResult

Evaluate every proposition against diff.