ConflictType

sealed interface ConflictType

Classifies the nature of a conflict between an incoming proposition and an existing one that it appears to contradict.

Not every clash is a genuine contradiction. The same surface-level disagreement ("Alice works at Globex" vs "Alice works at Acme") can mean different things: the world genuinely changed (WorldProgression), the new statement is a correction of the old (Revision), or the two statements are mutually exclusive truths (Contradiction). Distinguishing these lets the reviser decide whether to supersede, replace, or flag a clash rather than always treating it as an irreconcilable contradiction.

This is a closed discriminated union so consumers can exhaustively pattern-match, with Custom as the open escape hatch for domain-specific classifications.

Inheritors

Types

Link copied to clipboard

The two propositions are mutually exclusive truths and genuinely conflict. This is the conservative default classification.

Link copied to clipboard
data class Custom(val label: String) : ConflictType

A consumer-defined conflict classification.

Link copied to clipboard
data object Revision : ConflictType

The incoming proposition corrects/replaces the existing one as a more accurate statement of the same fact (e.g. fixing a typo'd value).

Link copied to clipboard

The world changed: both statements were true at different times, and the incoming one reflects the newer state (e.g. Alice changed employers).