Aller au contenu

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

1. Références

  • Spécification : PD-280-specification.md
  • Tests contractuels : PD-280-tests.md
  • Plan d’implémentation : PD-280-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 Spec §4 INV-280-09 / Spec §5.3 / Spec §7 CA-12 / Plan §2.2 Le plan prévoit une mutation DB pendant l’appel de vérification (reclassifier ... update DB), alors que l’invariant INV-280-09 et CA-12 imposent un endpoint lecture seule sans mutation induite par l’appel. Violation directe du contrat d’idempotence/concurrence ; non-conformité de comportement. BLOQUANT
Test irréalisable Test TC-NOM-10 / Spec INV-280-09, CA-12 / Plan §2.2 TC-NOM-10 exige “aucune mutation d’état induite par l’appel”, mais le flux planifié inclut une mutation en traitement nominal SLA. Oracle de test incompatible avec le mécanisme décrit ; verdict QA non décidable de façon univoque. BLOQUANT
Code Contract — Cohérence Code Contracts proof-verification-service (forbidden: “Muter l’état métier lors d’un appel de vérification”) / Plan §2.2 Le plan contredit explicitement un interdit contractuel du module service. Rupture de cohérence Plan ↔ Code Contracts sur une règle non négociable. BLOQUANT
Non-conformité Spec Spec §6 (codes d’erreur contractuels) / Tests §4 / Plan §7 “IDOR ... preuve appartient au tenant” Le plan introduit un contrôle d’appartenance tenant (comportement d’autorisation) non contractualisé dans le modèle de réponses attendu (400/404/500 uniquement). Introduction de comportement non spécifié ; risque d’écarts d’API (codes/réponses non contractuels). MAJEUR
Couverture manquante Tests §5 (chaque invariant dédié), Code Contracts proof-verification-tests, Plan §12 (“Couverture minimale attendue : 80%”) Le plan formalise un seuil global de 80% qui n’assure pas la couverture exhaustive invariant/critère exigée contractuellement. Critère de couverture affaibli par rapport au contrat ; risque de conformité partielle acceptée. MAJEUR
Hypothèse implicite Plan §8 HT-05 / Spec INV-280-06, CA-12 La persistance et la stabilité de verificationRequestId reposent sur “table de cache ou colonne additionnelle” sans mécanisme figé ni périmètre de données contractualisé dans le plan. Fragilise l’idempotence “DONE identique” et la reproductibilité inter-appels. MAJEUR
Hypothèse implicite Plan §8 HT-06 / Spec §5.2, ERR-280-05, CA-10 Le calcul SLA dépend de pending_since “disponible ou dérivable”, sinon ajout de colonne ; cette dépendance de données n’est pas sécurisée contractuellement dans le plan. Risque de non-application déterministe du TTL et de divergence des transitions temporelles. MAJEUR
Risque sécu/conformité Plan §7 (IDOR) / Plan §5 (mapping tests) Le contrôle d’accès tenant est mentionné en mitigation sécurité mais n’est mappé à aucun test contractuel dédié ni point d’observabilité explicite dans le plan de tests. Risque de faille d’autorisation non détectée en audit tiers. MAJEUR
Contrainte technique non documentée Plan (absence section “Contraintes techniques” conforme) Le framework de test (Jest/Vitest) n’est pas explicitement choisi contractuellement. Ambiguïté d’exécution des suites de tests et de compatibilité outillage CI. MAJEUR
Contrainte technique non documentée Plan (absence section “Contraintes techniques” conforme) Compatibilité ESM/CJS et adaptation du runner pour dépendances ESM-only non documentées. Risque d’échec d’exécution en CI/local non couvert par le plan. MAJEUR
Contrainte technique non documentée Plan §9.5 / §11 Les dépendances inter-PD ne sont pas listées exhaustivement avec statut explicite DONE/TODO/STUB acceptable. Traçabilité de dépendances incomplète pour audit externe. MINEUR
Contrainte technique non documentée Plan (aucune variable CI explicitée) Variables CI requises pour tests d’intégration (DATABASE_URL, CI=true, etc.) non documentées. Risque de non-reproductibilité des tests d’intégration. MINEUR

3. Synthèse

  • Nombre d’écarts par gravité : BLOQUANT = 3 ; MAJEUR = 7 ; MINEUR = 2.
  • Points critiques :
  • Contradiction majeure sur la nature lecture seule de l’endpoint (mutation DB planifiée).
  • Incompatibilité directe avec TC-NOM-10 et avec les interdits des Code Contracts service.
  • Contraintes techniques obligatoires (runner, ESM/CJS) non documentées.

4. Verdict de la revue

  • Statut : ⛔ Rejeté
  • Motif synthétique : Le plan n’est pas contractuellement conforme sur un axe central non négociable (idempotence lecture seule), présente un test bloquant non réalisable tel que décrit, et ne respecte pas les exigences documentaires minimales de contraintes techniques requises pour auditabilité tierce.