attributes->get('sarcio')`. Theme and plugin code reads it through * the `sarcio_context()` / `sarcio_skips()` / `sarcio_config()` helpers: * * if (!sarcio_skips('referral_code_required')) { * // enforce the rule as normal * } * * A request with no live patch leaves this empty, so callers never branch on * whether Sarcio is installed. */ final class Context { /** @var array|null */ private static ?array $body = null; /** @var array */ private static array $config = []; /** @var array */ private static array $skipValidations = []; /** @return array{body:array|null,config:array,skipValidations:array} */ public static function all(): array { return [ 'body' => self::$body, 'config' => self::$config, 'skipValidations' => self::$skipValidations, ]; } public static function config(string $key, mixed $default = null): mixed { return self::$config[$key] ?? $default; } public static function reset(): void { self::$body = null; self::$config = []; self::$skipValidations = []; } /** @param array|null $body the overridden request body, if the verdict carried one */ public static function set(Verdict $verdict, ?array $body = null): void { self::$body = $body; self::$config = $verdict->config(); self::$skipValidations = $verdict->skipValidations(); } public static function skips(string $validation): bool { return in_array($validation, self::$skipValidations, true); } }