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 :
- OBLIGATOIRE : Fixer le seuil de confirmations par réseau (ECT-52-01)
-
Proposition : Polygon testnet = 5 confirmations (~10s), Arbitrum testnet = 1 confirmation (soft-finality)
-
RECOMMANDÉ : Définir le catalogue de codes d'erreur (ECT-52-07)
-
Ajouter à la spec §6 les codes :
CUSTODY_MODE_UNKNOWN,RPC_INVALID_ENDPOINT,MAINNET_FORBIDDEN -
RECOMMANDÉ : Spécifier le payload de transaction type (ECT-52-02)
- 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.