Aller au contenu

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

1. Références

  • Spécification : PD-56-specification.md
  • Tests contractuels : PD-56-tests.md
  • Plan d’implémentation : PD-56-plan.md
  • Code contracts : PD-56-code-contracts.yaml
  • Date de revue : 2026-03-31
  • Reviewer : Codex (GPT-5)

2. Constatations (écarts)

Type Référence (Spec/Test/Plan) Description Impact Gravité (BLOQUANT/MAJEUR/MINEUR)
Non-conformité Spec Spec §5.6, Spec §2 (Hors périmètre), Spec H-56-06 / Plan §1 (C2, C10), Plan §8 (HT-56-05) Le plan ajoute une migration DDL (proof_availability_state) alors que la spec contractualise explicitement qu’aucune DDL additionnelle PD-56 n’est requise et que cet état est porté en amont. Contradiction contractuelle directe entre plan et spec canonique. BLOQUANT
Non-conformité Spec Spec §5.7, Spec §5.4 / Plan §2 F-01 étape 8, Plan §1 (C5) Le plan prévoit des transitions persistées nominales vers AVAILABLE, alors que la spec contractualise un flux majoritairement en lecture avec écriture conditionnelle sur première détection de corruption. Introduction d’effets de bord non contractualisés. BLOQUANT
Test irréalisable Test TC-NR-06 / Plan §2 F-01 étape 8, Plan §1 (C5) TC-NR-06 impose que les seules écritures autorisées soient la transition vers CORRUPTED et l’audit associé; le plan introduit des écritures supplémentaires en nominal. Le test de non-régression TC-NR-06 ne peut pas être satisfait tel quel. BLOQUANT
Non-conformité Spec Spec F-02, Spec §10.2 (question ouverte #2) / Plan §2 F-02 Le plan impose status != FAILED pour sélectionner le batch candidat, alors que la spec laisse explicitement ce cas non tranché. Interprétation libre introduisant un comportement non spécifié. MAJEUR
Couverture manquante Invariant INV-56-02, SCN-56-08, TC-NOM-03 / Plan §3 (mapping INV-56-02) Le déterminisme est justifié par “READ COMMITTED suffit” et “pas d’écriture concurrente”, sans mécanisme garantissant un même snapshot sur l’ensemble des lectures. Reproductibilité audit non démontrable en concurrence. MAJEUR
Risque sécu/conformité INV-56-09, CA-56-15, TC-ERR-10, TC-NOM-11 / Plan §9 point 4 Le plan accepte explicitement la possibilité de plusieurs SECURITY_ALERT en multi-instance (“2 alertes max possibles”). Anti-flood non opposable vis-à-vis de l’invariant d’émission unique. MAJEUR
Code Contract — Cohérence Code Contracts C2/C10 / Spec §5.6, Spec H-56-06 Les code contracts C2/C10 contractualisent des changements DDL/ownership qui contredisent la spec canonique PD-56. Incohérence inter-artefacts contractuels (spec vs code contracts). MAJEUR
Code Contract — Invariant Code Contracts (C4, C8, C10, C11) / Invariants spec INV-56-01..09 Plusieurs invariants de code contracts ne sont pas un sous-ensemble des invariants de la spec (contraintes techniques/outil ajoutées). Dérive du périmètre contractuel auditable. MAJEUR
Code Contract — Forbidden Code Contracts C1/C10 (forbidden) / Spec PD-56 Des interdictions sont justifiées par REX interne (ex. ENUM PostgreSQL) sans ancrage explicite dans la spec PD-56 ni exigence sécurité formelle du contrat. Ajout de règles extra-contractuelles dans un artefact opposable. MINEUR
Code Contract — Cohérence Plan diagramme de séquence (branche “structure invalide”) / Plan F-06 / Code Contract C6 (INV-56-09) Le diagramme montre une alerte sécurité inconditionnelle (firstDetection: true) pour corruption structurelle, alors que le texte/contrat exigent une émission uniquement sur première détection réelle. Ambiguïté d’implémentation et de test sur l’anti-flood. MAJEUR
Contrainte technique non documentée Plan global (absence section “Contraintes techniques”) Les dépendances inter-PD ne sont pas documentées avec statut explicite DONE/TODO/STUB acceptable. Traçabilité de faisabilité incomplète. MINEUR
Contrainte technique non documentée Plan §12 Le framework de test (Jest/Vitest) n’est pas explicitement fixé. Ambiguïté de runner de test contractuel. MAJEUR
Contrainte technique non documentée Plan global La compatibilité ESM/CJS (dépendances ESM-only + adaptation runner) n’est pas documentée. Risque d’échec d’exécution tests/CI. MAJEUR
Contrainte technique non documentée Plan global Les variables CI requises pour les tests d’intégration (DATABASE_URL, CI=true, etc.) ne sont pas documentées. Reproductibilité CI partielle. MINEUR

3. Synthèse

  • Nombre d’écarts par gravité : BLOQUANT = 3, MAJEUR = 8, MINEUR = 3.
  • Points critiques :
  • Contradiction explicite avec la spec sur la DDL (Spec §5.6 vs Plan C2/C10).
  • Écritures nominales non contractualisées (AVAILABLE) en conflit avec la sémantique de flux (§5.7) et TC-NR-06.
  • Ambiguïté/risque anti-flood SECURITY_ALERT (INV-56-09) dans le plan et les diagrammes.

4. Verdict de la revue

  • Statut : ⛔ Rejeté
  • Motif synthétique : le plan n’est pas strictement conforme au contrat PD-56 (écarts BLOQUANTS spec/tests), avec dérives supplémentaires sur cohérence des code contracts et contraintes techniques obligatoires non documentées.

Note : environnement en lecture seule, artefact non écrit sur disque.