ExperimentalNarrow to the add variant, validating its payload.
Narrow to the delete variant, validating its payload.
Narrow to the modify variant, validating its payload.
Narrow to the move variant, validating its payload.
Narrow to the copy variant, validating its payload.
Narrow to a custom or future variant: the operation tag matches no known variant.
TypeScript keeps the known variants in the narrowed union (they are
structural subtypes of the catch-all), so read vendor payload keys
via a widening cast: (value as Record<string, unknown>).someKey.
Validated type guards for
DiffChange's known variants.Each guard validates the variant's payload, not just its discriminant tag: a malformed known variant (right tag, wrong payload) matches no guard — mirroring wire validation, which rejects such values instead of classifying them as custom.
Guards check the value as given: fields that wire deserialization salvages to a default (e.g. a malformed
_meta) are only normalized by parsing, and for ambiguous raw shapes (a known tag combined with another variant's payload) guards are conservative where wire parsing may still accept the value — narrow wire-parsed values when exact parity matters.