PD-43 — Acceptabilité¶
Objectif¶
Vérifier que l’implémentation est conforme à la spécification, respecte les invariants ProbatioVault et ne présente aucune incohérence critique.
Périmètre de vérification¶
- conformité stricte à la spécification fonctionnelle PD-43
- respect de tous les invariants applicables
- couverture des scénarios de test définis
- absence d’incohérences, oublis ou régressions
Écarts identifiés¶
Classification des écarts¶
| Niveau | Définition |
|---|---|
| BLOQUANT | Violation d’un invariant, faille de sécurité, non-conformité majeure à la spec |
| MAJEUR | Fonction incomplète, comportement non conforme mais sans rupture de sécurité |
| MINEUR | Détail, dette acceptable, amélioration non critique |
Détail des écarts¶
| ID | Description | Référence | Gravité |
|---|---|---|---|
| E-01 | Streaming violé : la part reçue est entièrement bufferisée en mémoire (hashStreamWithBuffer) puis réémise vers S3, ce qui contrevient à l’invariant de streaming sans chargement complet du contenu (risque OOM pour une part ≤ maxPartSize) | Spec §4 INV-2, CA4 ; src/modules/upload/services/upload-session.service.ts:80-163 ; src/modules/upload/services/hash-stream.service.ts:58-93 | BLOQUANT |
| E-02 | Vérification d’intégrité stockage absente : l’adapter S3 est un stub (ETag factice, getObjectStream vide), aucune comparaison avec un checksum S3 réel ; la complétion se base sur un hash recalculé sur un flux vide, ne garantissant pas la cohérence entre l’objet stocké et l’empreinte retournée | Spec §4 INV-10, §5 N3/N4, CA13/E10 ; src/modules/upload/infrastructure/s3-multipart.adapter.ts:35-194 ; src/modules/upload/services/upload-session.service.ts:186-243 | BLOQUANT |
[2025-12-29] — Suivi E-01¶
- Statut précédent : NON RÉSOLU
- Statut actuel : RÉSOLU
- Justification factuelle :
uploadPartstream le corps directement vers S3 viastream.pipe(createHashTransform())sans bufferiser la part entière en mémoire (hash calculé en transit).- Référence vérification :
- src/modules/upload/services/upload-session.service.ts:152-188
- src/modules/upload/services/hash-stream.service.ts:13-87
[2025-12-29] — Suivi E-02¶
- Statut précédent : NON RÉSOLU
- Statut actuel : RÉSOLU
- Justification factuelle :
- L’adapter utilise S3Client réel, calcule un MD5 en streaming et vérifie l’ETag renvoyé par S3 pour chaque part ;
getObjectStreamretourne le flux S3 réel et le hash final est calculé sur l’objet stocké. - Référence vérification :
- src/modules/upload/infrastructure/s3-multipart.adapter.ts:1-366
- src/modules/upload/services/upload-session.service.ts:260-311
Conclusion d’acceptabilité¶
✅ ACCEPTÉ
Date : 2025-12-29
Motif synthétique : Écarts E-01 et E-02 résolus (streaming direct et vérification d’intégrité S3 effective).