Aller au contenu

PD-86 — Dossier de conformite (Etape 3 — CONFORMITY_CHECK)

Story : PD-86 — Detection de contenu sensible (IA locale) Epic : PD-185 — B2C-MINEURS Projet : ProbatioVault-app (iOS) Gate : 3 — CONFORMITY_CHECK Iteration : v1 Date : 2026-02-24


1. Documents de reference

Document Statut Fichier
Expression de besoin Present PD-86-besoin.md
Specification Present PD-86-specification.md
Cahier de tests Present PD-86-tests.md
Review spec (Phase 1) Present PD-86-review-step3.md
Confrontation (Phase 2) Present PD-86-confrontation-step3.md

2. Sources d'ecarts

  • Phase 1 — Review Claude : 20 constats (4 bloquants, 9 majeurs, 7 mineurs)
  • Phase 2 — Confrontation ChatGPT : 1 divergence (DIV-01), 6 zones d'ombre

3. Synthese des ecarts

Ecarts BLOQUANTS

ID Type Source Description References
ECT-01 AMB C-01 + ZO-04 "Pages representatives" PDF non definies : aucune strategie d'echantillonnage contractuelle (nombre de pages, selection premiere/mediane/derniere). Contrairement aux videos (12 frames, uniforme + 2 premieres secondes), les PDF n'ont pas de regle. TC-86-25 et PERF-86-05 non verifiables. Signale par ST-86-04. Spec §8, §2.1, Q8
ECT-02 AMB C-02 + ZO-01 Collision suppressWarning=true x erreur d'analyse : le contrat gate viewer ne resout pas le conflit quand un document a la preference "ne plus prevenir" ET que l'analyse echoue (TIMEOUT, MODEL_UNAVAILABLE). INV-86-09 (politique prudente) vs preference utilisateur : aucune regle de precedence. Spec §5.2, §9, INV-86-09
ECT-03 SEC C-03 Mineur peut contourner INV-86-06 via suppressWarning : le contrat §5.2 autorise l'omission du modal quand suppressWarning=true sans condition sur isMinor. Un mineur pourrait desactiver la protection document par document. Aucun test ne couvre isMinor=true + suppressWarning=true. Risque conformite B2C-MINEURS. Spec §5.2, INV-86-06, TC-86-13
ECT-04 ECT C-04 Cache non invalide lors du changement de seuils : INV-86-13 invalide le cache uniquement si modelVersion change. Si l'utilisateur abaisse un seuil (ex: NUDITE 0.70 → 0.55), les documents deja classifies ne sont pas reclassifies. Le resultat est l'inverse de l'intention utilisateur. Spec §4.2, §3.1, INV-86-13

Ecarts MAJEURS

ID Type Source Description References
ECT-05 AMB C-05 + ZO-05 Budget 700 ms sans device cible ni percentile : aucune matrice de devices de reference. Aucun percentile (P50/P95/P99). PERF-86-01 non deterministe. Signale par ST-86-03. Spec §8, §10
ECT-06 AMB C-06 + ZO-06 Compatibilite iOS minimale non specifiee : deleguee a l'implementation. Impacte disponibilite CoreML/Vision, chiffrement Data Protection, performances inference. Spec §10
ECT-07 AMB C-07 Source de isMinor non contractualisee : flag isMinor: Bool en entree sans source definie (profil, age, flag serveur). Si falsifiable localement, INV-86-06 est contournable. Learning PD-106 : scope mineur = 4 iterations Gate 3. Spec §5.1, INV-86-06
ECT-08 SEC C-08 Seuils configurables par mineur sans garde-fou : un mineur peut monter tous les seuils a 0.95, rendant la detection quasi inoperante. Pas de seuils plancher pour mineurs. Risque conformite. Spec §3.1, Q10, INV-86-06
ECT-09 AMB C-09 Timeout d'inference sans borne temporelle : le comportement TIMEOUT est specifie (modal prudent) mais la duree de timeout n'est pas contractualisee (1s ? 30s ?). TC-86-08 non deterministe. Spec §Q7, §9
ECT-10 ECT C-10 UNSUPPORTED_FORMAT absent du gate viewer : le contrat §5.2 ne liste pas ce statut dans les cas declenchant un modal prudent. Un format non supporte par le modele ML mais affichable par le viewer iOS pourrait etre rendu sans analyse ni consentement. Spec §5.2, §9
ECT-11 DIV C-11 Pas de test : desactivation globale + document deja sensible : INV-86-14 empeche les nouvelles classifications, TC-86-10 verifie cela. Mais aucun test ne couvre l'ouverture d'un document deja classifie sensible quand la detection est desactivee. Comportement indetermine. Learning PD-174 : distinguer "desactiver" vs "effacer". INV-86-14, TC-86-10
ECT-12 ECT C-12 Race condition : reclassification concurrente : aucune specification d'idempotence, lock ou mutex pour le meme document ouvert dans deux contextes simultanement (split view iPad). Risque de corruption du cache de verdict. Learning PD-105 : PQueue/mutex obligatoire. INV-86-13, §5.1, §3.1
ECT-13 DIV C-13 + ZO-02 Pas de test pour les bornes de seuils : seuils bornes [0.50, 0.95] sans cas de test verifiant le rejet hors bornes (0.49, 0.96) ni le comportement aux bornes exactes. Spec §3.1

Ecarts MINEURS

ID Type Source Description References
ECT-14 AMB C-14 InMemoryHandle non defini, pas de gestion OOM pour fichiers volumineux Spec §5.1
ECT-15 DIV C-15 TC-86-18/19/20 couvrent INV-86-01 indirectement (couverture fragile) Matrice §1.1
ECT-16 AMB C-16 INV-86-10 (zeroization best-effort) sans CA associe, critere de reussite indetermine INV-86-10, ST-86-01
ECT-17 AMB C-17 "Reconstituable" dans INV-86-12 non defini ; TC-86-15 subjectif. Signale ST-86-02 INV-86-12, ST-86-02
ECT-18 ECT C-18 Scores arrondis Float(2d) : moment arrondi vs decision non specifie Spec §3.1, §3.2
ECT-19 AMB C-19 Mecanismes systeme iOS d'apercu non listes (exigence ouverte). Learning PD-248. Spec §7
ECT-20 AMB C-20 ViewerGateDecision.requiresExplicitConfirmation : regle de calcul absente Spec §3.1
ECT-21 DIV DIV-01 Contradiction cache : documentId dans la structure : la spec inclut documentId dans DocumentSensitiveVerdict, les tests (TC-86-06) ne le listent pas dans les champs autorises. Ambiguite de conformite. Spec §3.1, TC-86-06, CA-86-06
ECT-22 AMB ZO-03 Unicite (documentId, modelVersion) definie dans la spec sans scenario de validation/collision Spec §3.1

4. Scoring

Methode de calcul

Base = 10. Deductions : -2 par bloquant, -1 par majeur, -0.25 par mineur.

Decompte

Gravite Nombre Deduction unitaire Total
Bloquant 4 -2.0 -8.0
Majeur 9 -1.0 -9.0
Mineur 9 -0.25 -2.25
Total deductions -19.25

Score brut : 10 - 19.25 = negatif (plancher 1.0)

Attribution par critere (Gate 3 : completeness, testability, clarity, traceability)

Critere Score Justification
completeness 4.0 4 ecarts bloquants (PDF, suppressWarning x erreur, mineur x suppressWarning, cache seuils). 9 ecarts majeurs dont 2 liees a la protection des mineurs (C-07 source isMinor, C-08 seuils mineurs). Perimetre fonctionnel couvert mais lacunes structurelles.
testability 4.5 3 ecarts de type "non testable" (C-05 budget, C-09 timeout, C-16 zeroization). 2 ecarts "pas de test" (C-11, C-13). Matrice de couverture 15/15 INV et 12/12 CA formellement complete mais 5 tests non deterministes ou absents.
clarity 5.0 7 ambiguites (C-01 PDF, C-02 collision, C-06 iOS min, C-07 isMinor, C-09 timeout, C-14 InMemoryHandle, C-17 reconstituable). 1 divergence spec/tests (DIV-01 documentId). Structure globale claire, mais les zones floues sont concentrees sur des points critiques.
traceability 6.0 Matrice de couverture INV/CA complete. Referencement croise spec↔tests present. Signalements ST-86-01..04 pertinents. Points faibles : couverture indirecte INV-86-01 (C-15), INV-86-10 sans CA (C-16), DIV-01 non resolue.

Scores finaux

Critere Score
completeness 4.0
testability 4.5
clarity 5.0
traceability 6.0
Moyenne 4.875

5. Verdict attendu

  • GO
  • RESERVE
  • NON_CONFORME — Moyenne 4.875 < 7 ET scores < 6 sur 3 criteres
  • ESCALADE