// every subscriber.
if (arrayEquals(state.changesets ?? [], changesets ?? [], structuralEquals)) {
}
// Take a defensive copy so callers can't mutate the catalogue array
// after dispatch; the reducer otherwise stores the reference as-is.