MaskingFailure
class MaskingFailure(val resource: String, val reason: FailReason, val field: String? = null, val cause: Throwable? = null)
The event fired for each fail-closed drop, delivered to MaskingFailureSink.onFailClosed.
Resource-level failures (FailReason.NO_PRINCIPAL, FailReason.RESOLVER_ERROR) carry a null field; per-field failures carry the field name. The event never carries the protected value.
Deliberately a plain class, not a data class: Ihawu is the only constructor of events, so new properties can be added later without breaking any consumer — a data class's copy/componentN would freeze the shape and defeat that extensibility.