Date : 2026-03-13 Story : PD-254 — Protocole migration probatoire Gate : 5 — AMBIGUITY Itération : v1 Reviewers : Claude (P1 review + P2 confrontation — fallback Art. II, prompts >100KB)
1. Documents analysés
| Document | Auteur | Version | Taille |
| PD-254-specification.md | ChatGPT (corrigé Claude v2) | v2 | 32KB |
| PD-254-tests.md | ChatGPT (corrigé Claude v2) | v2 | 26KB |
| PD-254-plan.md | Claude -p | v1 | 34KB |
| PD-254-code-contracts.yaml | Claude -p | v1 | 16KB |
2. Écarts identifiés (post-confrontation)
Majeurs (1)
| ID | Type | Constat | Source | Impact |
| DIV-02 | Contrainte technique | Dépendances inter-PD (PD-44, PD-54, PD-55, PD-36/37) sans statut (DONE/TODO/STUB) | P1-écart2, P2-DIV-02 | Impossible de déterminer si l'implémentation peut démarrer |
Mineurs (8)
| ID | Type | Constat | Source | Impact |
| DIV-01 | Contrainte technique | Framework de test non nommé (Jest implicite NestJS) | P1-écart1, P2-DIV-01 | Documentation ambiguë |
| DIV-03 | Contrainte technique | Version canonicalize non figée (v1 CJS, v2 ESM-only future) | P1-écart3, P2-DIV-03 | Risque de casse future |
| DIV-04 | Hypothèse implicite | Mécanisme de seed sampling non spécifié (identifié dans plan §3 comme risque) | P1-écart4, P2-DIV-04 | Reproductibilité à préciser |
| DIV-05 | Risque sécurité | Lock Redis sans fencing token (atténué par contexte batch + idempotence) | P1-écart5, P2-DIV-05 | Risque théorique négligeable |
| DIV-06 | Hypothèse implicite | Migrations TypeORM (CREATE TABLE) non listées dans les tâches | P1-écart6, P2-DIV-06 | Oubli potentiel |
| DIV-07 | Hypothèse implicite | Disponibilité Redis non en précondition F1 | P1-écart7, P2-DIV-07 | Comportement fail-open possible |
| DIV-08 | Incohérence Plan↔Tests | TC-PRECHECK-EXP-01 dans le plan mais absent de tests.md | P1-écart8, P2-DIV-08 | Asymétrie documentaire |
| DIV-10 | Non-conformité Spec | Retry 3× I/O non spécifié dans la spec | P1-écart10, P2-DIV-10 | Ajout comportemental |
Cosmétiques (2)
| ID | Type | Constat | Source |
| DIV-09 | Non-conformité Spec | Mapping codes HTTP — décision d'implémentation légitime | P1-écart9, P2-DIV-09 |
| DIV-11 | Contrainte technique | Variables CI non documentées | P1-écart11, P2-DIV-11 |
Zones d'ombre (3)
- ZO-01 : Taille maximale du manifest et performance sérialisation (source_object_count max 999M)
- ZO-02 : Rétention artefacts campagnes échouées (valeur probatoire non contractualisée)
- ZO-03 : Interaction lock expiré + réconciliation orphelin
3. Dérogation Art. II
Les deux phases (review + confrontation) ont été exécutées par claude -p au lieu de ChatGPT. Raison : prompts assemblés de 116-118KB, au-dessus du seuil ~30KB d'OpenCode. Dérogation documentée et non structurelle.
4. Scoring
| Critère | Score | Justification |
| Feasibility | 8.5 | Plan réalisable avec la stack existante. Découpage 8 composants cohérent. Seul le statut des dépendances inter-PD est un risque de blocage (1 majeur). |
| Coverage | 8.0 | 11/11 invariants mappés, 18/18 CA mappés, 40+ TC référencés. TC-PRECHECK-EXP-01 ajouté mais absent de tests.md (asymétrie documentaire). |
| Risk_mitigation | 7.5 | Learnings PD-282/PD-85/PD-63 intégrés. Fencing token absent mais contexte batch + idempotence atténue. Taille manifest non bornée (ZO-01). |
| Coherence | 8.0 | Plan↔Spec↔Tests globalement cohérents. Quelques ajouts non spécifiés (retry, codes HTTP) mais raisonnables. Dépendances inter-PD non documentées (DIV-02). |
5. Verdict préliminaire
- Scores : feasibility=8.5, coverage=8.0, risk_mitigation=7.5, coherence=8.0
- Moyenne : 8.0
- Score min : 7.5 (risk_mitigation)
- Règle : Moyenne >= 7, score min >= 6, au moins un score < 8 → RESERVE