PD-32 — Rapport de confrontation (Étape 3 - Gate CONFORMITY_CHECK)¶
Ce rapport est produit par l'orchestrateur Claude avant la gate PMO. Il confronte les documents produits pour identifier convergences, divergences et zones d'ombre.
1. Sources confrontées¶
- PD-32-specification.md (Étape 1) — Spécification canonique contractuelle
- PD-32-tests.md (Étape 2) — Scénarios de tests contractuels
- PD-32-specification-review.md (Étape 3, Phase 1) — Revue ChatGPT
2. Convergences¶
Architecture et périmètre¶
- Les trois documents s'accordent sur le périmètre :
GET /user/profileetPUT /user/profileuniquement. - Les trois documents s'accordent sur les champs modifiables :
name,avatar_url,preferences. - Les trois documents s'accordent sur les exclusions : pas de MFA, pas de changement de mot de passe, pas de suppression de compte, pas de modification d'email/plan.
Invariants et couverture¶
- La matrice de couverture (tests) couvre les 11 invariants de la spec.
- Les 14 critères d'acceptation ont chacun au moins un test associé.
- L'invariant INV-32-11 (RGPD hors périmètre) est correctement marqué NON TESTABLE dans les tests et dans la review.
Sécurité¶
- Les trois documents s'accordent sur : authentification JWT obligatoire, isolation RLS, rate limiting global, minimisation des données.
3. Divergences¶
⚠️ Les conflits ne doivent JAMAIS être lissés. Chaque divergence est rendue visible.
DIV-01 : Format avatar_url non défini¶
- Source A (Spec §3) : définit
avatar_urlcomme champ modifiable sans contrainte de format. - Source B (Tests TC-NEG-05) : suppose une validation de
avatar_url("vide/invalide selon règles de validation"). - Source C (Review) : signale l'ambiguïté comme Majeure — "le contrat ne définit pas ce qu'est un
avatar_urlvalide". - Impact : Comportement d'acceptation/rejet non déterministe. L'implémentation pourrait accepter n'importe quelle chaîne ou rejeter selon des règles non contractualisées.
DIV-02 : Observable "code erreur" non spécifié¶
- Source A (Spec CA-32-13) : exige "Code erreur + état inchangé" comme observable.
- Source B (Tests TC-INV-02) : vérifie "erreur explicite retournée" et "état inchangé" sans vérifier la structure du code erreur.
- Source C (Review) : signale l'incohérence comme Majeure — tests insuffisants pour valider l'observable contractuel.
- Impact : Un système peut passer les tests sans exposer un code erreur exploitable.
DIV-03 : Seuil rate limiting non contractualisé¶
- Source A (Spec INV-32-09, H-32-04) : mentionne "rate limiting global" sans seuil/fenêtre.
- Source B (Tests TC-ERR-08) : suppose un seuil dépassable mais ne le définit pas.
- Source C (Review) : signale comme Majeure — testabilité dépend d'une configuration externe.
- Impact : Tests non déterministes sans maîtrise de la configuration environnement.
DIV-04 : Mécanisme d'accès croisé non reproductible¶
- Source A (Spec INV-32-02, CA-32-03) : interdit l'accès croisé.
- Source B (Tests TC-ERR-03, TC-ERR-04) : suppose une "cible U2" distincte accessible via manipulation de contexte.
- Source C (Review) : signale comme Majeure — l'API
/user/profilen'expose pas de paramètre de cible ; le test dépend d'un mécanisme de simulation non décrit. - Impact : Risque de non-reproductibilité inter-équipes pour prouver l'invariant.
DIV-05 : Section 10 contradictoire¶
- Source A (Spec §10) : "Aucun point fonctionnel ouvert".
- Source A (Spec §10) : maintient un point à clarifier (référence artefact RGPD).
- Source C (Review) : signale comme Mineure — contradiction sur la "complétude".
- Impact : Ambiguïté de gouvernance sur la clôture du lot.
4. Zones d'ombre¶
ZO-01 : Validation timezone¶
- La spec définit "chaîne IANA timezone" sans référence normative précise (quelle base de données tz ? quelle version ?).
- Signalé comme Mineur par la review.
ZO-02 : Artefact RGPD externe¶
- INV-32-11 et CA-32-14 dépendent d'un artefact de conformité externe dont la référence exacte n'est pas fournie.
- Signalé comme Bloquant par la review pour la conformité RGPD globale.
ZO-03 : Longueur maximale des champs¶
nameetavatar_urln'ont pas de contrainte de longueur définie dans la spec.- Non mentionné dans la review mais implicitement couvert par "taille" dans ERR-32-VALIDATION.
5. Recommandation¶
- Procéder — convergence confirmée, aucun conflit bloquant
- Rework nécessaire — divergences à résoudre avant de continuer
- Escalade — décision humaine requise sur un point structurant
Justification¶
5 divergences majeures identifiées (DIV-01 à DIV-04 + ZO-02) : - DIV-01, DIV-02, DIV-03, DIV-04 : impactent la testabilité et la reproductibilité - ZO-02 : bloquant pour la conformité RGPD globale (mais explicitement hors périmètre PD-32)
Recommandation : Résoudre DIV-01 à DIV-04 avant de passer à l'étape 4 (plan d'implémentation). Le point ZO-02 (RGPD) peut être traité en parallèle par un artefact de conformité dédié.