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.