Aller au contenu

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

1. Références

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

2. Constatations (écarts)

Type Référence (Spec/Test/Plan) Description Impact Gravité (BLOQUANT/MAJEUR/MINEUR)
Non-conformité Spec INV-278-01 / CA-01 / Plan §4 (CA-01), §5.3 (TC-INV-01), §9 (V-01) Le plan acte un enum DB à 5 valeurs (incluant RESTITUTED) et redéfinit le critère en « présence de DIP », alors que la spec impose un ensemble exact {PENDING, SEALED, DIP, EXPIRED}. Rupture de conformité contractuelle explicite sur le set d’états. BLOQUANT
Test irréalisable TC-INV-01 / Spec INV-278-01 / Plan §9 (V-01), §5.3 (TC-INV-01) Le test contractuel « ensemble exact = 4 valeurs » ne peut pas être validé avec la règle de test du plan (« DIP ∈ enum ») et un enum DB à 5 valeurs. Impossibilité de conclure la conformité du critère CA-01 selon la spec. BLOQUANT
Non-conformité Spec INV-278-04 / Spec §4 et §5.8 / Plan §2.3, §3 (INV-278-04), §6, §13 (C11) Les refus sécurité (401/403/429/409-retention_due) sont journalisés via AuditLogService.logAsync() par exception filter, alors que la spec exige une persistance synchrone/transactionnelle des refus. Risque de perte d’événement de sécurité en cas de crash/interruption, non-conformité NF Z42-013 sur traçabilité. BLOQUANT
Hypothèse implicite INV-278-04 / TC-ERR-03 / Plan §3 (INV-278-04 risque), §9 (V-05) Le plan suppose que le filter capture aussi les rejets pré-controller (JwtAuthGuard 401), sans mécanisme contractuel démontré. Audit des 401 potentiellement incomplet, couverture INV-278-04 incertaine. MAJEUR
Non-conformité Spec Spec §6 (catalogue d’erreurs) / Plan §13 (C9 étape 6) Le plan introduit un comportement 404 (« tous trouvés ? sinon 404 / RLS 403 ») non défini dans le contrat d’erreurs PD-278. Dérive de contrat API et ambiguïté de validation des scénarios d’erreur. MAJEUR
Non-conformité Spec Spec §1 (aucun comportement non spécifié) / Spec §6 / Plan §8 (C8), §6 Le plan introduit 503 en cas d’indisponibilité Redis (« fail-closed 503 »), code non contractualisé dans PD-278. Comportement runtime non spécifié contractuellement, divergence de conformité. MAJEUR
Couverture manquante Spec §5.5 / TC-NOM-05 / Plan §2.1, §2.2, §13 (C9) Les mécanismes détaillés C9 ne définissent ni mesure monotone explicite, ni émission explicite de performance_flag=SLOW_OPERATION, ni gestion explicite du hard-timeout atomique >5000 ms. Couverture partielle des exigences SLA et observabilité performance. MAJEUR
Test irréalisable TC-NOM-05 / Spec §5.5 / Plan §5.1 (TC-NOM-05), §13 (C9) Le scénario de validation P95/flag/timeout est mappé, mais les points d’observabilité techniques permettant la preuve ne sont pas définis au même niveau de précision que les autres invariants. Exécution probante du test de performance non démontrée dans le plan. BLOQUANT
Code Contract — Invariant Code contract dip-migration / Spec INV-278-01 / Plan §4 (CA-01), §9 (V-01) Le contrat de code « enum inclut exactement DIP via ADD VALUE » n’est pas cohérent avec l’invariant spec « set exact de 4 états » et avec le plan qui accepte 5 valeurs DB. Invariant contractuel non aligné, validation croisée plan↔contracts incohérente. MAJEUR
Contrainte technique non documentée Plan global (absence section « Contraintes techniques ») / Exigence revue axe 7 Les dépendances inter-PD ne sont pas consolidées dans une section dédiée avec statut explicite DONE/TODO/STUB par story dépendante. Traçabilité de dépendances incomplète pour audit tiers. MINEUR
Contrainte technique non documentée Plan §12 / Exigence revue axe 7 (framework test) Le framework de test n’est pas explicitement fixé en « Jest » ou « Vitest » (mention d’outillage sans choix contractuel explicite). Ambiguïté d’exécution du plan de tests en CI. MAJEUR
Contrainte technique non documentée Plan global / Exigence revue axe 7 (compat ESM/CJS) Aucune section ne documente explicitement les contraintes de compatibilité ESM/CJS et l’adaptation du runner de test. Risque d’échec d’exécution test au runtime selon dépendances. MAJEUR
Contrainte technique non documentée Plan global / Exigence revue axe 7 (variables CI) Variables CI requises (DATABASE_URL, CI=true, etc.) non documentées explicitement pour les tests d’intégration et formels. Reproductibilité CI incomplète. MINEUR

3. Synthèse

  • Nombre d’écarts par gravité : BLOQUANT = 4, MAJEUR = 7, MINEUR = 2.
  • Points critiques : contradiction structurelle sur le set d’états (INV-278-01), non-conformité de persistance audit refus (INV-278-04), test performance contractuel non démontré (TC-NOM-05), dérives de contrat d’erreurs (404/503 non spécifiés).

4. Verdict de la revue

  • Statut : ⛔ Rejeté
  • Motif synthétique : le plan présente des non-conformités contractuelles BLOQUANTES sur les invariants fondamentaux (états et auditabilité), ainsi que des écarts de testabilité et de contraintes techniques documentaires incompatibles avec une validation externe sans réserve.