Aller au contenu

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

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

  • PD-276-specification.md — Spécification contractuelle (Étape 1 : Specification)
  • PD-276-tests-contractuels.md — Scénarios de tests contractuels (Étape 2 : Tests & Validation)

2. Convergences

  • Les deux documents convergent sur l’objectif principal : atteindre 24/24 checks Prolog sans modifier les règles de contrôle, avec maintien des 21 checks historiques (INV-276-10, CA-276-01, CA-276-11, TC-NOM-09, TC-NR-01).
  • Alignement complet sur le contrat Argon2id (minima OWASP + bornes contractuelles) : mêmes seuils et mêmes comportements de rejet (INV-276-02, INV-276-03, TC-NOM-01, TC-NOM-02, TC-ERR-01..05).
  • Alignement sur la posture zero-knowledge : validation serveur uniquement, sans dérivation métier côté backend (INV-276-01, TC-INV-01).
  • Alignement sur la configuration centralisée exposée par endpoint avec valeurs exactes (INV-276-04, CA-276-06, TC-NOM-03).
  • Alignement sur le metadata binding : présence/format metadata_tag (32 bytes), vérification avant accès, refus immédiat sur invalidité avec HTTP 422 et borne <100 ms (INV-276-05, INV-276-07, E-06, CA-276-08, TC-ERR-07, TC-NEG-01).
  • Alignement sur la migration en 2 phases (NULL puis NOT NULL), politique transitoire LEGACY en lecture seule, et rollback down() (CA-276-09, CA-276-10, CA-276-13, TC-NOM-06, TC-NOM-07, TC-NOM-11, TC-NOM-12).
  • Alignement sur la machine à états et les transitions interdites/autorisées, y compris terminalité de TAMPERED_TAG_INVALID (INV-276-11, TC-NOM-10, TC-NOM-13, TC-ERR-10, TC-ERR-11, TC-NEG-02).
  • Alignement sur les faits Prolog requis (service, service_method, entity_column) et leur consommation ciblée (check_10, check_19, check_22) (INV-276-09, CA-276-02/03/07, TC-NOM-08, TC-INV-04).
  • Alignement sur le caractère probatoire (non exhaustif) de l’exigence secrets en clair (INV-276-08, CA-276-12, TC-INV-03, section “Règles non testables et exigences probatoires”).

3. Divergences

⚠️ Les conflits ne doivent JAMAIS être lissés. Chaque divergence est rendue visible.

  • DIV-01 : Incohérence de traçabilité sur CA-276-06 (critère de config centralisée) utilisé pour un test zero-knowledge.
  • Source A (spécification) : CA-276-06 = “Configuration centralisée exposée” (endpoint Argon2id).
  • Source B (tests) : matrice + TC-INV-01 référencent CA-276-06 pour “anti-dérivation serveur / décision conformité”.
  • Impact : traçabilité critère→test ambiguë ; risque de validation PMO sur un mapping erroné.

  • DIV-02 : Référencement de CA-276-08 sur un scénario de création/persistance plutôt que de vérification d’accès.

  • Source A (spécification) : CA-276-08 = “Metadata binding vérifié avant accès” (invalidité => refus).
  • Source B (tests) : TC-NOM-04 référence CA-276-08 tout en vérifiant surtout création/persistance de metadata_tag (présence + longueur 32 bytes).
  • Impact : couverture fonctionnelle présente, mais rattachement contractuel imprécis ; peut fausser la lecture de complétude des critères.

  • DIV-03 : Statut “à clarifier” des bornes max vs verrouillage de tests sur valeurs figées.

  • Source A (spécification) : Q-276-01 reste ouvert (“valeurs maximales officielles Argon2 à valider produit/sécurité”).
  • Source B (tests) : TC-NOM-02 et TC-NOM-03 figent ces maxima comme oracles définitifs.
  • Impact : si arbitrage produit/sécurité change les maxima, la suite de tests devient contractuellement obsolète sans mise à jour préalable.

4. Zones d'ombre

  • Le nom exact du script/générateur Prolog en CI reste non défini (Q-276-05) ; les tests exigent la génération/inspection mais sans identifiant opératoire unique.
  • La dépendance aux journaux d’audit signés/horodatés est présupposée (prérequise par d’autres stories) ; l’existence effective de ce socle n’est pas démontrée dans ce lot documentaire.
  • Le protocole de mesure <100 ms (horloge de référence, environnement, méthode de timing) n’est pas normalisé ; l’oracle temporel est défini, mais la méthode de preuve n’est pas totalement cadrée.

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