PD-283-SPECIFICATION-REVIEW-V2

Oui — les 10 corrections annoncées sont bien présentes dans les textes fournis.

  • E-01: DELETED -> IDLE explicite dans la table de transitions et dans TC-NOM-06.
  • E-02: garde purge_ok explicite sur FAILED -> PREPARING dans les règles retour/downgrade.
  • E-03: fallback bandeau in-app ajouté dans INV-283-04 et CA-12.
  • E-04: tolérance ±5min alignée entre INV-283-04 et CA-12.
  • E-05: INV-283-12 découplé de CA-10 dans la matrice.
  • E-08: INV-283-13 reformulé et applicabilité iOS explicitée.
  • E-09: exportId8 défini comme 8 premiers caractères alphanumériques de exportId.
  • E-10: ERR-09 normalisé avec suffixes _2/_3/... sans abort conditionnel sur collision.
  • Tests ajoutés: TC-ERR-10, TC-NOM-07, TC-NOM-08 présents.

Écarts résiduels

Type : Contradiction
Référence : PD-283-specification.md §10 “Points à clarifier” (2,3,4) vs §3.3 + §4 INV-283-04 + §6 ERR-09
Description : La section “Points à clarifier” indique encore non défini : dérivation exportId-8, politique de collision, fallback notifications refusées, alors que ces éléments sont désormais contractualisés ailleurs dans la spec.
Impact : Source contractuelle non univoque (un même point est à la fois “défini” et “à clarifier”), risque d’interprétation divergente en audit tiers.
Gravité : Majeur

Type : Contradiction
Référence : PD-283-tests.md §9 “Règles non testables” (lignes exportId8, collision, fallback notifications) vs PD-283-specification.md §3.3, §6 ERR-09, §4 INV-283-04, §7 CA-12
Description : Le document de tests maintient ces règles comme “non testables / non spécifiées”, en contradiction avec la version spec transmise.
Impact : Verdict QA potentiellement invalide contractuellement ; impossibilité d’établir une base d’acceptation cohérente Spec↔Tests.
Gravité : Majeur

Type : Incohérence Spec↔Tests
Référence : PD-283-tests.md ST-08 vs PD-283-specification.md INV-283-04 / CA-12
Description : ST-08 ne formalise que le cas “notification délivrée à T0+24h”, sans branche explicite “permission refusée => bandeau in-app persistant”, et sans tolérance ±5min dans le Then.
Impact : Preuve de conformité partielle pour un invariant/CA désormais bifurqué (permission accordée vs refusée).
Gravité : Majeur

Type : Ambiguïté
Référence : PD-283-specification.md §3.3 “Nom archive finale / exportId8”
Description : “8 premiers caractères alphanumériques de exportId” ne précise pas le comportement si exportId commence par _/- ou contient moins de 8 alphanumériques exploitables (bien que regex global autorise _/-).
Impact : Nommage final potentiellement non déterministe ou impossible selon implémentation, avec risque de divergence entre équipes.
Gravité : Majeur

Type : Incohérence Spec↔Tests
Référence : PD-283-tests.md matrice de couverture INV-283-13 -> CA-13 ; PD-283-specification.md INV-283-13 vs CA-13
Description : Le mapping associe INV-283-13 (protection au repos des secrets temporaires) à CA-13 (absence de persistance de contenu clair hors .pvproof), qui ne porte pas explicitement la même observable de sécurité.
Impact : Traçabilité contractuelle affaiblie entre invariant et critère d’acceptation ; discussion d’audit possible sur la suffisance de preuve.
Gravité : Mineur

Type : Ambiguïté
Référence : PD-283-specification.md ERR-09
Description : ERR-09 impose continuation avec fichiers restants, mais le comportement n’est pas explicité si 100% des fichiers candidats deviennent rejetés après sanitization locale (cas limite distinct du 422 backend).
Impact : Issue de flux terminale potentiellement divergente (échec vs succès vide) et observables d’état non univoques.
Gravité : Mineur