Aller au contenu

PD-101 — Dossier de conformité Gate 3 (CONFORMITY_CHECK) — v1

Méta

  • Story : PD-101 — Implémenter upload document avec progress
  • Gate : 3 (CONFORMITY_CHECK)
  • Itération : v1
  • Date : 2026-03-10
  • P1 (reviewer) : Claude
  • P2 (confrontation) : Claude (dérogation Art. II — prompt > 30KB, OpenCode mode agentic)

Documents examinés

  • PD-101-specification.md (261 lignes, auteur ChatGPT)
  • PD-101-tests.md (293 lignes, auteur ChatGPT)

Synthèse des écarts

Écarts BLOQUANTS (3)

ID Type Résumé Source
E-02 Contradiction Transition READY → CANCELLED interdite en §5.6 mais ERR-07 suppose annulation possible à tout moment. Document READY peut être scellé sans consentement. Review P1 + CON P2
E-05 Ambiguïté Validation fonctionnelle du hash (INV-05) non implémentable en zero-knowledge. Le mobile calcule mais ne vérifie pas par recalcul. Aucun mécanisme décrit. Review P1 + ZO-08 P2
E-16 Ambiguïté Granularité du nonce (file-level vs chunk-level) non spécifiée. Si chiffrement chunk-level, nonce unique = vulnérabilité catastrophique (nonce reuse GCM). Review P1

Écarts MAJEURS (9)

ID Type Résumé Source
E-01 Ambiguïté Photos picker + transcodage + mode fidèle : optimized=false mais fichier altéré par iOS Review P1
E-03 Ambiguïté Format preuve de consentement non défini (booléen+timestamp ? audit signé ?) Review P1
E-06 Spec↔Tests Disclaimer EXIF (flux 5.1 étape 5) sans aucun test Review P1 + DIV-02 P2
E-08 Hypothèse Atomicité AbortMultipartUpload S3 non contractualisée, parts orphelines Review P1
E-09 Spec↔Tests INV-08 (envelope encryption) sans critère d'acceptation Review P1
E-10 Spec↔Tests INV-10 (no-sensitive-logs) sans critère d'acceptation Review P1
E-11 Spec↔Tests TC-INV-01..10 sans scénarios Given/When/Then — non exécutables Review P1 + DIV-03 P2
E-12 Hypothèse Purge mémoire Hermes best-effort vs invariant strict INV-07 Review P1
E-13 Ambiguïté Transition FAILED → UPLOADING autorisée mais non spécifiée Review P1 + ZO-05 P2

Écarts MINEURS (4)

ID Type Résumé Source
E-04 Ambiguïté Seuil 10 MB : SI (10^7) ou binaire (10×1024²) ? Review P1
E-07 Terminologie Journal métier / audit / technique — 3 termes non distingués Review P1
E-14 Spec↔Tests TC-ERR-06 manquant (saut de numérotation) Review P1 + DIV-01 P2
E-15 Sécurité Transport base64 nonce/auth_tag sans intégrité contractualisée (TLS implicite) Review P1

Zones d'ombre P2 non couvertes par P1

ID Résumé
ZO-01 Qui génère doc_id (client vs backend) ?
ZO-02 Taille chunk aux bornes [5,50] non testée
ZO-03 Point de calcul hash (mémoire vs fichier temp)
ZO-04 Contraintes iOS background URLSession en React Native
ZO-06 Annulation upload simple non testée
ZO-07 Concurrence de flux (2 uploads simultanés)

Scoring

Critère Score Justification
completeness 6.0 3 bloquants (-6), compensé par couverture globale solide (10/10 INV, 12/12 CA)
testability 5.5 10 tests d'invariants sans G/W/T (-2.5), disclaimer EXIF non testé (-1), TC-ERR-06 manquant (-0.25), performance non reproductible (-0.25), worker réconciliation non testé (-0.25)
clarity 7.0 Terminologie journal 3x (-0.25), seuil MB non défini (-0.25), format consentement absent (-1), architecture chiffrement chunk/file ambiguë (-1), transition FAILED→UPLOADING non spécifiée (-0.5)
traceability 7.5 INV-08 sans CA (-1), INV-10 sans CA (-1), bonne couverture globale (+0.5)