undefined means "no snapshot has ever been recorded for this id" — the
merge treats it as first-sync and takes remote.
{ value } means "the snapshot has a recorded value" — and value may
itself be undefined (e.g. Linear's "no priority" sentinel). This is the
critical distinction: if a caller collapses "no snapshot" and "snapshot
value is undefined" into the same undefined, then a local edit that
disagrees with a recorded-undefined snapshot gets clobbered on pull as if
the user had never edited it.
Snapshot wrapper passed to the merge primitives.
undefinedmeans "no snapshot has ever been recorded for this id" — the merge treats it as first-sync and takes remote.{ value }means "the snapshot has a recorded value" — andvaluemay itself beundefined(e.g. Linear's "no priority" sentinel). This is the critical distinction: if a caller collapses "no snapshot" and "snapshot value is undefined" into the sameundefined, then a local edit that disagrees with a recorded-undefined snapshot gets clobbered on pull as if the user had never edited it.