*/ public static function all(): array { return [ self::CAPTURE_MISSING_SOURCE_TENANT, self::CAPTURE_PROFILE_NOT_ACTIVE, self::CAPTURE_ROLLOUT_DISABLED, self::SNAPSHOT_BUILDING, self::SNAPSHOT_INCOMPLETE, self::SNAPSHOT_SUPERSEDED, self::SNAPSHOT_CAPTURE_FAILED, self::SNAPSHOT_COMPLETION_PROOF_FAILED, self::SNAPSHOT_LEGACY_NO_PROOF, self::SNAPSHOT_LEGACY_CONTRADICTORY, self::COMPARE_NO_ASSIGNMENT, self::COMPARE_PROFILE_NOT_ACTIVE, self::COMPARE_NO_ACTIVE_SNAPSHOT, self::COMPARE_NO_CONSUMABLE_SNAPSHOT, self::COMPARE_NO_ELIGIBLE_TARGET, self::COMPARE_INVALID_SNAPSHOT, self::COMPARE_ROLLOUT_DISABLED, self::COMPARE_SNAPSHOT_BUILDING, self::COMPARE_SNAPSHOT_INCOMPLETE, self::COMPARE_SNAPSHOT_SUPERSEDED, ]; } public static function isKnown(?string $reasonCode): bool { return is_string($reasonCode) && in_array(trim($reasonCode), self::all(), true); } public static function trustImpact(?string $reasonCode): ?string { return match (trim((string) $reasonCode)) { self::SNAPSHOT_CAPTURE_FAILED => 'limited_confidence', self::COMPARE_ROLLOUT_DISABLED, self::CAPTURE_ROLLOUT_DISABLED, self::SNAPSHOT_BUILDING, self::SNAPSHOT_INCOMPLETE, self::SNAPSHOT_SUPERSEDED, self::SNAPSHOT_COMPLETION_PROOF_FAILED, self::SNAPSHOT_LEGACY_NO_PROOF, self::SNAPSHOT_LEGACY_CONTRADICTORY, self::COMPARE_NO_ASSIGNMENT, self::COMPARE_PROFILE_NOT_ACTIVE, self::COMPARE_NO_ACTIVE_SNAPSHOT, self::COMPARE_NO_CONSUMABLE_SNAPSHOT, self::COMPARE_NO_ELIGIBLE_TARGET, self::COMPARE_INVALID_SNAPSHOT, self::COMPARE_SNAPSHOT_BUILDING, self::COMPARE_SNAPSHOT_INCOMPLETE, self::COMPARE_SNAPSHOT_SUPERSEDED, self::CAPTURE_MISSING_SOURCE_TENANT, self::CAPTURE_PROFILE_NOT_ACTIVE => 'unusable', default => null, }; } public static function absencePattern(?string $reasonCode): ?string { return match (trim((string) $reasonCode)) { self::SNAPSHOT_BUILDING, self::SNAPSHOT_INCOMPLETE, self::SNAPSHOT_COMPLETION_PROOF_FAILED, self::SNAPSHOT_LEGACY_NO_PROOF, self::SNAPSHOT_LEGACY_CONTRADICTORY, self::COMPARE_NO_ACTIVE_SNAPSHOT, self::COMPARE_NO_CONSUMABLE_SNAPSHOT, self::COMPARE_SNAPSHOT_BUILDING, self::COMPARE_SNAPSHOT_INCOMPLETE => 'missing_input', self::CAPTURE_MISSING_SOURCE_TENANT, self::CAPTURE_PROFILE_NOT_ACTIVE, self::CAPTURE_ROLLOUT_DISABLED, self::COMPARE_NO_ASSIGNMENT, self::COMPARE_PROFILE_NOT_ACTIVE, self::COMPARE_NO_ELIGIBLE_TARGET, self::COMPARE_INVALID_SNAPSHOT, self::COMPARE_ROLLOUT_DISABLED, self::SNAPSHOT_SUPERSEDED, self::COMPARE_SNAPSHOT_SUPERSEDED => 'blocked_prerequisite', self::SNAPSHOT_CAPTURE_FAILED => 'unavailable', default => null, }; } }