Aller au contenu

PD-276 — Rapport de confrontation (Étape N)

Ce rapport est produit par l'orchestrateur Claude avant chaque gate PMO.
Il confronte les documents produits pour identifier convergences, divergences et zones d'ombre.

1. Sources confrontées

  • Spécification fonctionnelle et contractuelle PD-276 — PV Envelope : Conformité RFC 9106 (Argon2id) et Metadata Binding contractuel (origine: Étape 1 — Specification)
  • Plan de tests PD-276 — Scénarios de tests contractuels (origine: Étape 2 — Tests & Validation)

2. Convergences

  • Les deux documents convergent sur l’objectif central: atteindre 24/24 checks Prolog sans modifier les règles de contrôle, avec non-régression des 21 checks historiques (Spec: objectif, INV-276-10, CA-276-01/11 ; Tests: TC-NOM-09, TC-ERR-09, TC-NR-01).
  • Alignement complet sur le contrat Argon2id serveur: validation uniquement, minima OWASP, bornes contractuelles exactes, rejet hors bornes et paramètres incomplets (Spec: INV-276-01/02/03, E-01..E-04 ; Tests: TC-NOM-01/02, TC-ERR-01..05, TC-INV-01).
  • Alignement sur la config centralisée exposée par endpoint avec valeurs exactes du contrat (Spec: INV-276-04, CA-276-06 ; Tests: TC-NOM-03).
  • Alignement sur metadata binding: metadata_tag 32 bytes, vérification avant accès, refus immédiat en cas d’altération/substitution (Spec: INV-276-05/06/07, E-06, T-07/T-08 ; Tests: TC-NOM-04/05, TC-ERR-07, TC-NEG-01, TC-INV-02).
  • Alignement sur stratégie de migration en 2 phases (NULL puis NOT NULL) et rollback down() vers état antérieur contractuel (Spec: stratégie DDL, CA-276-09/10 ; Tests: TC-NOM-06/07/11, TC-NR-04).
  • Alignement sur machine à états et interdiction du downgrade sécurisé (BOUND -> LEGACY) + terminalité TAMPERED (Spec: INV-276-11 + transitions explicites ; Tests: TC-NOM-10, TC-ERR-10/11, TC-NEG-02).

3. Divergences

⚠️ Les conflits ne doivent JAMAIS être lissés. Chaque divergence est rendue visible. - DIV-01 : Statut de testabilité globale incohérent (testable vs partiellement testable) - Source A (Specification) : la story est formulée avec critères d’acceptation testables et cible de conformité complète (24/24), avec exclusion générique des « règles non testables » du périmètre. - Source B (Tests) : verdict explicite ⚠️ Testable partiellement et section dédiée « Règles non testables » (INV-276-08 preuve absolue, ambiguïtés Q-276-02/Q-276-03). - Impact : risque de blocage de gate sur le caractère « certifiable intégralement » tant que la définition de done testabilité n’est pas unifiée. - DIV-02 : Contrat d’erreur API E-06 non stabilisé - Source A (Specification) : E-06 mentionne un refus sécurité avec 403 côté contrat API, tout en gardant Q-276-03 ouvert (403 vs autre). - Source B (Tests) : le code HTTP exact est déclaré non testable à ce stade (ambigu majeur), seul le comportement « accès refusé » est oracle stable. - Impact : risque de faux négatifs QA / non-conformité contractuelle API si l’assertion HTTP est figée différemment entre implémentation et campagne de tests. - DIV-03 : Politique LEGACY en fenêtre transitoire non déterminée - Source A (Specification) : Q-276-02 laisse ouverte la stratégie (autoriser accès, forcer rotation, blocage) entre phase 1 et phase 2. - Source B (Tests) : cette ambiguïté est remontée comme limite majeure de testabilité (pas d’oracle unique), malgré des tests de compatibilité transitoire (TC-NR-03). - Impact : risque d’interprétations contradictoires en implémentation et en recette, notamment sur décisions d’accès aux enveloppes LEGACY.

4. Zones d'ombre

  • Référence épique non stabilisée: la spec indique « non fournie », le plan de tests indique EPIC-XX (placeholder), traçabilité incomplète pour audit PMO.
  • Sémantique de service_method(argon2, deriveKey) : exigé pour conformité formelle alors que le contrat métier interdit la dérivation serveur de clé utilisateur; la frontière « nom de méthode formelle » vs « comportement interdit » reste sensible et doit être explicitée pour éviter mauvaise interprétation.
  • Modalités probatoires d’INV-276-08 (chiffrement au repos des artefacts temporaires): niveau de preuve attendu en gate (échantillonnage, scans, couverture minimale, critères d’acceptation probatoires) non normé dans les documents.
  • Contrôle d’intégrité des règles Prolog (immutabilité de pv_envelope_compliance.pl) : présent côté tests adversariaux (TC-NEG-06), mais sans protocole opérationnel détaillé dans la spec (qui interdit juste la modification).

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