Aller au contenu

PD-284 — Dossier de conformité Gate 8 (CLOSURE) — v1

Date : 2026-03-13 Story : PD-284 — UX scellement instantané Gate : 8 (CLOSURE) Itération : 1

1. Résumé exécutif

L'implémentation PD-284 livre 15 modules (types, state machine, SSE client, event processor, store, API client, orchestrateur, secure storage, telemetry, notifications, deep-link, 3 composants UI, screen) avec 173 tests unitaires passants.

La review Gate 8 identifie 3 écarts MAJEUR résiduels (tous liés à l'absence de tests pour SSE client, orchestrateur et SealProgressCard), 5 MINEUR et 7 zones d'ombre. Les écarts sécurité sont tous MINEUR sans vecteur exploitable.

2. Matrice de conformité

2.1 Invariants (INV-284-*)

INV Description Conforme Preuve
INV-284-01 Bouton visible uniquement pour plans B2C_MINOR OUI UrgentSealButton props + guard account_type
INV-284-02 Bouton disabled si quota épuisé OUI Props quotaRemaining <= 0 → disabled + tooltip
INV-284-03 Badge dégradation dérivé du backend uniquement OUI normalizeDegradationFlag() + test TC-NOM-08
INV-284-04 Machine d'états monotone OUI ALLOWED_TRANSITIONS + tests state-machine 100%
INV-284-05 Pas de seuil local pour dégradation OUI Aucun calcul local, consommation raw du flag serveur
INV-284-09 Aucun artefact sensible en store Zustand OUI tsa_token_ref routé vers SecureStore (C12), absent du store
INV-284-11 Artefacts publics en mémoire uniquement OUI Pas de persist middleware, pas d'AsyncStorage

2.2 Critères d'acceptation (CA-284-*)

CA Description Conforme Preuve
CA-284-05 Séquence POST→GET→SSE OUI orchestrator.ts séquence respectée
CA-284-11 Expert panel absent si mode_expert=false OUI Early return if (!modeExpert) return null
CA-284-12 Champs expert par état OUI EXPERT_FIELDS_BY_STATE + computeVisibleFields()
CA-284-14 Sélecteurs granulaires (1 par champ) OUI 15 sélecteurs exportés dans useSealStore.ts

2.3 Tests

Métrique Valeur
Tests total 173
Tests passants 173 (100%)
Suites 8
Coverage statements (modules logiques) 80%+
Coverage globale (incluant UI/infra) 47.8%
TC-* couverts 23/39

2.4 Sécurité

Vérification Résultat
Forbidden patterns 0 détecté
Deep-link injection Rejeté (whitelist probatiovault://)
SSE seal_id mismatch Ignoré (double guard C4 + C5)
SecureStore isolation Conforme (WHEN_UNLOCKED_THIS_DEVICE_ONLY)
Branded types Compilateur empêche inversions UUID
Validation Zod Systématique sur API + SSE

2.5 Quality Gates automatisées

Check PD-284 Global
ESLint 0 erreur OK
Prettier 0 erreur 5 pré-existantes
TypeScript 0 erreur 58 pré-existantes
Sonar QG OK OK

3. Écarts résiduels

MAJEUR (3)

ID Description Atténuation
T-02 Aucun test SealProgressCard (C9) Constantes et store testés, composant pur sans effets de bord
T-04 Aucun test SSE client (C3) EventProcessor (consommateur SSE) testé à 91%, backoff simple
T-05 Aucun test orchestrateur (C7) API client testé à 76%, store testé à 82%, helpers extraits

MINEUR (5)

ID Description
DIV-03 Étape visuelle "Arbre Merkle" potentiellement sautée
DIV-05 Regex UUID client permissive (36 tirets)
S-02 Non-null assertions dans statusResponseToSealEvent
S-03 PROOF_PACKAGE_URL regex broad
T-06/T-08 Labels TC mismatch dans certains fichiers de test

4. Recommandation PMO

RESERVE — L'implémentation est fonctionnellement complète et sécurisée. Les 3 écarts MAJEUR concernent exclusivement l'absence de tests pour des modules d'infrastructure (SSE, orchestrateur) et un composant UI. La logique métier critique est testée à 80%+. Les écarts sécurité sont tous MINEUR sans vecteur exploitable.

Les tests manquants peuvent être ajoutés dans une story dédiée sans risque de régression (les modules sont stables et fonctionnels).