Aller au contenu

PD-56 — 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-56-specification.md (étape d'origine : SPECIFICATION contractuelle PD-56 v3)
  • PD-56-tests.md (étape d'origine : TESTS contractuels PD-56 v3)

2. Convergences

  • Le contrat de sortie est aligné : status='available' avec preuve complète, status='pending' avec estimatedAvailableAt UTC, et exclusion de CORRUPTED du status exposé (SPEC §1, §5.1, §6 ; TESTS TC-NOM-01, TC-NOM-02, TC-ERR-10).
  • Les règles de validation format/bornes et le mapping des codes ERR-56-01..05 sont cohérents entre les deux documents (SPEC §5.1, §5.2, §6 ; TESTS TC-INV-07, TC-ERR-01..08, TC-NEG-01..14).
  • La machine d’état est convergente sur les transitions autorisées/interdites, y compris la terminalité de CORRUPTED et l’interdiction AVAILABLE->PENDING (SPEC §5.4 ; TESTS TC-INV-06, TC-ERR-09, TC-ERR-10, TC-ERR-11).
  • Le traitement de corruption cryptographique/structurelle est aligné : persistance vers CORRUPTED, code d’erreur dédié, puis anti-flood en relecture (SPEC F-04/F-06, INV-56-09 ; TESTS TC-ERR-04, TC-ERR-08, TC-NOM-11).
  • La vérification off-chain SHA-256 avec hashPair(sorted(a,b)) est convergente (SPEC F-03, CA-56-02/03 ; TESTS TC-NOM-04).
  • Le cas limite treeSize=1 avec merklePath=[] est explicitement convergent comme cas valide (SPEC §5.1, CA-56-09, SCN-56-14 ; TESTS TC-NOM-12, TC-INV-07).
  • Le cas pending sans ETA calculable (finalized_at IS NULL et window_end IS NULL) est aligné sur ERR-56-05 (SPEC F-05, ERR-56-05, CA-56-13 ; TESTS TC-ERR-03).
  • Aucune contradiction fonctionnelle explicite n’a été trouvée sur les flux nominaux, codes d’erreur, statuts et transitions.

3. Divergences

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

  • DIV-01 : Opposabilité du critère de performance CA-56-05
  • Source A (SPECIFICATION) : CA-56-05 est listé dans les « Critères d’acceptation (testables) » avec exigence P95 <= 10 ms (SPEC §7, §5.2).
  • Source B (TESTS) : CA-56-05 est déclaré « Oui (conditionnelle) » puis classé dans les « Règles non testables » tant que le benchmark officiel n’est pas figé (TESTS §2 matrice, §9, §10).
  • Impact : statut de conformité performance non opposable de manière stable à la gate.

  • DIV-02 : Caractère absolu de INV-56-08 vs couverture de preuve partielle

  • Source A (SPECIFICATION) : INV-56-08 est « non négociable » et formulé de manière absolue (« aucun secret cryptographique en clair ») (SPEC §4).
  • Source B (TESTS) : la couverture INV-56-08 est explicitement « partielle » et la preuve absolue est classée « non testable » dans le périmètre PD-56 seul (TESTS §2 matrice, §5, §9).
  • Impact : conformité globale à INV-56-08 non démontrable avec les seuls artefacts de test PD-56.

4. Zones d'ombre

  • La source canonique exacte eventId -> eventHash pour tous les types d’événements reste non figée (SPEC §10.2 Q1 ; TESTS §9 « couverture universelle non testable »).
  • Le comportement contractuel pour un eventId en lot FAILED mais absent de lot finalisé n’est pas tranché (SPEC §10.2 Q2).
  • La politique opérationnelle quand un pending dépasse durablement 120 minutes n’est pas définie au-delà de la règle de recalcul ETA (SPEC §5.3, §10.2 Q3).
  • L’environnement benchmark officiel pour CA-56-05 n’est pas fixé (SPEC §10.2 Q4 ; TESTS §9).
  • La preuve « système complet » de INV-56-08 au-delà du flux PD-56 n’est couverte par aucun des deux documents (TESTS §9, mentionné comme hors périmètre de preuve globale).
  • Le processus opérationnel de « résolution manuelle » après passage en CORRUPTED n’est pas décrit (SPEC §5.4 indique « résolution manuelle uniquement », sans procédure associé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