Aller au contenu

PD-86 — Dossier de conformite (Etape 5 — AMBIGUITY) — v1

Story : PD-86 — Detection de contenu sensible (IA locale) Epic : PD-185 — B2C-MINEURS Projet : ProbatioVault-app (iOS / React Native Expo) Gate : 5 — AMBIGUITY Iteration : v1 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)
Plan d'implementation Present PD-86-plan.md (v1.0.0, 568 lignes)
Code contracts Present PD-86-code-contracts.yaml (v1.0.0, 8 modules)
Review (Phase 1 — ChatGPT) Present PD-86-review-step5.md
Confrontation (Phase 2 — Claude) Present PD-86-confrontation-step5.md

2. Synthese de la review Phase 1 (ChatGPT)

5 ecarts identifies par ChatGPT : - 1 BLOQUANT : TC-86-34 non demonstrable (stub isMinor) - 4 MAJEURS : extension requiresExplicitConfirmation, stub isMinor risque, invariants hors spec dans code contracts, hypothese implicite isMinor

3. Synthese de la confrontation Phase 2 (Claude)

17 convergences confirmees, 7 divergences, 7 zones d'ombre. - 1 BLOQUANT (DIV-06) : TC-86-34 non demonstrable - 2 MAJEURS (DIV-01, DIV-07) : extension formule mineur, spec Swift vs React Native - 4 MINEURS (DIV-02/03/04/05) : TTL, rawScores blacklist, invariants supplementaires, niveau test

4. Ecarts consolides

Ecarts BLOQUANTS

ID Type Source Description
ECT-01 ECT Review #3 + DIV-06 TC-86-34 non demonstrable avec stub isMinor : Le test exige verification de la source serveur non falsifiable, mais le plan repose sur un stub local (false par defaut) tant que PD-84 n'est pas livre. Le plan doit specifier un mecanisme de verification partielle (mock authentifie) ou un report explicite a post-PD-84.

Ecarts MAJEURS

ID Type Source Description
ECT-02 DIV Review #1 + DIV-01 Extension non contractualisee de requiresExplicitConfirmation : Le plan etend la formule de isMinor && isSensitive (spec) a isMinor && (isSensitive \|\| isErrorStatus). Cette protection supplementaire est coherente mais non tracee dans la spec. Si l'extension est souhaitee, la spec doit etre mise a jour.
ECT-03 DIV DIV-07 Spec indique Swift/SwiftUI, plan utilise React Native Expo : La spec §10 mentionne "iOS (Swift/SwiftUI)" mais le projet reel est React Native Expo avec bridges natifs. Ecart documentaire a corriger dans la spec.
ECT-04 DIV Review #4 + DIV-04 Invariants supplementaires dans code contracts non traces en spec : Les code contracts ajoutent des invariants hors spec (classifieur stateless, TTL 90j, determinisme strict sampling, warm-up). Pas de contradiction mais dilution de la frontiere contractuelle.
ECT-05 AMB Review #2 + Review #5 Stub isMinor avec fallback false — risque de neutralisation des garde-fous mineur : Le plan documente le stub mais ne propose pas de verrou de conformite explicite avant activation complete du flux mineur. Hypothese implicite de disponibilite future.

Ecarts MINEURS

ID Type Source Description
ECT-06 DIV DIV-02 TTL 90 jours introduit en reponse a ECT-v2-05 de Gate 3, mais non contractualise dans la spec. Detail d'implementation acceptable.
ECT-07 DIV DIV-03 rawScores ajoutes a la blacklist logging dans le plan — durcissement non contractualise mais defense-in-depth coherente.
ECT-08 DIV DIV-05 TC-86-05 classifie "Unit" dans le plan alors que la nature du test (ouverture + analyse + hash) est plutot integration. Erreur de classification sans consequence fonctionnelle.
ECT-09 AMB ZO-01 Absence de test pour la frontiere contractuelle InMemoryHandle 64 MB. Le guard existe dans le plan mais aucun TC dedie ne verifie la valeur seuil exacte.
ECT-10 AMB ZO-02 Benchmark modele ML absent du plan de test. Exigence Q1 documentee comme hypothese mais sans protocole de verification.
ECT-11 AMB ZO-03 Algorithme PDF pour cas limites totalPages proches de 5. Deduplication et completion non testees aux frontieres.
ECT-12 AMB ZO-04 Controles iOS anti-apercus (App Switcher, Spotlight, QuickLook) documentes mais aucun TC detaille pas-a-pas. Zone d'ombre recurrente depuis Gate 3.
ECT-13 AMB ZO-05 Cas enabled=false + erreur persistee en cache non teste explicitement. La precedence R1 > R2 l'implique mais sans test dedie.
ECT-14 AMB ZO-06 Strategie de migration post-update app (invalidation en masse des verdicts cache) non documentee. Impact performance potentiel.
ECT-15 AMB ZO-07 Format exact de thresholdsVersion (entier incrementant) et modelVersion (semver? hash?) non precise. Gestion de conflit settings concurrent non documentee.

5. Scoring

Decompte

Gravite Nombre Deduction unitaire Total
Bloquant 1 -2.0 -2.0
Majeur 4 -1.0 -4.0
Mineur 10 -0.25 -2.5
Total deductions -8.5

Score brut : 10 - 8.5 = 1.5 (plancher mathematique)

Attribution par critere

Critere Score Justification
feasibility 7.5 Architecture modulaire solide (23 composants), Phase 0 Go/No-Go complete avec 9 hypotheses validees. Dependance PD-84 (isMinor) documentee avec stub. Mais : stub rend TC-86-34 non demonstrable (bloquant testabilite, pas faisabilite), et spec Swift vs React Native cree une ambiguite sur la stack. Points forts : couverture INV/CA complete 20/20 + 19/19, framework de test identifie, CI planifiee.
coverage 7.0 Mapping complet 20/20 INV, 19/19 CA, 34/34 TC. Tous les 11 ecarts Gate 3 adresses. Mais : 10 ecarts mineurs residuels (ZO-01 a ZO-07, tests pas-a-pas iOS, benchmark ML, frontieres seuils). Ecart bloquant TC-86-34 non demonstrable. Les code contracts couvrent 8 modules avec invariants et forbidden patterns.
risk_mitigation 7.5 Gestion des 6 codes erreur comprehensive. Politique prudente (R2) bien documentee. TTL/purge RGPD (ECT-v2-05). Warm-up + lazy fallback. Zeroization best-effort documentee comme dette. Mais : pas de verrou de conformite mineur avant PD-84, extension non contractualisee de requiresExplicitConfirmation, benchmark ML en hypothese sans protocole de verification.
coherence 8.0 17 convergences confirmees par la confrontation (solide). Architecture alignee avec le projet reel (React Native Expo). Flux techniques detailles et coherents. Code contracts coherents avec les modules du plan. Mais : spec dit Swift/SwiftUI vs plan React Native (ecart documentaire), invariants code contracts debordent la spec (dilution frontiere contractuelle).

Scores finaux

Critere Score
feasibility 7.5
coverage 7.0
risk_mitigation 7.5
coherence 8.0
Moyenne 7.5

6. Verdict attendu

  • GO — tous >= 8
  • RESERVE — moyenne >= 7 mais coverage (7.0), feasibility (7.5) et risk_mitigation (7.5) < 8
  • NON_CONFORME
  • ESCALADE