Aller au contenu

PD-253 — Revue d'acceptabilite (post-correction)

1. References

  • Specification : PD-253-specification.md
  • Tests contractuels : PD-253-tests.md
  • Acceptabilite existante : PD-253-acceptability.md
  • Date de revue : 2026-03-12
  • Reviewer : Claude Opus 4.6 (auditeur technique independant)

2. Suivi des ecarts (append-only)

[2026-03-12] — Suivi E-01

  • Statut precedent : OUVERT (BLOQUANT)
  • Statut actuel : RESOLU
  • Justification factuelle :
  • AuditLogService injecte dans bulk-export.service.ts (lignes 22, 52)
  • Appel auditLogService.log() sans catch block dans create() (lignes 87-93)
  • Commentaire explicite fail-closed : "Ne pas catcher l'erreur : AuditLogService.log() leve en cas d'echec HSM"
  • Enum BULK_EXPORT_CREATED et BULK_EXPORT_CANCELLED ajoutes dans audit-action.types.ts (lignes 104-105)
  • Preuve de verification :
  • fichier bulk-export.service.ts : injection + appel sans catch-absorb
  • fichier audit-action.types.ts : enum values presentes
  • test bulk-export.service.spec.ts lignes 105-117 : "should emit BULK_EXPORT_CREATED audit on success — INV-253-10" (PASS)
  • test bulk-export.service.spec.ts lignes 119-128 : "should refuse creation if audit log fails — INV-253-10 fail-closed" (PASS)

[2026-03-12] — Suivi E-02

  • Statut precedent : OUVERT (MAJEUR)
  • Statut actuel : RESOLU
  • Justification factuelle :
  • export-scope.service.ts methode resolveGlobal() (lignes 109-124) utilise withDeleted: true
  • Aucun filtre IsNull() sur deletedAt — les documents soft-deleted sont inclus
  • Commentaire explicite referençant NF Z42-013 §13.1 (lignes 102-107)
  • Preuve de verification :
  • fichier export-scope.service.ts : withDeleted: true present, pas de IsNull()
  • test export-scope.service.spec.ts : verification structure requete TypeORM (PASS)

[2026-03-12] — Suivi E-03

  • Statut precedent : OUVERT (BLOQUANT)
  • Statut actuel : RESOLU
  • Justification factuelle :
  • bagit-assembler.service.ts ligne 152 : addTag(arc, sha3ManifestBuf, 'manifest-sha3.txt')
  • Le nom de fichier est exactement manifest-sha3.txt conformement a INV-253-04
  • Preuve de verification :
  • fichier bagit-assembler.service.ts:152 : nom de fichier correct
  • test bagit-assembler.service.spec.ts lignes 74-127 : verification structure manifests (PASS)
  • test dual-manifest.service.spec.ts : 13 tests dual-hash (PASS)

[2026-03-12] — Suivi E-04

  • Statut precedent : OUVERT (MAJEUR)
  • Statut actuel : NON RESOLU
  • Justification factuelle :
  • ExportCleanupService purge /tmp/bulk-export mais n'effectue aucun chiffrement au repos
  • BulkExportProcessor appelle cleanupService.purgeStale() au demarrage et en finally — attenuation partielle mais pas de chiffrement
  • Aucun mecanisme de chiffrement des artefacts temporaires observe dans le code
  • Report explicite vers PD-253b dans le document d'acceptabilite
  • Preuve de verification :
  • fichier export-cleanup.service.ts : purge sans chiffrement
  • INV-253-11 non satisfait — report accepte car documente et trace

[2026-03-12] — Suivi E-05

  • Statut precedent : OUVERT (MAJEUR)
  • Statut actuel : NON RESOLU
  • Justification factuelle :
  • export-expiry.scheduler.ts lignes 45-47 : affectation directe exportEntity.status = BulkExportStatus.EXPIRED sans passage par stateMachine.transition()
  • Le bypass FSM persiste dans le code
  • Classe MINEUR dans l'acceptabilite (non bloquant), trace pour PD-253b
  • Preuve de verification :
  • fichier export-expiry.scheduler.ts:45-47 : set direct confirme

[2026-03-12] — Suivi T-01 / S-01

  • Statut precedent : OUVERT (MAJEUR)
  • Statut actuel : RESOLU
  • Justification factuelle :
  • bulk-export-status.enum.ts lignes 31-35 : ACTIVE_BULK_EXPORT_STATUSES contient REQUESTED, ASSEMBLING, READY_FOR_DOWNLOAD
  • Migration 1742000000000-PD253-CreateBulkExports.ts lignes 100-103 : index partiel unique inclut les 3 statuts
  • Coherence entre enum applicatif et contrainte DB verifiee
  • Preuve de verification :
  • fichier bulk-export-status.enum.ts:31-35 : 3 statuts presents
  • fichier migration : WHERE status IN ('REQUESTED', 'ASSEMBLING', 'READY_FOR_DOWNLOAD')
  • test export-quota.service.spec.ts lignes 97-102 : "ACTIVE_BULK_EXPORT_STATUSES should contain REQUESTED, ASSEMBLING and READY_FOR_DOWNLOAD — INV-253-07" (PASS)

[2026-03-12] — Suivi T-02

  • Statut precedent : OUVERT (MAJEUR)
  • Statut actuel : RESOLU
  • Justification factuelle :
  • 2 tests audit ajoutes dans bulk-export.service.spec.ts
  • Test 1 (lignes 105-117) : verifie emission audit avec entityId et entityType corrects
  • Test 2 (lignes 119-128) : verifie refus creation si auditLogService.log echoue (mock HSM unavailable)
  • Preuve de verification :
  • fichier bulk-export.service.spec.ts lignes 105-128 : 2 tests dedies (PASS)

[2026-03-12] — Suivi T-03

  • Statut precedent : OUVERT (MAJEUR)
  • Statut actuel : NON RESOLU
  • Justification factuelle :
  • bulk-export.processor.ts (610 lignes) reste exclu de la couverture unitaire
  • Exclusion par conception : worker BullMQ necessitant environnement S3/HSM complet
  • Documente dans l'acceptabilite comme exclu par conception
  • Preuve de verification :
  • Aucun fichier bulk-export.processor.spec.ts n'existe
  • Justification d'exclusion documentee dans acceptabilite Phase 1

[2026-03-12] — Suivi S-02

  • Statut precedent : OUVERT (MAJEUR)
  • Statut actuel : RESOLU
  • Justification factuelle :
  • Identique a E-01 : AuditLogService injecte et fail-closed dans create()
  • Preuve de verification :
  • Voir suivi E-01 ci-dessus

3. Verdict d'acceptabilite (courant)

Verdict actuel : ACCEPTE AVEC RESERVES Date : 2026-03-12 Motif synthetique : Les 2 ecarts BLOQUANT (E-01, E-03) et 4 ecarts MAJEUR (E-02, T-01/S-01, T-02, S-02) sont RESOLUS avec preuves (code + tests). 3 ecarts restent NON RESOLUS (E-04 INV-253-11, E-05 FSM bypass, T-03 processor coverage) — tous explicitement reports vers PD-253b et classes MINEUR/non bloquant. 6 issues MINEUR (S-03 a S-07) tracees pour PD-253b.

4. Historique des verdicts

Date Verdict Version / commit Commentaire
2026-03-12 ACCEPTE AVEC RESERVES (initial) fix(PD-253): corrections BLOQUANT/MAJEUR acceptabilite step 7 Tous BLOQUANT/MAJEUR resolus; reserves sur E-04/E-05/T-03 et 6 MINEUR traces PD-253b
2026-03-12 ACCEPTE AVEC RESERVES (post-review) revue independante Verification code+tests confirme les corrections; verdict maintenu