Aller au contenu

Dossier de conformité Gate 5 — PD-55

Métadonnées

Champ Valeur
Story PD-55
Gate 5 (AMBIGUITY)
Itération v1
Date 2026-02-21
Reviewer P1 ChatGPT (review plan)
Reviewer P2 Claude (confrontation)

Synthèse des écarts

Écarts après confrontation

ECT Type Gravité initiale Gravité révisée Verdict
ECT-01 Couverture BLOQUANT MAJEUR CONFIRMÉ (reclassé)
ECT-02 Hypothèse BLOQUANT MAJEUR CONFIRMÉ
ECT-03 Risque MAJEUR MAJEUR INSUFFISANT
ECT-04 Code Contract MAJEUR MINEUR NUANCÉ
ECT-05 Couverture MAJEUR MAJEUR CONFIRMÉ
ECT-06 Contrainte MAJEUR MINEUR NUANCÉ
ECT-07 Test MAJEUR MINEUR CONFIRMÉ (reclassé)
ECT-08 Couverture BLOQUANT - INVALIDE

Bilan : 0 bloquant, 4 majeurs, 3 mineurs


Analyse des majeurs

ECT-01 — Immutabilité explicite

Problème : Le plan définit un état FINALIZED mais ne documente pas la contrainte d'immutabilité au niveau persistence.

Correction proposée : Enrichir CC-55-01 avec :

"Contrainte d'immutabilité : une fois en status FINALIZED, toute tentative d'UPDATE sur les colonnes status, merkle_root, tx_id, finalized_at DOIT être rejetée (trigger DB ou contrainte CHECK)."

ECT-02 — Atomicité rollback

Problème : Le plan mentionne failBatch() mais ne précise pas l'atomicité de la dissociation événements.

Correction proposée : Enrichir CC-55-03 avec :

"failBatch() : transaction atomique qui (1) passe le batch en FAILED, (2) dissocie tous les événements (anchor_batch_id = NULL) dans la même transaction. Aucun événement ne peut rester orphelin."

ECT-03 — Détection trous

Problème : Le mécanisme de détection de fenêtres manquantes n'est pas formalisé.

Correction proposée : Enrichir Phase 4 (Alerting) avec :

"Le service anchor-alert.service.ts inclut une méthode detectWindowGaps() qui compare les fenêtres attendues (10 min) avec les fenêtres réellement couvertes. Toute fenêtre manquante > 15 min déclenche une alerte."

ECT-05 — Journalisation homogène

Problème : La journalisation est portée par le processor mais pas explicitement par les services.

Correction proposée : Enrichir CC-55-03 et CC-55-04 avec :

"Chaque méthode émettant une transition d'état (createBatch, finalizeBatch, failBatch, markEventsAnchored) DOIT journaliser via AuditService avec : timestamp ISO 8601, from_state, to_state, entity_id, correlation_id."


Grille de scoring

Critère Score Justification
feasibility 8.0 Dépendances vérifiées, architecture claire, phases cohérentes
coverage 7.5 Mapping INV/CA complet mais manque explicitation contraintes
risk_mitigation 7.5 Risques identifiés, mitigations partielles (alerting à préciser)
coherence 8.0 Code contracts cohérents, pas de chevauchement

Moyenne : 7.75/10

Règle de dérivation : - Moyenne >= 7 ✓ - Au moins un score < 8 (coverage = 7.5, risk_mitigation = 7.5)

Verdict mathématique : RESERVE


Recommandation

RESERVE avec corrections mineures du plan : 1. Expliciter contrainte immutabilité (ECT-01) 2. Documenter atomicité failBatch (ECT-02) 3. Préciser détection trous dans alerting (ECT-03) 4. Homogénéiser journalisation services (ECT-05)

Ces corrections sont des enrichissements documentaires, pas des modifications architecturales.