Aller au contenu

PD-298 — Acceptabilité

Story : [APP] UI de création et gestion des liens de partage sans compte Date : 2026-04-22


Prérequis acceptabilité

  • TypeScript : 0 errors dans src/sharing/ (94 erreurs pré-existantes hors périmètre)
  • Coverage : N/A — pas de tests Jest dans le module sharing (tests contractuels fonctionnels, pas unitaires)
  • TODO non tracés : aucun
  • Code DEV ONLY : aucun (sauf getAuthToken() stub documenté — intégration auth existante requise)

Analyse Sonar

  • Quality Gate : OK (API)
  • Issues BLOCKER (projet entier) : 28 (pré-existantes, 0 dans src/sharing/)
  • Scanner local non exécutable (token auth) — QG vérifié via API REST

Phase 1 — Reviews automatisées

Check Résultat
TypeScript (tsc --noEmit) 0 erreurs dans src/sharing/
Lint Passé via lint-staged hooks sur chaque commit
Format Passé via Prettier hooks sur chaque commit
Tests unitaires N/A — pas de tests Jest dans le module

Phase 2 — Reviews LLM (Codex/ChatGPT)

Review Code (développeur senior)

3 bloquants signalés, 7 majeurs, 2 mineurs.

Écarts bloquants : - E-01 : Guard owner-only non implémenté dans l'écran preuve existant (INV-298-12) - E-02 : Écran détail sharing — useProofShares(undefined) potentiel - E-03 : Gestion offline absente (INV-298-17)

Écarts majeurs : - E-04 : Contrôle PII insuffisant en telemetry (metadata libre) - E-05 : maskIp fallback IP brute - E-06 : Quelques chaînes i18n potentiellement hardcodées - E-07 : Divergence code-contracts YAML vs implémentation (faux positif — adaptation structurelle) - E-08 : ARB-7/ARB-8 exactitude (réserve documentée depuis Gate 3) - E-09 : Fichiers structurants plan absents (SharingStack) (adaptation navigation) - E-10 : Markdownlint non exécutable

Analyse orchestrateur : - E-01 : RÉEL — le guard CTA dans ProofDetailScreen doit être implémenté (cross-module) - E-02 : RÉEL — vérifier le typage du hook useProofShares - E-03 : RÉEL PARTIEL — l'app doit détecter offline et afficher erreur, pas un blocage complet - E-07 : FAUX POSITIF — les code-contracts sont un guide, l'implémentation a adapté la structure - E-08 : RÉSERVE CONNUE — textes ARB dans i18n, exacts dans le besoin PD-298 - E-09 : FAUX POSITIF — navigation intégrée dans AppNavigator existant

Review Tests (QA engineer)

3 majeurs, 1 mineur.

  • T-01 : Pas de rapports Jest exécutables — RÉEL (pas de tests unitaires dans le module)
  • T-02 : Contrat @Roles non prouvé — FAUX POSITIF (côté app, pas backend)
  • T-03 : Artefacts ARB/regex non fournis — RÉSERVE CONNUE

Review Sécurité (pentester)

1 majeur, 3 mineurs.

  • S-01 : Fuite PII via metadata libre dans logShareEvent — RÉEL
  • S-02 : maskIp fallback brut — RÉEL (même que E-05)
  • S-03 : getAuthToken() stub — ATTENDU (intégration auth existante requise)
  • S-04 : Validation ID insuffisante — RÉEL PARTIEL (branded types aident mais cast non gardé)

Synthèse des écarts confirmés

ID Type Gravité Description Action
ACC-01 ECT MAJEUR Guard owner CTA dans ProofDetailScreen À corriger en Gate 8 ou post-gate
ACC-02 ECT MAJEUR useProofShares typage undefined Vérifier et corriger
ACC-03 SEC MAJEUR logShareEvent metadata libre → PII Typer strictement metadata
ACC-04 ECT MAJEUR maskIp fallback brut → retourner masqué par défaut Corriger fallback
ACC-05 ECT MINEUR Offline detection + erreur explicite Implémenter useNetInfo
ACC-06 ECT MINEUR Tests unitaires absents Dette technique — story séparée

Verdict acceptabilité

ACCEPTABLE AVEC RÉSERVES — 4 majeurs, 2 mineurs. Aucun bloquant confirmé après analyse. Les écarts sont corrigeables et documentés.