InternalADRs
ADR-0003: Field-Level LWW Using Hybrid Logical Clocks (HLC)
Resolve conflicts per-field using HLC tags rather than row-level LWW.
Status
Accepted
Context
Concurrent updates to the same entity fields must resolve deterministically across replicas.
Row-level “last write wins” causes unnecessary data loss and conflicts.
Decision
RippleDB resolves conflicts using field-level Last-Write-Wins, ordered by Hybrid Logical Clock (HLC) tags.
Each mutable field has its own tag:
wallMs:counter:nodeIdAlternatives Considered
- Row-level LWW
- Vector clocks
- CRDTs for all data
- Server-side conflict resolution
Consequences
- Deterministic rippledbnce
- Reduced conflict scope
- Increased schema verbosity (tags per field)
- Requires careful delete modeling (tombstones)