Aller au contenu

PD-241 — Dossier de conformité (Étape 5)

Ce dossier est assemblé automatiquement avant la gate PMO AMBIGUITY. Il constitue la base factuelle sur laquelle le verdict est rendu.

Type de gate : AMBIGUITY

Objectif : Vérifier que le plan d'implémentation ne contient pas d'hypothèses non déclarées et est strictement conforme à la spécification.

1. Documents de référence

Document Étape Statut
PD-241-specification.md 1 ✓ Présent
PD-241-tests.md 2 ✓ Présent
PD-241-plan.md 4 ✓ Présent
PD-241-code-contracts.yaml 4 ✓ Présent
PD-241-plan-review.md 5.1 ✓ Présent
PD-241-confrontation-step5-v1.md 5.2 ✓ Présent

2. Hypothèses déclarées (Plan §7)

ID Hypothèse Déclarée ?
H-241-01 Keycloak Admin API supporte DELETE /users/{id}/sessions ✓ Oui
H-241-02 Le refresh token est transmis dans le body JSON ✓ Oui
H-241-03 Le circuit breaker existant est compatible ✓ Oui

3. Couverture invariants → mécanismes

Invariant Mécanisme Couvert ?
INV-241-01 JwtAuthGuard
INV-241-02 invalidateSession()
INV-241-03 revokeRefreshToken() ⚠️ Partiel (DIV-02)
INV-241-04 HttpExceptionFilter + erreurs typées
INV-241-05 try/catch + LogoutFailedError
INV-241-06 N/A (hors périmètre) N/A

4. Écarts identifiés

ID Type Source Description Gravité
ECT-01 Non-conformité Plan §2.1 @HttpCode(401) impossible conjointement avec succès 200 BLOQUANT (erreur rédaction)
ECT-02 Non-conformité Plan §8 Si revokeRefreshToken échoue → considéré succès, viole INV-241-03 BLOQUANT
ECT-03 Hypothèse implicite Plan §8 Idempotence affirmée sans fondement contractuel Mineur
ECT-04 Code Contract keycloak-admin-logout Timeout 5s non dérivé de la spec Majeur

5. Analyse des écarts BLOQUANTS

ECT-01 — @HttpCode(401)

Nature : Erreur de rédaction technique Analyse : Le plan utilise une formulation impossible (deux @HttpCode sur une route). L'intention est claire : 200 en succès, 401 via exception. Verdict confrontation : Erreur de rédaction, pas de divergence fonctionnelle.

ECT-02 — Comportement si revokeRefreshToken échoue

Nature : Divergence fonctionnelle réelle Spec INV-241-03 : "Le refresh token DOIT être invalidé s'il est présent" Plan §8 : "Si invalidateSession réussit mais revokeRefreshToken échoue → logout réussi" Verdict confrontation : Violation d'invariant contractuel. Le plan doit retourner ERR-241-LOGOUT-FAILED si l'invalidation du refresh token échoue.

6. Rapport de confrontation

  • Voir : PD-241-confrontation-step5-v1.md
  • 6 convergences confirmées (CVG-01 à CVG-06)
  • 4 divergences identifiées (DIV-01 à DIV-04)
  • Recommandation confrontation : Rework nécessaire

7. Recommandation pré-verdict

  • GO — plan conforme, aucune hypothèse implicite
  • RESERVE — plan acceptable avec conditions mineures
  • NON_CONFORME — écarts bloquants identifiés
  • ECT-01 : Corriger la formulation @HttpCode (erreur de rédaction)
  • ECT-02 : Corriger le comportement si revokeRefreshToken échoue (violation INV-241-03)
  • ESCALADE — décision humaine requise

Dossier assemblé par Claude Orchestrateur — 2026-02-07