Aller au contenu

PD-275 — 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

  • Specification PD-275 — Conformite PV Anchor ANCHOR-16/17 (etape Specification)
  • Tests PD-275 — Scenarios de tests contractuels (etape Tests & Validation)

2. Convergences

  • Les deux documents convergent sur les objectifs fonctionnels centraux : persistance confirmation_count, garde de finalite confirmation_count >= FINALITY_DEPTH, registre signer_registry, refus fail-closed pour signer REVOKED/inconnu.
  • Specification : sections 2, 4 (INV-275-01/02/03/04), 5 (F1/F2/F4), 7 (CA-01/02/05)
  • Tests : TC-NOM-01/02/03/06/07, TC-ERR-01/02/04/05, matrice de couverture INV-01/02/03/04
  • Convergence sur l’exigence d’audit trail de revocation atomique (revokedAt, revokedBy) et refus si persistance audit impossible.
  • Specification : INV-275-05, cas d’erreur ERR-AUDIT-TRAIL-MISSING, CA-04
  • Tests : TC-NOM-04/05, TC-ERR-06
  • Convergence sur la terminalite REVOKED et l’absence de transition retour autorisee.
  • Specification : INV-275-06, modele d’etats signer
  • Tests : TC-INV-06, TC-INV-07A, TC-NEG-06
  • Convergence sur la reversibilite migration DDL (up/down/up) et preuve schema.
  • Specification : CA-08, section 10.4, T9
  • Tests : TC-NOM-09, TC-NR-05
  • Convergence sur la cible de conformite Prolog finale 32/32 et blocage si score inferieur.
  • Specification : CA-06, ERR-COMPLIANCE-NOT-MET, T8
  • Tests : TC-NOM-08, TC-ERR-07, TC-NR-02
  • Convergence explicite sur l’existence de reserves de specification (Q-01/Q-02/Q-03/Q-04) qui limitent la testabilite integrale.
  • Specification : section 10.8 (questions ouvertes)
  • Tests : section 9 (regles non testables), verdict QA

3. Divergences

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

  • DIV-01 : Source de revokedBy contradictoire entre contrat de securite et scenario nominal de test.
  • Source A (Specification) : revokedBy derive exclusivement du contexte d’authentification, jamais fourni par l’appelant (INV-275-10, Flux F3 etape 6, cas ERR-REVOKEDBY-SPOOFING).
  • Source B (Tests) : TC-NOM-04 (GIVEN) indique qu’"une identite de revocation valide est fournie pour revokedBy".
  • Impact : ambiguity de securite sur anti-usurpation et risque de validation d’une implementation non conforme a l’invariant INV-275-10.

  • DIV-02 : Decalage de perimetre d’invariants entre Specification et plan de tests.

  • Source A (Specification) : 12 invariants non negociables (INV-275-01 a INV-275-12), dont autorisation revokeSigner, anti-spoofing revokedBy, serialisation concurrente SELECT ... FOR UPDATE, unicite d’evenement d’audit.
  • Source B (Tests) : couverture explicite arretee a INV-275-08 (matrice section 2 + section 5), sans bloc dedie INV-275-09/10/11/12.
  • Impact : trous de verification sur des exigences de gate critiques (autorisation, anti-usurpation, concurrence forte), risque de faux positif de conformite.

  • DIV-03 : Criteres d’acceptation specification non aligns avec cas de test dedies.

  • Source A (Specification) : CA-04b (autorisation ADMIN|SIGNER_ADMIN), CA-04c (anti-usurpation revokedBy), CA-05b (concurrence revoke/submit et revoke/revoke serialisee), T10/T11/T12/T13.
  • Source B (Tests) : aucun test nominal/erreur dedie ERR-REVOKE-UNAUTHORIZED ni ERR-REVOKEDBY-SPOOFING; pas de scenario concurrent explicite revoke/submit avec ordre de verrou et resultat deterministe tel que specifie.
  • Impact : impossibilite de demonstrer la couverture contractuelle complete annoncee par CA-07.

  • DIV-04 : Incoherence de tracabilite entre identifiants de criteres et references de tests.

  • Source A (Specification) : succes finalite nominale reference CA-02b.
  • Source B (Tests) : TC-NOM-03 reference CA-02 (et non CA-02b) ; matrice associe aussi des couples critere/invariant non strictement alignes (ex. CA-08 mappe sous INV-275-03).
  • Impact : fragilite probatoire pour la gate (evidence mapping ambigu, audit de couverture plus difficile).

4. Zones d'ombre

  • Valeur officielle de FINALITY_DEPTH par environnement (dev/staging/prod) non figee.
  • Mentionnee comme ouverte (Specification Q-01) et non testable (Tests section 9).
  • Liste canonique exhaustive des etats anchor_batch hors FINALIZED non etablie.
  • Mentionnee comme ouverte (Specification Q-02) et bloquante pour exhaustivite (Tests section 9).
  • Regle canonique de normalisation/collision des adresses signer (checksum/casse) non definie.
  • Mentionnee comme ouverte (Specification Q-03) et non testable (Tests section 9).
  • Format de stockage normatif de revokedBy non tranche (UUID interne vs sujet JWT vs identite service account).
  • Mentionnee comme ouverte (Specification Q-04) et non testable (Tests section 9).
  • Comportement API strict en cas d’injection revokedBy non ferme contractuellement (rejet vs ignore) au niveau test oracle.
  • Specification autorise deux comportements selon contrat API (CA-04c/T11), mais le plan de tests ne fixe pas un oracle unique.
  • Politique explicite d’erreur metier sur timeout/deadlock de verrous transactionnels non nommee par code ERR-* dans les deux documents.
  • Specification impose fail-closed en section 10.7, sans code erreur contractuel associe ; tests n’ont pas de cas dedie.

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