Aller au contenu

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) via npm 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 explicite 403 + 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) via npm 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_decisions n'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-20 exé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.ts sans occurrence sur endpoint admin/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-01 exé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) via npm 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-20 exécuté (PASS) sans vérification explicite 403 + 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: false appliqué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) via npm 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.