Aller au contenu

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

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


1. Documents de reference

Document Statut Fichier
Specification v2 Present PD-86-specification.md (v2.0.0)
Cahier de tests v2 Present PD-86-tests.md (34 TC)
Review v2 (Phase 1) Present PD-86-review-step3-v2.md
Confrontation v2 (Phase 2) Present PD-86-confrontation-step3-v2.md

2. Resolution des ecarts v1

Ecarts BLOQUANTS v1

ID Ecart v1 Statut v2 Resolution
ECT-01 PDF sans strategie d'echantillonnage RESOLU Q8 specifie maxPagesAnalyzed=5, premiere + derniere + 3 intérieures uniformes. TC-86-26 teste la strategie.
ECT-02 Collision suppressWarning x erreur RESOLU §5.2 definit un ordre de precedence contractuel (6 regles). INV-86-09 prime toujours.
ECT-03 Mineur contourne via suppressWarning RESOLU INV-86-16 : si isMinor=true, suppressWarning ignore. TC-86-27 teste explicitement.
ECT-04 Cache non invalide sur changement seuils RESOLU INV-86-20 : reevaluation depuis rawScores sans re-inference. thresholdsVersion ajoute. TC-86-30 teste.

Ecarts MAJEURS v1

ID Ecart v1 Statut v2 Resolution
ECT-05 Budget 700ms sans device/percentile RESOLU §8 : P95 sur iPhone 12 (A14, iOS 16.0+). PERF-86-01 mis a jour.
ECT-06 iOS min non specifiee RESOLU §10 : iOS 16.0.
ECT-07 Source isMinor non contractualisee RESOLU Q11 + §7 : profil authentifie serveur B2C-MINEURS. SEC-86-06 + TC-86-34.
ECT-08 Seuils mineur sans garde-fou RESOLU INV-86-17 : seuils plafonnes aux defauts pour mineurs. TC-86-28.
ECT-09 Timeout sans borne temporelle RESOLU Q7 + §4.2 : timeout contractuel 5000 ms.
ECT-10 UNSUPPORTED_FORMAT absent du gate RESOLU §5.2 regle 2 : liste etendue incluant UNSUPPORTED_FORMAT + OUT_OF_MEMORY.
ECT-11 Pas de test desactivation + sensible RESOLU INV-86-18 : rendu direct sans modal. TC-86-29.
ECT-12 Race condition concurrente RESOLU INV-86-19 : mutex/PQueue mono-cle. TC-86-31 + TC-86-32.
ECT-13 Pas de test bornes seuils RESOLU TC-86-33 : rejet hors bornes, acceptation aux bornes exactes.

Ecarts MINEURS v1

ID Statut v2
ECT-14 (InMemoryHandle) RESOLU — defini dans §3.2 avec limite 64 MB + OUT_OF_MEMORY
ECT-15 (couverture INV-86-01) PARTIELLEMENT RESOLU — tests TC-86-18/19/20 renforcent verification reseau mais tests plus stricts que spec
ECT-16 (INV-86-10 sans CA) RESOLU — CA-86-13 ajoute
ECT-17 (logs reconstituables) RESOLU — whitelist/blacklist explicite dans §7
ECT-18 (arrondi vs decision) RESOLU — §3.2 : decision avant arrondi sur rawScores
ECT-19 (mecanismes iOS) PARTIELLEMENT RESOLU — App Switcher, Spotlight, QuickLook cites mais observables de preuve limites
ECT-20 (requiresExplicitConfirmation) RESOLU — regle = isMinor && isSensitive
ECT-21 (documentId dans cache) RESOLU — CA-86-06 inclut documentId dans champs autorises
ECT-22 (unicite sans test) RESOLU — TC-86-32 teste la collision

3. Ecarts residuels v2

Ecarts MAJEURS

ID Type Source Description
ECT-v2-01 ECT Review v2 #1 Precedence enabled=false vs politique prudente : §5.2 regle 1 dit "pas de modal, rendu direct" quand enabled=false. Mais si l'analyse a deja echoue (ex: TIMEOUT persisté), INV-86-09 exige un modal prudent. La precedence enabled=false > politique prudente n'est pas explicitement justifiee.
ECT-v2-02 AMB Review v2 #2 requiresExplicitConfirmation exclut les cas d'erreur mineur : la formule isMinor && isSensitive ne couvre pas le cas ou status=TIMEOUT (pas sensible, mais prudent) pour un mineur. INV-86-06 vise les mineurs sans distinguer sensible/prudent.
ECT-v2-03 DIV Review v2 #3 + Confrontation DIV-01 Tests plus stricts que spec sur transmission reseau : TC-86-04 interdit catégories/statuts sur le réseau, mais INV-86-01 interdit seulement "contenu en clair". La spec ne contractualise pas l'interdiction de scores/catégories sur le réseau. + CA-86-18 couvert par TC-86-03 qui ne teste pas la stratégie d'échantillonnage.
ECT-v2-04 AMB Review v2 #4 + Confrontation ZO-06 SEC-86-07 sans scenario de test pas-a-pas : les mecanismes iOS d'apercu sont cites en tableau mais aucun TC detaille ne verifie App Switcher, Spotlight, QuickLook individuellement.
ECT-v2-05 SEC Review v2 #7 Aucune borne de retention/purge pour verdicts en cache : documentId persiste indefiniment, risque RGPD. Aucune politique de TTL ou purge documentee.

Ecarts MINEURS

ID Type Source Description
ECT-v2-06 AMB Review v2 #5 Zeroization best-effort : preuve partielle uniquement (signalé ST-86-01, non bloquant)
ECT-v2-07 AMB Review v2 #6 LocalTimestamp sans contrainte sur derive/rollback horloge
ECT-v2-08 AMB Confrontation ZO-02 Chemin negatif INV-86-20 (rawScores absents) non couvert par test
ECT-v2-09 AMB Confrontation ZO-03 Algorithme PDF cas limites (totalPages ~ 5, deduplication) couvert partiellement
ECT-v2-10 AMB Confrontation ZO-04 Seuil memoire InMemoryHandle 64 MB non teste a la frontiere
ECT-v2-11 AMB Confrontation ZO-05 Benchmark modele pre-prod (Q1) absent du plan de test

4. Scoring

Decompte

Gravite Nombre v2 Deduction unitaire Total
Bloquant 0 -2.0 0
Majeur 5 -1.0 -5.0
Mineur 6 -0.25 -1.5
Total deductions -6.5

Score brut : 10 - 6.5 = 3.5 (plancher mathematique)

Attribution par critere

Critere Score Justification
completeness 7.5 Les 4 bloquants v1 resolus. 20 INV (vs 15), 19 CA (vs 12), 34 TC (vs 25). Lacunes residuelles : retention RGPD absente, chemin negatif INV-86-20, benchmark Q1 non teste.
testability 7.0 Signalements ST-86 reduits de 4 a 2. Budget perf desormais testable (P95 iPhone 12). Mais : SEC-86-07 sans TC detaille, seuil memoire 64MB non teste, cas limites PDF partiels.
clarity 8.0 Ordre de precedence gate viewer clairement numerote (6 regles). InMemoryHandle, isMinor, timeout, arrondi tous definis. Mineure tension residuelle : precedence enabled=false vs prudence, requiresExplicitConfirmation exclut cas prudent mineur.
traceability 8.5 Matrice 20/20 INV + 19/19 CA complete. 34 TC. Sur-declaration CA-86-18 par TC-86-03 (non verifiable). rawScores dans verdict pour audit. Signalement DIV-01 confrontation visible.

Scores finaux

Critere Score
completeness 7.5
testability 7.0
clarity 8.0
traceability 8.5
Moyenne 7.75

5. Verdict attendu

  • GO — tous >= 8
  • RESERVE — moyenne >= 7 mais testability (7.0) et completeness (7.5) < 8
  • NON_CONFORME
  • ESCALADE