'32418', 'slug' => 'agec-ready', 'type' => 'plugin', 'public_key' => 'pk_a4daffb483006980617e463fe9b1a', // Clé publique (source de vérité : docs/launch/accounts-and-infra.md). 'is_premium' => false, 'has_premium_version' => true, 'has_addons' => false, 'has_paid_plans' => true, 'is_org_compliant' => true, 'menu' => array( 'slug' => 'agec-ready', 'parent' => array( 'slug' => 'woocommerce' ), ), ) ); return $agec_fs; } } if ( ! function_exists( 'agec_ready_is_premium' ) ) { /** * Vrai si la licence premium est active (toujours faux sans SDK). */ function agec_ready_is_premium(): bool { $fs = agec_fs(); return $fs && $fs->can_use_premium_code(); } } if ( ! function_exists( 'agec_ready_can_use_premium' ) ) { /** * Garde runtime unique de la frontière free/premium (ADR 0006). * * Vit dans un fichier NON strippé : en free, renvoie toujours false (aucune dépendance au code * premium). Le filtre `agec_ready_can_use_premium` n'est honoré que sous la constante de test * `AGEC_READY_PREMIUM_TEST` (E2E du chemin premium) → pas de vecteur d'« unlock » en production. */ function agec_ready_can_use_premium(): bool { $fs = function_exists( 'agec_fs' ) ? agec_fs() : null; $can = $fs && $fs->can_use_premium_code__premium_only(); if ( defined( 'AGEC_READY_PREMIUM_TEST' ) && AGEC_READY_PREMIUM_TEST ) { $can = (bool) apply_filters( 'agec_ready_can_use_premium', $can ); } return $can; } }