Industry Context¶
This document establishes that Viper’s conflict handling follows industry-standard patterns used by Google Docs, Figma, Notion, and other collaborative systems.
The Universal Pattern¶
All major collaborative editing systems share the same approach: deterministic convergence without user intervention. When concurrent operations conflict, the system resolves them automatically—never prompting the user.
System |
Technology |
On Deleted Target |
User Notification |
|---|---|---|---|
Google Docs |
OT |
Op becomes NOP |
None |
Figma |
CRDT |
Op becomes NOP |
None |
Notion |
LWW |
Op becomes NOP |
None |
Yjs |
CRDT |
Op becomes NOP |
None |
Automerge |
CRDT |
Op becomes NOP |
None |
Viper |
DAG + LWW |
Deterministic No-Op |
None |
Key insight: Viper’s Deterministic No-Op is not a design flaw—it is the * industry-standard behavior* for handling operations that target deleted or non-existent elements.
Why Every System Uses Deterministic No-Op¶
The OT (Operational Transformation) Precedent¶
Google Docs pioneered real-time collaboration using OT. When User A deletes a paragraph while User B edits it, User B’s operation becomes a NOP (no-op). No notification is sent.
This is identical to Viper’s Deterministic No-Op behavior.
The CRDT Precedent¶
Figma, Notion, and Linear use CRDTs. When concurrent operations conflict (e.g., update a deleted node), the delete wins and the update becomes NOP. No notification is sent.
Again, identical to Viper’s behavior.
Why No System Notifies Users¶
Latency and UX: Real-time systems merge in milliseconds. Pausing for confirmation would destroy the fluid editing experience.
Frequency: Micro-conflicts happen constantly. Notifying every Deterministic No-Op would create notification fatigue.
Already Resolved: Unlike Git, the conflict is already resolved. There’s nothing for the user to do.
Application-Specific: No generic system can know what constitutes a “meaningful” conflict for your domain.
The Dual-Layer Contract is Universal¶
Every collaborative system implements a version of Viper’s Dual-Layer Contract:
Layer |
Responsibility |
|---|---|
Infrastructure |
Structural integrity, convergence, persistence |
Application |
Semantic validation, business rules |
This is not a “delegation of responsibility”—it is the only viable design for systems that must handle arbitrary application domains.
What Makes Viper Different¶
Viper is transparent about this architecture:
Documents the behavior explicitly (Deterministic No-Op, Best-Effort Merge)
Provides the vocabulary to discuss it (Divergence, Visibility Oscillation)
Offers extension points for notification if needed
The difference is not in behavior—it is in transparency and documentation.
See Also¶
The Dual-Layer Contract - Obligations when using Commit
Commit Overview - Architecture
Commit Glossary - Terminology