PD-294 — 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-294-specification.md(spécification contractuelle PD-294)PD-294-tests.md(scénarios de tests contractuels PD-294)
2. Convergences¶
- Le contrat de sortie v2 est aligné : émission avec exactement 7 champs v2 (
proof_version,leaf_index,tree_size,inclusion_path,merkle_root,hash_algorithm,event_hash) et exclusion detreeId/hashAlgorithmVersion(Spec: INV-294-01, INV-294-07, CA-294-01, CA-294-05 ; Tests: TC-NOM-01, TC-ERR-08, TC-NR-02). - Le comportement
hash_algorithm='sha3-256'est cohérent entre normalisation et validation stricte (Spec: INV-294-02, §5.5, ERR-294-07 ; Tests: TC-NOM-02, TC-ERR-07). - Le principe dual-read/single-write et l'absence de réécriture rétroactive v1 sont convergents (Spec: INV-294-03, INV-294-04, CA-294-03, CA-294-11 ; Tests: TC-NOM-02, TC-NOM-03, TC-NR-01).
- Le discriminant de version est aligné (
absent=>v1,2=>v2, autre=>rejet) (Spec: INV-294-05, ERR-294-01 ; Tests: TC-NOM-03, TC-ERR-01). - Les validations de bornes et de formats sont convergentes (Spec: §5.1, §5.2, ERR-294-02..06 ; Tests: TC-NOM-04, TC-NOM-05, TC-ERR-02..06, TC-NEG-01, TC-NEG-02).
- La vérification RFC 9162 adaptée SHA3-256 est couverte de façon symétrique (positif/négatif) (Spec: INV-294-06, §5.8, ERR-294-09, CA-294-09, CA-294-10 ; Tests: TC-NOM-06, TC-ERR-09).
- Le hors périmètre structurel et l'absence de migration DDL sont cohérents avec les non-régressions prévues (Spec: §2 Exclu, §5.9 ; Tests: TC-NR-03, TC-NR-04).
3. Divergences¶
⚠️ Les conflits ne doivent JAMAIS être lissés. Chaque divergence est rendue visible.
- DIV-01 : Référence épique incohérente entre les documents.
- Source A (specification) : Référence explicite
Epic : ProbatioVault-backend/docs/epics/probatoire/PD-294-merkle-rfc9162. - Source B (tests) : Référence
Epic : EPIC-XX(placeholder non résolu). -
Impact : Traçabilité documentaire incomplète en gate (risque d'alignement Jira/Epic non démontrable).
-
DIV-02 : Matrice de couverture : rattachement de tests de bornes numériques à l'invariant de discriminant.
- Source A (specification) :
INV-294-05-discriminantne traite que le routage parproof_version. - Source B (tests) : Matrice §2 associe
INV-294-05àTC-ERR-02/TC-ERR-03(casleaf_index/tree_size). -
Impact : Traçabilité Invariant->Tests ambiguë ; lecture de couverture potentiellement trompeuse en audit.
-
DIV-03 : Matrice de couverture : couplage
INV-294-09-format-single-sourceavec un critère non documentaire. - Source A (specification) :
INV-294-09porte sur la gouvernance documentaire "single source" (§5.1), distinct deCA-294-06(validation de formats runtime). - Source B (tests) : Matrice §2 associe
INV-294-09àCA-294-06viaTC-NOM-08(test documentaire). -
Impact : Référentiel de conformité mélangé (documentaire vs runtime), risque d'interprétation divergente du statut "couvert".
-
DIV-04 : Transitions interdites : exigence de refus explicite côté tests sans normalisation d'un code d'erreur côté spec.
- Source A (specification) : §5.4 interdit les transitions non listées, mais §6 ne définit aucun
ERR-294-*dédié pour ce cas. - Source B (tests) :
TC-ERR-11exige un refus explicite et §9 classe le code exact comme non testable (Majeur). -
Impact : Oracle de test incomplet pour l'automatisation ; verdict de gate exposé à interprétation manuelle.
-
DIV-05 : Invariant de chiffrement absolu vs testabilité déclarée partielle.
- Source A (specification) :
INV-294-10etCA-294-12formulent une exigence absolue (aucun secret temporaire en clair persistant, si artefact existe). - Source B (tests) : §9 indique que l'exhaustivité absolue est impossible à prouver sans inventaire figé de toutes les surfaces ; verdict QA = "Testable partiellement".
- Impact : Écart entre niveau d'exigence contractuel et niveau de preuve atteignable par les tests définis.
4. Zones d'ombre¶
- Ambiguïté amont non levée sur l'adaptation legacy (
proof_version -> 1 inférévs sortie imposéeproof_version=2) : signalée enQ-294-01et marquée "Bloquant" côté tests, sans décision finale intégrée. - Namespace d'erreurs
ERR-294-*non confirmé avec les conventions backend effectives (Q-294-02) ; pas de mapping canonique final documenté. - Absence de code d'erreur normatif pour les transitions interdites de la machine d'états (spécification d'interdiction présente, sémantique d'erreur absente).
- Vecteur de test
VEC-RFC9162-SHA3-256-01référencé mais non publié dans les deux documents (jeu de données exact non présent). - Inventaire exhaustif des surfaces de persistance à auditer pour
INV-294-10non figé (DB/logs/cache/temp mentionnés, mais sans cartographie normative exhaustive). - Placeholder
{{LEARNINGS}}non renseigné (Q-294-03) ; contraintes historiques potentielles non intégrées. - Référence épique textuelle métier incomplète (
Q-294-04) ; métadonnées de traçabilité inabouties.
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 ```