PD-101 — Dossier de conformité Gate 5 (AMBIGUITY) — v1¶
Méta¶
- Story : PD-101 — Upload probatoire mobile chiffré
- Gate : 5 (AMBIGUITY)
- Itération : v1
- Date : 2026-03-10
- P1 : Claude (fallback — prompt 115KB > 30KB OpenCode limit)
- P2 : Claude (confrontation — prompt 110KB)
- Dérogation Art. II : Même dérogation que Gate 3 — prompts > 30KB.
Écarts BLOQUANTS : 0¶
Écarts MAJEURS (5 review + 3 confrontation)¶
| ID | Type | Résumé | Source | Correction |
|---|---|---|---|---|
| E-01 | Ambiguïté | 500 MB décimal vs 524 288 000 binaire (spec §3.2) | Review | Aligner : spec dit 524 288 000, plan doit utiliser cette valeur |
| E-02 | Faisabilité | TC-INV-08 inspection DB irréalisable côté mobile seul | Review | Reclasser comme test cross-repo backend |
| E-03 | Cohérence | optimizedConsent? optionnel sans garde orchestrateur | Review | Ajouter validation optimized → consent non-null |
| E-04 | Risque | @noble/ciphers ESM-only, config Jest non documentée | Review | Documenter dans section contraintes techniques |
| E-05 | Ambiguïté | Audit fire-and-forget vs fail-closed (learning PD-85/PD-63/PD-262/PD-265) | Review + ZO-09 | Documenter comportement explicite (fail-open justifié ou fail-closed) |
| DIV-01 | Cohérence | Contract T8 observe transitions backend via store Zustand (UI only) | Confrontation | Corriger l'observable dans le contract |
| ZO-05 | Risque | OOM 500 MB non mitigé contractuellement (streaming chunks) | Confrontation | Documenter stratégie streaming avec limite mémoire |
| ZO-06 | Risque | File.readAsArrayBuffer de 500 MB impraticable | Confrontation | Documenter approche chunked read |
Écarts MINEURS (6)¶
| ID | Résumé | Source |
|---|---|---|
| E-06 | cancelUpload() documente READY→CANCELLED mais observable imprécis | Review |
| DIV-02 | Validation format sha3_256 côté client pas dans le plan | Confrontation |
| DIV-03 | Garde PENDING sur annulation (CANCELLED directe) | Confrontation |
| DIV-04 | CSPRNG pour jitter non explicite | Confrontation |
| DIV-05 | Audit EXIF/transcodage non contractualisé dans spec | Confrontation |
| DIV-06 | Worker réconciliation confirmé hors scope mais non tracé | Confrontation |
Scoring¶
| Critère | Score | Justification |
|---|---|---|
| feasibility | 7.5 | OOM 500MB non mitigé (-1), ESM config manquante (-0.5), TC-INV-08 irréalisable mobile (-0.5), mineurs (-0.5) |
| coverage | 8.0 | 10/10 INV couverts, 14/14 CA couverts, T8 observable incorrect (-1), mineurs (-0.5), tests cross-repo manquants (-0.5) |
| risk_mitigation | 7.0 | Audit fire-and-forget non documenté (-1), OOM non mitigé (-1), CSPRNG jitter non explicite (-0.5), mineurs (-0.5) |
| coherence | 8.0 | Bonne cohérence globale. optimizedConsent sans garde (-0.5), 500M vs 524M (-0.5), store UI vs backend (-0.5), mineurs (-0.5) |