Aller au contenu

PD-250 — Plan d’implémentation : Revue

1. Références

  • Spécification : PD-250-specification.md
  • Tests contractuels : PD-250-tests.md
  • Plan d’implémentation : PD-250-plan.md
  • Date de revue : 2026-02-25
  • Reviewer : OpenCode (auditeur technique indépendant)

2. Constatations (écarts)

Type Référence (Spec/Test/Plan) Description Impact Gravité (BLOQUANT/MAJEUR/MINEUR)
Test irréalisable Test TC-250-16 / Spec INV-250-05 §10.4b / Plan §6.2 TC-250-16 est mappé en test unitaire mocké alors que le scénario exige validation ACID réelle (crash post-S3/pré-commit), monotonie PostgreSQL et non-perte transactionnelle. L’invariant de mesurabilité d’audit (non-perte, ordre causal, complétude) n’est pas démontrable selon le plan de test décrit. BLOQUANT
Non-conformité Spec Spec §5.9 / Plan TASK-12, TASK-13, §4.4 MIN-11 La spec impose parentBatchId obligatoire dans l’audit log des batches de reprise; le plan l’implémente et le teste au niveau destruction_batches, pas explicitement au niveau audit log. Rupture de traçabilité contractuelle de filiation inter-batch en audit externe. MAJEUR
Non-conformité Spec Spec §5.8 / Plan TASK-11, §9.1 La spec exige un job préavis quotidien; le plan lie l’ordonnancement préavis à DESTRUCTION_JOB_INTERVAL (1..168h), ce qui autorise des fréquences non quotidiennes. Déviation contractuelle possible sur la temporalité de préavis. MAJEUR
Non-conformité Spec Spec INV-250-05 (séquence audit_seq) / Plan HYP-IMPL-07, TASK-06, TASK-13 La spec contractualise l’ordonnancement causal via séquence audit_seq; le plan définit et exploite audit_destruction_seq. Divergence de contrat explicite sur le mécanisme de monotonie auditable. MAJEUR
Hypothèse implicite Spec §3 (définition flux legal_lock) / Plan TASK-09, HYP-IMPL-10 La détermination du flux legal_lock repose sur backfill depuis état courant (legal_lock/legal_lock_until) sans preuve explicite d’exhaustivité historique “a été assigné à un moment quelconque”. Risque de classification erronée du flux juridique. MAJEUR
Risque sécu/conformité Spec INV-250-12 / Plan TASK-09 Si had_legal_lock est incomplet, un document du flux legal_lock peut être traité sans zeroization obligatoire. Contournement d’un invariant probatoire de destruction cryptographique. MAJEUR
Couverture manquante Spec INV-250-10 / Test TC-250-06, TC-250-14 / Plan TASK-04, TASK-07 Le plan ne formalise pas explicitement le chaînage systématique “erreur unitaire -> alerte émise” pour tous cas partiels (la partie alerte est traitée globalement/SLA). Observabilité partielle non garantie pour certaines erreurs unitaires. MAJEUR
Code Contract — Complétude Code contracts / Plan §2.1 (arborescence cible) Des éléments explicitement planifiés ne sont pas couverts par un contrat dédié (ex. destruction.module.ts, destruction-batch.entity.ts, enums). Zones sans frontière contractuelle explicite dans l’exécution multi-agents. MINEUR
Code Contract — Invariant Code contracts (plusieurs modules) / Spec INV-* Plusieurs “invariants” de contrats de code ne sont pas un sous-ensemble strict des invariants de spec (ex. contraintes de style/configuration internes, MAJ-*). Dilution du périmètre contractuel et ambiguïté audit “spec vs conventions d’implémentation”. MINEUR

3. Synthèse

  • Nombre d’écarts par gravité : 1 BLOQUANT, 6 MAJEURS, 2 MINEURS.
  • Points critiques :
  • Testabilité contractuelle non démontrable pour TC-250-16 (axe Plan↔Tests).
  • Traçabilité de reprise non alignée avec l’exigence spec sur parentBatchId dans l’audit log.
  • Risque de non-respect INV-250-12 lié à l’historique legal_lock.
  • Divergences formelles sur temporalité préavis et mécanisme audit_seq.

4. Verdict de la revue

  • Statut : ⛔ Rejeté
  • Motif synthétique : présence d’un écart BLOQUANT de testabilité contractuelle et de plusieurs écarts MAJEURS de conformité stricte (traçabilité, temporalité de préavis, invariants probatoires).