Aller au contenu

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

1. Références

  • Spécification : PD-299-specification.md
  • Tests contractuels : PD-299-tests.md
  • Plan d’implémentation : PD-299-plan.md
  • Date de revue : 2026-04-23
  • 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 §5.1 D-299-20 / §5.5 F-299-10 / TC-NOM-17 / Plan §0 DEC-04, §2.10 Le plan impose qu’un item RATIFIED sans ratification_ref soit reclassé UNRATIFIED_MISSING_PROOF. Règle ajoutée par rapport au contrat (ratification_ref? optionnel), divergence d’évaluation Gate 5. MAJEUR
Non-conformité Spec Spec §5.1 D-299-07, §5.5 F-299-03 / TC-NOM-04 / Plan §2.3 Le plan restreint Authorization à un seul espace et valide ^Bearer [!-~]+$ au lieu de ^Bearer [ ]+[!-~]+$. Comportements autorisés par la spec peuvent être rejetés. MAJEUR
Non-conformité Spec Spec §5.1 D-299-21, §5.5 F-299-11 / TC-NOM-18 / Plan §0 DEC-08, §2.11 Le plan impose unicité approver_id_PO != approver_id_LEGAL et jira_comment_id_PO != jira_comment_id_LEGAL. Règle supplémentaire non contractée dans la spec canonique. MAJEUR
Non-conformité Spec Spec §3 (Zéro test), §5bis (séquence count(find(src/{module}, ...))) / Plan §0 DEC-02, §2.8 Le plan fixe le comptage zéro-test au niveau projet (<project_root>/src) comme décision d’interprétation. Divergence potentielle de verdict Gate 8 entre implémentations auditées. MAJEUR
Couverture manquante Invariant INV-299-14 / TC-NOM-13, TC-ERR-11 / Plan §0 DEC-07, §2.9 Si source_story_id est absent, le plan traite la story en non-companion (no-op). Invariant companion contournable par absence de métadonnée, sans rejet systématique. BLOQUANT
Couverture manquante Invariant INV-299-17 / TC-NR-05 / Plan §3 (risque “section plan non canonique”), Code Contracts gov-check-extensions L’extraction extensions peut produire 0 item sans erreur en absence de sections canoniques. Possibilité de bypass Gate 5 avec extensions non détectées. BLOQUANT
Test irréalisable TC-NOM-09 / Plan §2.7, §2ter Le plan compare git diff (chemins relatifs projet) à des cross_module_point_path listés avec préfixe ProbatioVault-app/... sans normalisation décrite. Le scénario nominal “step 7 autorisé” devient non déterministe / potentiellement inatteignable. BLOQUANT
Test irréalisable TC-ERR-11 / Plan §2.9 (source_story_id absent => no-op) Le test d’erreur attend rejet prompt companion sans source exploitable, mais le plan autorise un no-op selon le mode de déclaration. Cas d’erreur contractuel non garantissable de façon déterministe. BLOQUANT
Hypothèse implicite Plan §0 DEC-07, §8 H-T-07 La relation companion→source est supposée portée uniquement par front-matter YAML du besoin. Dépendance à une convention non canonisée dans la spec/data model. MAJEUR
Hypothèse implicite Plan §2.7 (git diff ... origin/main...HEAD) Le baseline origin/main est supposé disponible et pertinent pour tous projets ciblés. Dépendance environnementale non contractuelle, risque de blocage faux positif/négatif. MAJEUR
Risque sécu/conformité Spec §8 (journal d’audit corrélé) / Plan §2.7, §6.2, §7.3 Journalisation gouvernance centrée sur .gov-local.json modifiable localement, sans contrôle d’intégrité mentionné. Risque de rupture d’auditabilité/probatoire (altération a posteriori). MAJEUR
Code Contract — Frontière Code Contracts gov-check-extensions.files + gov-legal.files; sharing-tests.files + sharing-ui.files Chevauchements de périmètres fichiers (ex. scripts/validate-legal-approvals.py co-assigné ; zones src/sharing/** recouvrantes). Frontières non disjointes, responsabilité contractuelle ambiguë. MAJEUR
Code Contract — Complétude Plan §1.1 (sharing-tests dépend de sharing-legal) / Code Contracts (module absent) Dépendance module sharing-legal référencée dans le plan sans contrat correspondant. Traçabilité de complétude des composants non vérifiable. MAJEUR
Code Contract — Cohérence Plan §2bis (diagramme GP --> LEG), §2bis “Wave 3”, §1.3; Code Contracts waves_execution Incohérence de dépendance gov-check-extensionsgov-legal (sens et ordre contradictoires). Orchestration non déterministe pour B6/A8, audit externe fragilisé. MAJEUR
Code Contract — Invariant Code Contracts sharing-tests.invariants, sharing-api.invariants / Spec §4 (INV-299-*) Des invariants contractuels supplémentaires sont imposés (ex. commentaire d’en-tête TC-* obligatoire, bearer single-space strict). Le corpus de règles n’est plus un sous-ensemble strict de la spec canonique. MAJEUR
Code Contract — Forbidden Code Contracts global_rules, sharing-api.forbidden / Spec D-299-07 Patterns interdits non justifiés par la spec ou exigence sécurité explicite (ex. interdiction 2 espaces Bearer malgré SP+, règle globale unset CLAUDECODE). Risque de rejet non contractuel et de non-conformité procédurale. MAJEUR
Contrainte technique non documentée Plan (absence section dédiée “Contraintes techniques”), dépendances inter-PD sans statut Le plan ne fournit pas la section exigée ni le statut DONE/TODO/STUB des dépendances inter-PD. Pré-requis inter-stories non auditables formellement. MINEUR
Contrainte technique non documentée Plan (aucune mention ESM/CJS runner-compat) Compatibilité ESM/CJS et adaptation runner ne sont pas documentées. Risque d’échec d’exécution tests/outils en CI (exigence runner). MAJEUR
Contrainte technique non documentée Plan §11 (tests d’intégration) / absence variables CI Variables CI nécessaires non documentées (CI=true, secrets/token/API URL, etc.). Reproductibilité CI incomplète pour validations d’intégration. MINEUR

3. Synthèse

  • Nombre d’écarts par gravité : BLOQUANT = 4, MAJEUR = 13, MINEUR = 2.
  • Points critiques :
  • Contournabilité de contrôles contractuels INV-299-14 et INV-299-17.
  • Deux scénarios contractuels non déterministes/irréalisables (TC-NOM-09, TC-ERR-11).
  • Dérive contractuelle explicite (DEC-04, bearer strict, unicité PO/LEGAL).
  • Incohérences et recouvrements dans les code contracts (frontières, cohérence de dépendances).

4. Verdict de la revue

  • Statut : ⛔ Rejeté
  • Motif synthétique : présence d’écarts BLOQUANTS sur testabilité contractuelle et non-contournabilité des invariants, avec dérives majeures de conformité spec et incohérences structurelles code contracts/contraintes techniques.