*/ public static function classes(): array { return [ // Résultat et refus d'une mise à jour — le chemin d'erreur d'abord, // puisque c'est celui qui s'exécute quand tout le reste a échoué. \Sentinelo\AgentCore\Update\UpdateOutcome::class, \Sentinelo\AgentCore\Port\UpdatesNotSupported::class, \Sentinelo\Adapter\Wp\WpPackageInstaller::class, // Réponse HTTP de l'endpoint. \Sentinelo\Api\ResponseFormatter::class, \Sentinelo\Core\Logger::class, \Sentinelo\Core\UpdateOrigin::class, // Signalement : l'envoi en ligne (endpoint) comme l'empilement (crochets). \Sentinelo\Webhook\WebhookSender::class, \Sentinelo\Webhook\WebhookQueue::class, \Sentinelo\Webhook\Events\PluginUpdatedEvent::class, \Sentinelo\Webhook\Events\CoreUpdatedEvent::class, \Sentinelo\Webhook\Events\SiteDownEvent::class, \Sentinelo\Adapter\Wp\WpWebhookQueueRepository::class, \Sentinelo\AgentCore\Webhook\Queue\WebhookRetryPolicy::class, // Dépendances transitives de WebhookSender : instanciées seulement à // l'appel, donc absentes de la mémoire si on ne les nomme pas ici. \Sentinelo\AgentCore\Webhook\WebhookDispatcher::class, \Sentinelo\AgentCore\Webhook\DispatchResult::class, \Sentinelo\AgentCore\Port\HttpResponse::class, \Sentinelo\Adapter\Wp\WpHttpClient::class, \Sentinelo\Adapter\Wp\WpConfigStore::class, \Sentinelo\Adapter\Wp\WpClock::class, \Sentinelo\Adapter\Wp\WpLogger::class, ]; } /** * Résout chaque classe. Idempotent, et volontairement silencieux : une classe * absente ne doit pas empêcher la mise à jour de se faire — on préchargerait * alors pour rien, mais on n'aurait rien cassé. */ public static function run(): void { foreach (self::classes() as $class) { class_exists($class); } } }