Aller au contenu

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 de treeId/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-discriminant ne traite que le routage par proof_version.
  • Source B (tests) : Matrice §2 associe INV-294-05 à TC-ERR-02/TC-ERR-03 (cas leaf_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-source avec un critère non documentaire.

  • Source A (specification) : INV-294-09 porte sur la gouvernance documentaire "single source" (§5.1), distinct de CA-294-06 (validation de formats runtime).
  • Source B (tests) : Matrice §2 associe INV-294-09 à CA-294-06 via TC-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-11 exige 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-10 et CA-294-12 formulent 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ée proof_version=2) : signalée en Q-294-01 et 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-01 ré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-10 non 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 ```