PD-283-SPECIFICATION-REVIEW-V1
Voici l’audit contractuel demandé (sans proposition de correction).
Type : Contradiction
Référence : PD-283-specification.md §5.5 (état DELETED) ; §5.5 règles retour ; PD-283-tests.md TC-NOM-06
Description : L’état `DELETED` est défini comme terminal avec « toute transition interdite », mais la même section impose « READY -> DELETED : ... retour implicite IDLE », et le test TC-NOM-06 valide aussi ce retour implicite.
Impact : Machine à états incohérente, impossibilité d’établir un oracle unique de conformité sur la fin de cycle suppression.
Gravité : Bloquant
Type : Contradiction
Référence : PD-283-specification.md INV-283-04 ; CA-12 ; ST-08 ; PD-283-tests.md TC-INV-04
Description : L’invariant exige « exactement 24h », alors que CA-12/TC-INV-04 admettent `T0+24h ±5min`, et ST-08 parle de `T0+24h` sans tolérance.
Impact : Critère d’acceptation temporel non univoque ; un même comportement peut être conforme ou non selon la section utilisée.
Gravité : Majeur
Type : Contradiction
Référence : PD-283-specification.md §6 ERR-08 ; §5.5 transition `FAILED -> PREPARING`
Description : ERR-08 impose blocage de nouvelle tentative tant que purge forcée non réussie, alors que la machine à états autorise `FAILED -> PREPARING` (retry explicite) sans condition.
Impact : Conflit de règles de reprise après échec sécurité ; risque de validation divergente entre implémentateur et auditeur.
Gravité : Bloquant
Type : Incohérence Spec↔Tests
Référence : PD-283-tests.md §2 Matrice (INV-283-12 -> CA-10 -> TC-INV-12) ; PD-283-specification.md CA-10 ; INV-283-12
Description : La matrice rattache INV-283-12 (transitions d’état) à CA-10 (progression UX), alors que ces objets contractuels sont distincts.
Impact : Traçabilité de couverture contractuelle ambiguë ; preuve de conformité potentiellement contestable.
Gravité : Majeur
Type : Non testable
Référence : PD-283-specification.md §3.4 (Perf P95), CA-15, CA-16 ; PD-283-tests.md TC-NR-05, TC-NR-06
Description : Les exigences P95 (<30s / <60s) ne définissent pas le protocole statistique contractuel (taille d’échantillon, nombre de runs, conditions de variance réseau/appareil).
Impact : Résultat perf non reproductible de manière strictement contractuelle ; risque de litige d’acceptation.
Gravité : Majeur
Type : Non testable
Référence : PD-283-specification.md INV-283-01, INV-283-05, CA-13 ; PD-283-tests.md TC-INV-01, TC-INV-05
Description : « Aucun contenu en clair ne persiste hors `.pvproof` final » n’est vérifiable exhaustivement via seul scan sandbox post-run (zones système, caches OS, crash artifacts hors périmètre applicatif direct).
Impact : Invariant absolu difficile à prouver formellement ; acceptation potentiellement non démontrable.
Gravité : Majeur
Type : Ambiguïté
Référence : PD-283-specification.md INV-283-13-envelope-encryption ; note « (domaine crypto-proof) » ; PD-283-tests.md TC-INV-13
Description : L’invariant 13 est annoté « domaine crypto-proof » alors que le document décrit une US iOS export ; l’applicabilité contractuelle de cet invariant n’est pas explicitée dans la spec elle-même.
Impact : Périmètre d’audit crypto incertain ; divergence possible sur critères de GO/NO-GO.
Gravité : Majeur
Type : Hypothèse dangereuse
Référence : PD-283-specification.md H-04 ; INV-283-04 ; CA-12
Description : La notification à 24h est à la fois invariant non négociable et dépendante d’une permission iOS explicitement hypothétique (H-04).
Impact : Dépendance à un facteur externe utilisateur/OS pouvant rendre l’acceptation formelle impossible sans faute d’implémentation.
Gravité : Bloquant
Type : Incohérence Spec↔Tests
Référence : PD-283-specification.md §3.3 (Nom archive finale `..._{exportId8}` ; regex `[A-Za-z0-9]{8}` ; point à clarifier #2) ; PD-283-tests.md TC-NR-01, TC-ERR-08, §9 règle non testable
Description : Le nommage final dépend d’un `exportId8` dont la dérivation est explicitement non spécifiée, alors que des tests valident la conformité regex du nom final.
Impact : Oracle de test incomplet sur un critère d’acceptation central (`CA-09`) ; conformité potentiellement non arbitrable.
Gravité : Majeur
Type : Risque sécu/conformité
Référence : PD-283-tests.md §8 Observabilité requise (traces requête/réponse, journaux d’audit, événements horodatés/signés) ; PD-283-specification.md (absence de politique de minimisation/masquage des journaux)
Description : Exigence d’observabilité détaillée sans cadre contractuel explicite de minimisation/redaction des données journalisées (identifiants, motifs de rejet, artefacts d’erreur).
Impact : Risque de sur-exposition de données dans les logs et difficulté d’audit RGPD/compliance sur la télémétrie.
Gravité : Majeur
Type : Ambiguïté
Référence : PD-283-specification.md ERR-09 ; §3.3 “Nom fichier preuve” ; point à clarifier #3 ; PD-283-tests.md TC-NEG-04 ; §9 règle non testable
Description : La règle « remplacement + suffixe collision » est contractuellement mentionnée mais sans forme normative du suffixe ; ERR-09 introduit en plus un comportement conditionnel « si critique, abort export » non défini.
Impact : Comportement divergent possible sur collisions/invalidités de noms ; verdict d’acceptation instable.
Gravité : Majeur
Type : Hypothèse dangereuse
Référence : PD-283-specification.md F-03, ERR-03, H-05 ; PD-283-tests.md TC-NOM-04, TC-ERR-02
Description : La reprise « au prochain artefact non finalisé » présuppose une cohérence forte entre état local et nouvel ensemble d’URLs signé (refresh), sans contrat explicite d’équivalence d’ensemble entre versions.
Impact : Risque de trous/doublons probatoires en cas de divergence backend lors du refresh, malgré l’exigence de non-duplication.
Gravité : Majeur