private static void emitDistributionConfigDiffEvent(PerStateParams params, List<Event> events) {
        if (distributionConfigHasChanged(params)) {
            if (params.distributionConfigFrom == null) {
                // distributionConfigTo must be non-null
                events.add(createClusterEvent(
                        "Cluster controller is now the authoritative source for distribution config. " +
                        "Active config: %s".formatted(params.distributionConfigTo.highLevelDescription()), params));
            } else if (params.distributionConfigTo == null) {
                events.add(createClusterEvent(
                        "Cluster controller is no longer the authoritative source for distribution config", params));
            } else {
                // Distribution config was present in both old and new; emit a human-readable diff.
                String configDiff = DistributionDiffCalculator.computeDiff(params.distributionConfigFrom, params.distributionConfigTo).toString();
                if (!configDiff.isEmpty()) {
                    events.add(createClusterEvent("Distribution config changed: %s".formatted(configDiff), params));
                }
            }
        }
    }
Responsible for inferring the difference between two cluster states and their
state annotations and producing a set of events that describe the changes between
the two. Diffing the states directly provides a clear picture of _what_ has changed,
while the annotations are generally required to explain _why_ the changes happened
in the first place.

Events are primarily used for administrative/user visibility into what's happening
in the cluster and are output to the Vespa log as well as kept in a circular history
buffer per node and for the cluster as a whole.
clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/EventDiffCalculator.java