PD-240-PLAN-REVIEW-V2
Type : Non-conformité Spec Référence : (Spec §4 Périmètre / Plan §2.1 AuditController) Description : La spec inclut l’endpoint admin GET /admin/audit/user/{userId}. Le plan couvre cet endpoint, mais conserve l’endpoint DELETE /admin/users/{userId}/audit dans le périmètre v4 ? Non ; toutefois le plan ne mentionne aucun composant ou livrable pour un endpoint admin de suppression d’audit. La conformité dépend uniquement du GET. Si un DELETE est attendu par les opérations d’audit, il n’est pas prévu. Impact : Risque de divergence avec le périmètre si un endpoint DELETE est implicitement requis ailleurs. Gravité : MINEUR
Type : Incohérence Spec↔Plan Référence : (Spec §7 F-240-01 / Plan §3.2 Ordre transactionnel / §7.3 Atomicité) Description : La spec v4 impose l’ordre sessions → purge RGPD → Keycloak et indique rollback sur échec sessions (ERR-240-SESSION-INVALIDATION-FAILED). Le plan respecte l’ordre, mais accepte un état « compte verrouillé » si purge/Keycloak échoue après invalidation des sessions, ce qui contredit la spec v4 qui ne décrit pas cet état dégradé et exige ERR-240-DELETE-FAILED avec « compte Keycloak non supprimé » mais pas l’acceptation de l’état comme stable. Impact : Comportement non contractuel ; risque d’auditabilité insuffisante. Gravité : MAJEUR
Type : Couverture manquante Référence : (Spec §9 CA-240-05 / Plan §4 Mapping Invariants / Tests T-240-POST-02) Description : Le plan ne garantit pas l’observable purgedAt dans la réponse de GET /admin/audit/user/{userId} (il mentionne seulement « audit entry »). La spec exige { status, purgedAt } en cas de purge. Impact : Preuve d’anonymisation RGPD non démontrable selon la spec ; test T-240-POST-02 risque d’échec. Gravité : MAJEUR
Type : Code Contract — Invariant Référence : (Code Contracts module audit-controller) Description : Le code contract précise purgedAt obligatoire si status=purged (aligné), mais le plan n’assure pas sa production. Incohérence entre plan et code contract. Impact : Risque d’implémentation non conforme au contrat code/spec. Gravité : MINEUR
Type : Hypothèse implicite Référence : (Plan §3.2 Ordre transactionnel / §6 Gestion des erreurs) Description : Le plan suppose que l’invalidation des sessions est un « point de non‑retour » et que l’échec de purge/Keycloak après invalidation est acceptable. Cette hypothèse n’est pas listée et n’est pas cadrée par la spec v4. Impact : Risque de logique non contractuelle et d’états incohérents. Gravité : MAJEUR