Aller au contenu

PD-52 — Dossier de Conformité Gate 3

Story : PD-52 — Setup connexion Ethereum L2 (Polygon/Arbitrum) Epic : PD-187 — BLOCKCHAIN Gate : 3 — CONFORMITY_CHECK (Review Spécification) Date : 2026-02-12 Itération : v1


1. Documents audités

Document Version Date
PD-52-besoin.md v1 2026-02-12
PD-52-specification.md v1 2026-02-12
PD-52-tests.md v1 2026-02-12

2. Artefacts de gate produits

Artefact Description
PD-52-specification-review.md Review initiale (16 écarts identifiés)
PD-52-confrontation-step3.md Contre-audit (12 écarts actifs, 2 révoqués)
PD-52-dossier-conformite-step3.md Ce document
PD-52-verdict-step3-v1.yaml Verdict PMO structuré

3. Synthèse des écarts après confrontation

Écarts bloquants (1)

ID Description Impact
ECT-52-01 Seuil de confirmations par réseau non défini INV-52-09 et CA-52-06 non vérifiables

Écarts majeurs (6)

ID Description Impact
ECT-52-02 Transaction type d'ancrage non définie Tests CA-52-05/06/10 non reproductibles
ECT-52-03 Politique gas ceiling indéterminée ERR-52-07 non falsifiable
ECT-52-05 Timeout d'abandon après reorg non spécifié Test plus prescriptif que spec
ECT-52-07 Codes d'erreur non catalogués Divergence spec↔tests systémique
ECT-52-08 SLA failover sans paramètres de détection SLA 5s potentiellement non tenable
ECT-52-12 Preuve S3 chiffré au repos non spécifiée CA-52-03 partiellement vérifiable pour S3
ECT-52-16 Format signature EIP-191/712 non spécifié Test plus restrictif que spec

Écarts mineurs (5)

ID Description
ECT-52-04 Code CUSTODY_MODE_AMBIGUOUS non dans §6
ECT-52-06 Couche validation payload non spécifiée
ECT-52-09 Concurrence wallet hors périmètre PD-52
ECT-52-10 Seuil gas 50% peu discriminant
ECT-52-13 Format observabilité indéfini
ECT-52-14 Connectivité ponctuelle vs fiabilité

Écarts révoqués (2)

ID Raison de révocation
ECT-52-11 Scanner l'historique git est une pratique standard conforme à INV-52-03
ECT-52-15 Duplication de couverture = défense en profondeur, pas incohérence

4. Points à clarifier prioritaires

Les écarts identifiés corrèlent avec les points à clarifier de la spec §10 :

Point Écart lié Priorité
#1 — Seuil confirmations ECT-52-01 Critique
#2 — Transaction type ECT-52-02 Haute
#3 — Politique gas ECT-52-03 Haute
#5 — Preuve S3 chiffré ECT-52-12 Moyenne (si S3 choisi)
#6 — Format observabilité ECT-52-13 Basse

5. Pattern systémique identifié

Les tests compensent les imprécisions de la spec en introduisant des décisions d'implémentation non contractualisées : - Codes d'erreur inventés (6 écarts) - Formats de signature imposés - Timeouts et politiques ajoutés

Ce pattern crée une ambiguïté sur la source de vérité : la spec ou les tests ?

Recommandation : Aligner la spec sur les décisions des tests OU réviser les tests pour accepter tout comportement conforme à la spec.

6. Learnings appliqués

Learning Application Verdict
PD-7 : Tests CI obligatoires INV-52-12, CA-52-12 ✅ Correctement intégré
PD-36 : PKCS#11 / HSM S1 défini via PKCS#11 ⚠️ Pool sessions non contractualisé
PD-37 : Indépendance vérification Point #8 clarifications ⚠️ Identifié mais non résolu
PD-19 : Critères mesurables Seuils explicites ✅ Correctement intégré
PD-239 : Payload non spécifié ECT-52-02 ❌ Pattern récurrent

7. Recommandation pré-verdict

Avant passage au plan d'implémentation :

  1. OBLIGATOIRE : Fixer le seuil de confirmations par réseau (ECT-52-01)
  2. Proposition : Polygon testnet = 5 confirmations (~10s), Arbitrum testnet = 1 confirmation (soft-finality)

  3. RECOMMANDÉ : Définir le catalogue de codes d'erreur (ECT-52-07)

  4. Ajouter à la spec §6 les codes : CUSTODY_MODE_UNKNOWN, RPC_INVALID_ENDPOINT, MAINNET_FORBIDDEN

  5. RECOMMANDÉ : Spécifier le payload de transaction type (ECT-52-02)

  6. Proposition : data = keccak256("ProbatioVault:test:ancrage:" + timestamp) vers adresse sender

Verdict préliminaire

NON_CONFORME — 1 écart bloquant non résolu (ECT-52-01)

Le scoring détaillé est dans le verdict YAML.