1. Références
- Spécification : PD-56-specification.md
- Tests : PD-56-tests.md
- Plan : PD-56-plan.md (corrigé post-v1)
- Code Contracts : PD-56-code-contracts.yaml
- Review v2 : PD-56-review-step5-v2.md (Codex/GPT-5)
- Confrontation v2 : PD-56-confrontation-step5-v2.md (Claude)
- Date : 2026-03-31
- Itération : v2 (précédent verdict v1 : NON_CONFORME, 6.25)
2. Résolution des écarts v1
| Écart v1 | Score v1 | Résolution v2 | Statut |
| feasibility (5.0) | Critique | Plan corrigé §9 point 4 : patron concurrence clarifié, migration DDL détaillée | Partiellement résolu (DIV-02 persiste) |
| coverage (6.5) | Sous-seuil | Confrontation C-04 confirme convergence anti-flood. Couverture INV améliorée | Résolu |
| coherence (6.0) | Sous-seuil | Transition PENDING→AVAILABLE clarifiée, contradictions plan/diagramme corrigées | Partiellement résolu (DIV-01 persiste mais mineur) |
| risk_mitigation (7.5) | OK | Maintenu | OK |
3. Écarts résiduels (review v2 + confrontation v2)
3.1 Écarts BLOQUANTS de la review v2 — Statut post-confrontation
| Réf | Écart review v2 | Confrontation v2 | Verdict |
| R-01 | Anti-flood INV-56-09 multi-instance (BLOQUANT) | C-04 : Convergence confirmée — UPDATE WHERE state != 'CORRUPTED' RETURNING garantit unicité première détection | RÉSOLU — Le plan corrigé utilise un pattern atomique single-statement |
| R-02 | Tests irréalisables TC-NOM-11/TC-ERR-10 (BLOQUANT) | C-04 : Tests alignés avec le plan corrigé | RÉSOLU — Conséquence de R-01 |
3.2 Écarts MAJEURS restants
| Réf | Type | Description | Source | Impact | Gravité |
| ECT-01 | AMB | Patron de concurrence contradictoire : UPDATE WHERE RETURNING (§3) vs SELECT FOR UPDATE (§9 pt4) | Review v2 + Confrontation DIV-02 | Ambiguïté pour l'implémenteur — deux patrons concurrents, pas de directive univoque | MAJEUR |
| ECT-02 | AMB | Interface C9 ETA Calculator ne supporte pas le recalcul sur fenêtre suivante (un seul batch en entrée) | Review v2 + Confrontation DIV-05 | TC-NOM-07 non satisfaisable avec l'interface actuelle | MAJEUR |
| ECT-03 | AMB | Résolution eventId→eventHash non contractualisée (requête exacte absente) | Confrontation ZO-01 | Composant C4 (EventResolver) ne peut pas être codé sans clarification | MAJEUR |
| ECT-04 | DIV | Filtre status != FAILED non spécifié — comportement batch FAILED indéfini | Review v2 | Risque de retour pending avec ETA sur batch qui ne sera jamais finalisé | MAJEUR |
| ECT-05 | DIV | Exigence DDL commitTransaction() avant WHERE non documentée dans migration | Review v2 | Violation potentielle de la règle PostgreSQL connue (REX PD-282) | MAJEUR |
| ECT-06 | AMB | Transaction scope flux nominal — READ COMMITTED sans transaction explicite | Confrontation ZO-08 | Phantom read possible entre queries séquentielles | MAJEUR |
3.3 Écarts MINEURS restants
| Réf | Type | Description | Source | Impact | Gravité |
| ECT-07 | DIV | Nommage paramètre eventHash vs leafHash + ordre inversé | Confrontation DIV-04 | Confusion implémenteur, risque inversion arguments | MINEUR |
| ECT-08 | AMB | Script off-chain C12 — exécution .ts avec node sans transpilation | Confrontation ZO-05 | Mécanisme d'exécution non précisé | MINEUR |
| ECT-09 | AMB | Hypothèse MerkleProofVerifier merklePath=[] non vérifiée | Confrontation ZO-06 | Hypothèse implicite sur code existant PD-237 | MINEUR |
| ECT-10 | AMB | Environnement benchmark CA-56-05 non figé | Confrontation ZO-04 | Non-opposabilité du critère de performance | MINEUR |
| ECT-11 | AMB | Protection timing attack non contractualisée | Confrontation ZO-03 | Aucun TC ne valide constantTimeCompare | MINEUR |
| ECT-12 | DIV | Hypothèse H-56-06 spec factuellement fausse (PD-237 ne fournit pas la colonne) | Confrontation DIV-03 | Divergence spec/réalité, corrigée dans le plan | MINEUR |
| ECT-13 | AMB | Requête batch candidat — clause de jointure non contractualisée | Confrontation ZO-07 | Ambiguïté implémentation SQL | MINEUR |
4. Synthèse
| Gravité | v1 | v2 | Delta |
| BLOQUANT | 2 | 0 | -2 (résolus) |
| MAJEUR | 7 | 6 | -1 |
| MINEUR | 1 | 7 | +6 (détection affinée) |
Améliorations v1→v2 : - Les 2 BLOQUANTS (anti-flood multi-instance) sont résolus par la correction du plan - Le score feasibility devrait remonter significativement - La cohérence plan/spec est améliorée sur la machine d'état
Risques résiduels : - ECT-01 à ECT-06 restent MAJEURS mais aucun n'est structurellement bloquant - La majorité sont des ambiguïtés d'implémentation résolubles par l'implémenteur - ECT-03 (eventId→eventHash) est le plus critique des MAJEURS
5. Recommandation
Le plan corrigé résout les points structurels identifiés en v1. Les écarts résiduels sont des ambiguïtés d'implémentation, pas des contradictions fondamentales. Le coeur contractuel (12 convergences) est solide.