• Decode the reason a subscriber did NOT see an update on a given commit. Returns one of WhyNotUpdatedReason, or null if the resource actually did transition (prev !== next structurally).

    Type Parameters

    • T

    Parameters

    Returns null | WhyNotUpdatedReason

    Total over the engine's update-suppression logic:

    • Reference equality (Object.is) returns 'object-is-deduped' because the engine's Phase B equality cutoff would have suppressed any commit producing a reference-equal next value.
    • Structural inequality but no actual update (a different object, different reference, same shape) returns 'no-dep-overlap' — the commit's changedNodes set did not include this node.
    • Structural inequality WITH an update (different shape between prev and next) returns null — the dual is undefined here because the resource DID transition.

    Per SPEC.async §11.1, the typical "no update" reasons for a resource are the two named in WhyNotUpdatedReason. A future bump that surfaces additional reasons widens this union and the decoder.