1fa5113c02
L'ecran d'activation ne consultait qu'un branchement : le rapiecer ouvrait tout, l'API ne demandant rien. Chaque route de PM.Router passe maintenant par PM.LicenceGate.ApiLicenceOk avant son handler. Aucune fonction de decision partagee avec PM.Licence — sinon un seul rapiecage ouvrirait les deux couches. La verification est refaite de bout en bout, appels CNG redeclares compris ; seules la cle publique et le nom de la pref sont partages, parce que ce sont des donnees. Branchee dans DispatchRequest : les fichiers de l'ecran d'activation passent par TryServeEmbedded, non garde, sinon l'ecran ne se chargerait plus. Un oui est retenu pour le processus, un non jamais. Le risque etait qu'elle refuse un client licencie. Auto-test sur un vecteur lie a une empreinte fixe, sens accepte en premier ; et accord verifie en conditions reelles sur ce poste : IsLicensed = TRUE, ApiLicenceOk = TRUE. Documente aussi le piege du jour, sans lien avec ce code : des .dcu TMS x64 deposes a cote des sources cassaient le build Win32, et la sortie redirigee vers E: faute de place sur Z:. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>