Aller au contenu

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

1. Références

  • Spécification : PD-279-specification.md
  • Tests contractuels : PD-279-tests.md
  • Plan d’implémentation : PD-279-plan.md
  • Date de revue : 2026-03-01
  • Reviewer : Auditeur technique indépendant (conformité contractuelle)

2. Constatations (écarts)

Type Référence (Spec/Test/Plan) Description Impact Gravité (BLOQUANT/MAJEUR/MINEUR)
Non-conformité Spec Spec §5.3, §6 / Plan §2.1 (étape 5), §4 (CA-279-04), §6 La garde legal_lock=true est contractuellement définie en HTTP 409, alors que le plan impose HTTP 423. Rupture de contrat API et non-conformité directe aux cas d’erreur spécifiés. BLOQUANT
Non-conformité Spec Spec §5.5 (routes protégées), INV-279-10 / Plan §2.3, §11 Le plan décrit une exclusion implicite à l’inclusion batch via filtre d’éligibilité (status=EXPIRED) sans preuve d’un rejet explicite 409 à l’inclusion POST /destruction/batches. Risque de contournement fonctionnel et non-respect de l’exigence de rejet explicite/auditable à l’inclusion. BLOQUANT
Test irréalisable Document de tests fourni / Exigence axe 3 (TC-* observables) / Plan §5 Le document de tests fourni ne contient pas les scénarios TC-* exécutables et points d’observabilité détaillés; il contient surtout des traces d’outillage et une affirmation de couverture. Audit externe non reproductible; impossibilité de vérifier la réalisabilité contractuelle des tests. BLOQUANT
Couverture manquante Invariant INV-279-11 (Spec §4) / Plan §3, §4 L’invariant contractuel d’idempotence (INV-279-11) n’est pas mappé comme tel dans la matrice d’invariants; il est déplacé vers un critère ajouté (CA-279-13) hors canon. Perte de traçabilité invariant→mécanisme et fragilité en gate contractuel. MAJEUR
Non-conformité Spec Spec §4 (INV-279-11), §7 / Plan §3 (INV-279-11 renommé, INV-279-12 ajouté) Le plan renumérote/redéfinit les invariants (INV-279-11 devient destruction checkpoint, INV-279-12 est ajouté) par rapport au corpus canonique. Dérive contractuelle et ambiguïté d’audit sur les obligations non négociables. MAJEUR
Hypothèse implicite Spec §3, §4 (INV-279-04), §5.1 / Plan §3 (INV-279-04), §2.4 Le plan substitue lifecycle_log par integrity_journal_entries sans formaliser l’équivalence contractuelle des deux artefacts. Ambiguïté de preuve de traçabilité; risque de rejet d’audit tiers. MAJEUR
Non-conformité Spec Spec §2 (Inclus/Exclu), §5.7 / Plan §8 (HT-279-02), §9 (V3), Code contracts migration-ddl Le plan introduit l’ajout de colonne geo_copy_count dans la migration PD-279 alors que la stratégie DDL canonique ne liste que RESTITUTED, restituted_at, restitution_deadline. Extension de périmètre technique non contractualisée, avec impact schéma et dépendance amont implicite. MAJEUR
Code Contract — Invariant Code contracts state-machine-extension, tests / Spec §4 Les code contracts incluent des invariants non issus du set canonique (ex. INV-279-12) et des contraintes de test non contractuelles comme invariants (couverture >= 80%). Non-respect de la règle “invariants du code contract ⊆ invariants spec”; dérive normative. MAJEUR
Code Contract — Complétude Spec §5.5 (DELETE /documents/:id) / Plan §2.3, §11 / Code contracts destruction-guard-extension Le périmètre DELETE est présent dans le plan mais absent des fichiers/interfaces couverts dans les code contracts de garde destruction. Zone fonctionnelle sans contrat de code explicite, traçabilité incomplète. MAJEUR
Contrainte technique non documentée Exigence §7 (contraintes techniques) / Plan global Absence d’un inventaire explicite des dépendances inter-PD avec statut formalisé DONE/TODO/STUB. Visibilité de dépendances incomplète pour gouvernance et planification d’exécution. MINEUR
Contrainte technique non documentée Exigence §7 (framework test) / Plan §12 Le choix explicite Jest ou Vitest n’est pas déclaré de façon normative. Ambiguïté de runner de test pour exécution contractuelle reproductible. MINEUR
Contrainte technique non documentée Exigence §7 (compat ESM/CJS) / Plan global Aucune documentation de compatibilité ESM-only/CJS ni adaptation du runner. Risque d’échec pipeline/tests lié au chargement modules non anticipé. MAJEUR
Contrainte technique non documentée Exigence §7 (variables CI) / Plan global Variables CI requises pour intégration (ex. DATABASE_URL, CI=true) non documentées. Reproductibilité CI incomplète et exécution d’intégration non garantie. MINEUR
## 3. Synthèse
- Nombre d’écarts par gravité : BLOQUANT=3, MAJEUR=7, MINEUR=3
- Points critiques :
- Non-conformité HTTP contractuelle (legal_lock: 423 vs 409).
- Contrôle destruction à l’inclusion batch non démontré en rejet explicite 409.
- Artefact de tests fourni non auditable/rejouable pour validation contractuelle.
## 4. Verdict de la revue
- Statut : ⛔ Rejeté
- Motif synthétique : Le plan présente des écarts contractuels directs (codes HTTP, contrôle cross-module), une traçabilité invariants/codes contracts non canonique, et un artefact de tests non exploitable pour audit tiers.