Decision: conflict UX on revision mismatch #3
Labels
No labels
bug
chore
feature
spike
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Blocks
#41 Stream: inline conflict resolution UI
utilities/Logbook
Reference
utilities/Logbook#3
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Decision #3 — how should the app behave when the target note's Outline revision changed since our last write (someone else edited the same note)?
The sync model is create-once, then replace: every subsequent debounce tick and the final Publish re-check the document's
revisionbefore reconstructing this entry's block. If the revision moved, we must not silently overwrite.The two candidate behaviours
warn/bg), "⚠ Someone else edited this note too", with three pill actions:The committed prototype (
design/Family App.dc.html) and the design-system skill both implement the second option and mark it the resolved answer.What to decide
Confirm the Keep mine / Keep theirs / Merge in Outline banner (vs a hard block) so the sync engine and Stream UI can build to it.
Blocks: the sync engine conflict path and the Stream entry-card conflict state.
Recommendation: adopt the three-action banner as the prototype already specifies — it keeps resolution in-app and never silently loses either side's edits. Hard-blocking is strictly worse UX for a family app where the "conflict" is usually just two phones touching the same note.
Source: Solution Design — Family App v1 §7 (doc vpBNbG4TsV), decision §13 #3; prototype
design/Family App.dc.html;skills/design-system/SKILL.md(Interaction patterns → Conflict resolution).Accept recommendation