PD-296 — Plan d’implémentation : Revue¶
1. Références¶
- Spécification : PD-296-specification.md
- Tests contractuels : PD-296-tests.md
- Plan d’implémentation : PD-296-plan.md
- Date de revue : 2026-04-13
- Reviewer : Codex (auditeur technique indépendant)
2. Constatations (écarts)¶
| Type | Référence (Spec/Test/Plan) | Description | Impact | Gravité (BLOQUANT/MAJEUR/MINEUR) |
|---|---|---|---|---|
| Non-conformité Spec | Spec INV-296-01, D-296-03/04/05, §5.5 / Plan §Résolution, §3 (INV-296-01), §413-424 | Le plan redéfinit le contrat à 6 checkpoints et introduit GATE3_SPEC_FORMAL, GATE3_REVIEW_START, formal_spec, absents du modèle canonique. | Rupture de conformité du modèle contractuel et des enums de données. | BLOQUANT |
| Non-conformité Spec | Spec §5.4 (PASSED -> * interdit), INV-296-13 / Plan §2.3, H-PLAN-06 | Le plan autorise PASSED -> PENDING via --force-recheck. | FSM contractuelle non fermée, transition interdite rendue possible. | BLOQUANT |
| Non-conformité Spec | Spec D-296-10 / Plan H-PLAN-02, §7 (artifact_path) | Le plan remplace la regex canonique artifact_path par une regex dynamique basée sur GOV_WORKSPACE_ROOT. | Contrat de donnée D-296-10 modifié unilatéralement. | MAJEUR |
| Non-conformité Spec | Spec INV-296-09, ERR-296-13 / Plan §3 (INV-296-09), §4 (CA-296-08), §7 | Le plan étend le blocage à DONE_ANOMALY et REJECTED alors que la spec contractualise Done. | Règle supplémentaire non spécifiée. | MAJEUR |
| Couverture manquante | INV-296-18, INV-296-10 / Plan §9.2, §Périmètre de test | Le plan place l’exhaustivité 8 projets hors scope E2E et retient un échantillonnage ≥2. | Couverture intégrale des invariants non démontrable. | BLOQUANT |
| Test irréalisable | TC-NOM-07 (tests §3, §2 matrice) / Plan §5.1 (TC-NOM-07), §394, §413-424 | TC-NOM-07 exige 8 stories et exactement 5 checkpoints; le plan vise 6 checkpoints et un échantillonnage. | TC contractuel inexécutable tel que défini. | BLOQUANT |
| Test irréalisable | TC-NOM-09 / Plan §413-424 | TC-NOM-09 suppose une exécution complète à 5 checkpoints PASSED; le plan contractualise 6 checkpoints. | Incohérence directe scénario vs mécanisme. | BLOQUANT |
| Test irréalisable | TC-NEG-12, INV-296-13 / Plan §2.3, H-PLAN-06 | TC-NEG-12 impose le rejet de toute sortie depuis PASSED; le plan autorise un cas de sortie. | Test d’invariant FSM non passable. | BLOQUANT |
| Test irréalisable | TC-NOM-08, Tests §8 (observabilité) / Plan §5.1 (TC-NOM-08), §7 | Le plan se limite à grep documentaire et ne décrit ni export probatoire vérifiable ni événement signé/hashé. | Points d’observabilité contractuels absents pour la preuve. | BLOQUANT |
| Hypothèse implicite | Spec §5.6 (reconciliation_interval_sec) / Plan §3 (INV-296-15), H-PLAN-05 | Le mécanisme “cron-like scan” suppose un scheduler opérationnel non décrit contractuellement. | Réconciliation potentiellement non exécutée en conditions réelles. | MAJEUR |
| Hypothèse implicite | Plan §2.1, §6 / Absence section Contraintes techniques | Disponibilité de uuidgen, sha256sum, timeout, flock, jq, claude, swipl, alloy supposée. | FAIL_CLOSED systématique ou comportement non déterministe selon environnement. | MAJEUR |
| Risque sécu/conformité | Tests §8 (événement signé/export probatoire) / Plan §7 (.gov-local.json append-only) | L’audit repose sur un fichier local modifiable sans preuve d’intégrité cryptographique décrite. | Rupture d’auditabilité et de probativité externe. | MAJEUR |
| Risque sécu/conformité | Spec §5.7 (“aucun bypass”) / Plan §3-§4 (risque “transition Jira hors workflow”) | Le contrôle repose sur des guards locaux /gov; le contournement hors commandes est explicitement reconnu comme risque. | Invariants bloquants potentiellement contournables. | MAJEUR |
| Code Contract — Invariant | Code contracts C2/C6 / Spec INV-296-01, D-296-03/04/05 | Les invariants de contrats imposent 6 checkpoints / 6 triggers, non conformes au référentiel canonique. | Invariants de code contracts hors sous-ensemble de la spec. | BLOQUANT |
| Code Contract — Invariant | Code contracts C2 (PASSED→* sans flag --force-recheck) / Spec §5.4 | Le contrat introduit une exception --force-recheck sur un état terminal contractuel. | Contradiction directe avec la machine d’états canonique. | BLOQUANT |
| Code Contract — Complétude | Plan §3 (INV-296-05 mention gov-impl.md) / Code contracts C4 files | gov-impl.md est utilisé dans le plan mais absent du périmètre de fichiers contracté C4. | Frontière de responsabilité incomplète pour audit tiers. | MAJEUR |
| Code Contract — Forbidden | Code contracts C1 (“artifact_path hardcodé” interdit) / Spec D-296-10 | Le pattern “forbidden” contredit une exigence explicite de la spec (regex hardcodée). | Règle forbidden non justifiée par le contrat canonique. | MAJEUR |
| Contrainte technique non documentée | Plan (absence section “Contraintes techniques”) | Les dépendances inter-PD avec statut DONE/TODO/STUB ne sont pas documentées. | Traçabilité de dépendances incomplète. | MINEUR |
| Contrainte technique non documentée | Plan (absence section “Contraintes techniques”) | Aucun choix explicite Jest ou Vitest. | Ambiguïté de runner de tests. | MAJEUR |
| Contrainte technique non documentée | Plan (absence section “Contraintes techniques”) | Compatibilité ESM/CJS et dépendances ESM-only non documentées. | Risque d’échec d’exécution des tests/outils selon runtime. | MAJEUR |
| Contrainte technique non documentée | Plan (absence section “Contraintes techniques”) | Variables CI (DATABASE_URL, CI=true, etc.) non documentées. | Reproductibilité CI partielle. | MINEUR |
3. Synthèse¶
- Nombre d’écarts par gravité : BLOQUANT = 9, MAJEUR = 10, MINEUR = 2.
- Points critiques :
- Écarts contractuels structurants (5 checkpoints canonique, FSM terminale) non respectés.
- Plusieurs tests contractuels deviennent inexécutables (TC-NOM-07, TC-NOM-09, TC-NEG-12, observabilité probatoire).
- Code contracts non alignés sur le sous-ensemble d’invariants de la spec.
- Contraintes techniques attendues non documentées.
4. Verdict de la revue¶
- Statut : ⛔ Rejeté
- Motif synthétique : non-conformités contractuelles bloquantes + tests contractuels irréalisables + incohérences code contracts/spec.
Note d’exécution : le sandbox est en lecture seule (Operation not permitted), je ne peux pas écrire physiquement PD-296-plan-review.md dans le workspace.