PD-253-SPECIFICATION-REVIEW

Type : Contradiction Référence : PD-253-specification.md §1 Objectif ; PD-253-specification.md §2 Inclus/Exclu Description : L'objectif exige une archive "lisible" offline sans dépendance fournisseur, alors que le périmètre impose l'export des documents archivés chiffrés et exclut tout déchiffrement serveur ; les conditions contractuelles permettant la lisibilité effective ne sont pas définies dans ces documents. Impact : Risque de non-conformité d'acceptation formelle sur la promesse de réversibilité (lisibilité) et divergence d'interprétation entre équipes d'implémentation et d'audit. Gravité : Bloquant

Type : Ambiguïté Référence : PD-253-specification.md §5.1 Modèle de données (export_id, user_id, vault_id, document_id) Description : La règle regex UUID v4 est notée ^[0-9a-fA-F]{8}-...{12}$ (ellipse non formelle), donc non exécutable telle quelle comme oracle contractuel. Impact : Validation d'entrée potentiellement divergente entre implémentations et impossibilité d'audit automatisé strict sur ce point. Gravité : Majeur

Type : Contradiction Référence : PD-253-specification.md §5.1 Modèle de données (UUID) Description : Les colonnes UUID indiquent des caractères [0-9a-f-] (minuscules) tout en déclarant une sensibilité casse "insensitive" et une regex autorisant A-F. Impact : Contrat interne incohérent sur la casse, pouvant produire des rejets/acceptations différents selon validateurs. Gravité : Majeur

Type : Non testable Référence : PD-253-specification.md INV-253-02 ; PD-253-specification.md §5.1 Règles complémentaires ; PD-253-tests.md TC-NOM-02 Description : La "ProofEnvelope complète" est exigée "conforme aux contrats amont" alors que les formats crypto détaillés sont explicitement hors périmètre et non reproduits ici ; l'oracle de complétude n'est pas auto-porté dans l'artefact contractuel. Impact : Vérification a priori impossible sans dépendance documentaire externe ; risque de contestation en audit tiers. Gravité : Bloquant

Type : Ambiguïté Référence : PD-253-specification.md §5.1 (from/to RFC3339 UTC) Description : Le format indique RFC3339 UTC sans expliciter si seul le suffixe Z est admis ou si des offsets RFC3339 sont acceptés puis normalisés en UTC. Impact : Incohérences de filtrage temporel (PERIOD) et reproductibilité de tests affaiblie sur bornes temporelles. Gravité : Majeur

Type : Incohérence Spec↔Tests Référence : PD-253-specification.md §8 (ST-253-01 à ST-253-08) ; PD-253-tests.md §3-4 (TC-NOM/TC-ERR) Description : La spécification référence des scénarios ST-253-* tandis que le document de tests contractualise des scénarios TC-* sans table de correspondance ST↔TC. Impact : Traçabilité bidirectionnelle affaiblie (exigence ↔ preuve), risque de litige sur la preuve de conformité attendue. Gravité : Majeur

Type : Incohérence Spec↔Tests Référence : PD-253-specification.md CA-253-09 ; PD-253-specification.md §5.5 (Expiration/purge) ; PD-253-tests.md TC-NOM-11, TC-ERR-11 Description : Le critère CA-253-09 exige "EXPIRED + purge" (package staging), alors que les tests listés ne démontrent pas explicitement la preuve de purge de staging comme observable contractuelle dans leur libellé. Impact : Acceptation potentiellement validée sur changement d'état seul, sans preuve matérielle de purge exigée par le critère. Gravité : Majeur

Type : Hypothèse dangereuse Référence : PD-253-specification.md §5.5 Flux nominaux (Téléchargement) Description : Le passage à l'état DOWNLOADED est posé sans définir l'événement déclencheur contractuel (URL générée, début de flux, fin de transfert, intégrité post-transfert). Impact : Course aux états, divergences d'implémentation, et auditabilité fragile des événements de téléchargement. Gravité : Majeur

Type : Contradiction Référence : PD-253-specification.md §5.4 Machine à états ; PD-253-specification.md §5.5 Flux nominaux (Annulation) Description : ASSEMBLING -> CANCELLED est déclarée autorisée, mais le flux d'annulation précise qu'en ASSEMBLING un checkpoint worker peut conserver READY_FOR_DOWNLOAD si package déjà produit, ce qui invalide l'effet attendu d'une annulation demandée dans un état annulable. Impact : Sémantique contractuelle de l'API DELETE /exports/{export_id} non déterministe selon timing, source de contentieux fonctionnel. Gravité : Bloquant

Type : Non testable Référence : PD-253-specification.md CA-253-12 ; PD-253-specification.md §5.2 (dégradation P95) ; PD-253-tests.md §9 Description : Le critère CA-253-12 dépend d'une référence "cluster prod nominale" et d'hypothèses de métriques non entièrement observables/reproductibles dans le contrat de test ; le document de tests le signale explicitement comme non testable sans métriques P95. Impact : Critère d'acceptation contractuel impossible à conclure de manière déterministe dans un environnement tiers. Gravité : Bloquant

Type : Risque sécu/conformité Référence : PD-253-specification.md §5.7 Accès téléchargement ; PD-253-specification.md §6 Cas d'erreur ; PD-253-tests.md TC-SEC-01 Description : La génération d'URL signée impose un contrôle propriétaire, mais les garanties d'auditabilité d'usage de l'URL signée (traçage d'accès effectif, corrélation export/utilisateur) ne sont pas explicitement contractualisées dans les preuves attendues. Impact : Risque de trou de traçabilité en cas d'incident d'accès ou de contestation conformité (chaîne probatoire incomplète). Gravité : Majeur

Type : Ambiguïté Référence : PD-253-specification.md INV-253-12 ; PD-253-specification.md §5.3 SLA ; PD-253-tests.md TC-INV-12 Description : La "fenêtre de rétention contractualisée" pour l'absence de résiduels n'est pas explicitement reliée à un paramètre unique (package_retention_ttl vs temporaires techniques), ce qui laisse plusieurs interprétations temporelles. Impact : Vérification d'invariant non univoque et résultats d'audit potentiellement contradictoires. Gravité : Majeur

Type : Incohérence Spec↔Tests Référence : PD-253-specification.md §6 Cas d'erreur ; PD-253-tests.md §4 Cas d'erreur Description : Le statut invalide blockchain_anchor.status est défini comme menant à FAILED dans le modèle, mais aucun code d'erreur contractuel dédié ni scénario d'erreur explicite correspondant n'est listé dans les cas d'erreur/tests. Impact : Comportement d'erreur non borné côté API/worker et preuve de conformité partielle sur ce cas. Gravité : Mineur