PD-250 — Revue d’acceptabilité (post-correction)¶
1. Références¶
- Spécification : PD-250-specification.md
- Tests contractuels : PD-250-tests.md
- Acceptabilité existante : PD-250-acceptability.md
- Date de revue : 2026-02-25
- Reviewer : Auditeur technique indépendant
2. Suivi des écarts (append-only)¶
[2026-02-25] — Suivi E-01 (source R-01)¶
- Statut précédent : OUVERT
- Statut actuel : RÉSOLU
- Justification factuelle :
- Alignement observé migration/entity sur les colonnes
pdf_s3_key,pdf_hash,signature_key_label. - La divergence signalée n'est plus présente entre le schéma SQL et l'entity TypeORM.
- Preuve de vérification :
- commit
14dfb48 - fichier
src/database/migrations/1740700000000-PD-250-destruction-schema.ts - fichier
src/modules/destruction/entities/destruction-bordereau.entity.ts - test contractuel
TC-250-08(PASS) vianpm test -- --runInBand src/modules/destruction/__tests__(17/17 suites, 475/475 tests)
[2026-02-25] — Suivi E-02 (source R-02)¶
- Statut précédent : OUVERT
- Statut actuel : PARTIELLEMENT RÉSOLU
- Justification factuelle :
- Un filter 403 dédié a été ajouté pour tracer
destruction.access_denied. - La preuve contractuelle reste incomplète pour INV-250-15 : le test non-ADMIN ne démontre pas explicitement le
403+ audit refus. - Preuve de vérification :
- commit
14dfb48 - fichier
src/modules/destruction/controllers/destruction-access-denied.filter.ts - fichier
src/modules/destruction/controllers/bordereau.controller.ts - test
src/modules/destruction/__tests__/bordereau.controller.spec.ts(PASS) mais sans assertion explicite403+ audit refus
[2026-02-25] — Suivi E-03 (source R-03)¶
- Statut précédent : OUVERT
- Statut actuel : RÉSOLU
- Justification factuelle :
- La validation Joi du module destruction est désormais en rejet strict avec
allowUnknown: false. - Preuve de vérification :
- commit
14dfb48 - fichier
src/modules/destruction/config/destruction.config.ts - test contractuel
TC-250-23(PASS) vianpm test -- --runInBand src/modules/destruction/__tests__
[2026-02-25] — Suivi E-04 (source R-04)¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- La section
architectural_decisionsn'est toujours pas présente dans le fichier de code contracts. - Preuve de vérification :
- fichier
docs/epics/legal-compliance/PD-250-destruction-bordereau/PD-250-code-contracts.yaml
[2026-02-25] — Suivi E-05 (source T-01)¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- Le scénario non-ADMIN ne vérifie pas explicitement un rejet HTTP 403 ni l'audit d'accès refusé.
- Preuve de vérification :
- fichier
src/modules/destruction/__tests__/bordereau.controller.spec.ts - test
TC-250-20exécuté (PASS) mais preuve d'assertions contractuelles insuffisante
[2026-02-25] — Suivi E-06 (source T-02)¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- Aucun test e2e sécurité dédié à l'endpoint admin bordereaux n'est présent.
- Preuve de vérification :
- recherche
*.e2e-spec.tssans occurrence sur endpointadmin/bordereaux
[2026-02-25] — Suivi E-07 (source T-03)¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- La matrice combinatoire explicite des 9 cas WORM demandée n'est pas implémentée en test.
- Preuve de vérification :
- fichier
src/modules/destruction/__tests__/eligibility.service.spec.ts - test
TC-250-01exécuté (PASS) mais sans matrice 9 combinaisons explicitement vérifiée
[2026-02-25] — Suivi E-08 (source T-04)¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- Des assertions faibles/no-op subsistent (validation DTO structurelle, vérifications de construction de query sans validation runtime correspondante).
- Preuve de vérification :
- fichier
src/modules/destruction/__tests__/bordereau.controller.spec.ts - fichier
src/modules/destruction/__tests__/eligibility.service.spec.ts
[2026-02-25] — Suivi E-09 (source T-05)¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- Le test contractuel BullMQ v5 reste permissif (scan étendu aux tests/commentaires pour la présence API v5).
- Preuve de vérification :
- fichier
src/modules/destruction/__tests__/contractual/deprecated-api.spec.ts - test
TC-250-19(PASS) vianpm test -- --runInBand src/modules/destruction/__tests__
[2026-02-25] — Suivi E-10 (source S-01)¶
- Statut précédent : OUVERT
- Statut actuel : PARTIELLEMENT RÉSOLU
- Justification factuelle :
- Implémentation d'un mécanisme d'audit sur refus 403 ajoutée.
- Preuve de conformité opérationnelle incomplète en l'absence d'assertion contractuelle e2e/HTTP 403 + audit.
- Preuve de vérification :
- commit
14dfb48 - fichier
src/modules/destruction/controllers/destruction-access-denied.filter.ts - test
TC-250-20exécuté (PASS) sans vérification explicite403+ audit refus
[2026-02-25] — Suivi E-11 (source S-02)¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- Le filtre défensif explicite
entity_type != 'BORDEREAU'n'est pas présent dans la sélection d'éligibilité. - Preuve de vérification :
- fichier
src/modules/destruction/services/eligibility.service.ts
[2026-02-25] — Suivi E-12 (source S-03)¶
- Statut précédent : OUVERT
- Statut actuel : PARTIELLEMENT RÉSOLU
- Justification factuelle :
- Correction
allowUnknown: falseappliquée. - Exigence complémentaire
trackedDefault(...)non implémentée dans le schéma destruction. - Preuve de vérification :
- fichier
src/modules/destruction/config/destruction.config.ts - test
TC-250-23(PASS) vianpm test -- --runInBand src/modules/destruction/__tests__
[2026-02-25] — Suivi E-13 (source D-01)¶
- Statut précédent : OUVERT
- Statut actuel : OUVERT
- Justification factuelle :
- Stub TSA toujours présent et explicitement documenté
TODO(PD-250). - Preuve de vérification :
- fichier
src/modules/destruction/destruction.module.ts
[2026-02-25] — Suivi E-14 (source D-02)¶
- Statut précédent : OUVERT
- Statut actuel : OUVERT
- Justification factuelle :
- Stub S3 toujours présent, non remplacé par un adapter de production.
- Preuve de vérification :
- fichier
src/modules/storage/s3.service.ts
3. Verdict d’acceptabilité (courant)¶
- ⛔ REFUSÉ
- ⚠️ ACCEPTÉ AVEC RÉSERVES
- ✅ ACCEPTÉ
Verdict actuel : ⚠️ ACCEPTÉ AVEC RÉSERVES Date : 2026-02-25 Motif synthétique : 2 écarts majeurs convergents sont corrigés (R-01, R-03), mais la preuve contractuelle de l'accès refusé 403/audit (R-02/T-01/S-01) reste incomplète et plusieurs réserves tests/sécurité demeurent ouvertes.
4. Historique des verdicts¶
| Date | Verdict | Version / commit | Commentaire |
|---|---|---|---|
| 2026-02-25 | ⚠️ ACCEPTÉ AVEC RÉSERVES | 9a44207 | Verdict initial conservé ; corrections partielles vérifiées post-correction. |