Aller au contenu

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

1. Références

  • Spécification : PD-281-specification.md
  • Tests contractuels : PD-281-tests.md
  • Plan d’implémentation : PD-281-plan.md
  • Date de revue : 2026-03-01
  • Reviewer : Auditeur technique indépendant (OpenCode)

2. Constatations (écarts)

Type Référence (Spec/Test/Plan) Description Impact Gravité (BLOQUANT/MAJEUR/MINEUR)
Non-conformité Spec Spec §5.3 / CA-02 / Plan §1-C2, §9.2, Code Contracts architectural_decisions #2 Le plan autorise explicitement une alternative où TimestampBatchStatus n’est pas présent dans RFC_3161.zed (usage de BatchState via mapping), alors que la spec impose la présence contractuelle de TimestampBatchStatus. Violation directe de l’exigence contractuelle de complétude des types Z. BLOQUANT
Test irréalisable TC-NOM-05 / Spec §5.3 / Plan §1-C2, §5 TC-NOM-05 exige la présence des types Z nommés exactement comme en spec; l’option planifiée BatchState (sans TimestampBatchStatus) rend ce scénario non satisfaisable tel qu’écrit. Impossibilité d’obtenir un verdict de conformité testable sur le test nominal central de complétude des types. BLOQUANT
Non-conformité Spec Spec §5.2 (couple entity_name, column_name) / TC-NOM-03 / Plan §1-C1 pseudo-code Le mécanisme de discrimination/mapping est décrit au niveau ent_name (entité seule), alors que la spec et les tests cadrent le comportement sur le couple (entité, colonne). Risque de mauvaise discrimination pour entités multi-enums; dérive entre règle contractuelle et implémentation décrite. MAJEUR
Couverture manquante INV-281-01-discrimination / Plan §1-C1 pseudo-code (if ent_name not in z_mapping: continue) Le plan ne démontre pas que toutes les colonnes status éligibles restent contrôlées indépendamment de la présence dans z_mapping; un filtre préalable peut exclure des status sans preuve de complétude de z_mapping. Invariant de discrimination potentiellement contournable (faux négatifs Anchor enum). MAJEUR
Hypothèse implicite Plan §8 (H-281-02) / Plan §9.1 Le plan laisse ouverte une bifurcation structurante (“conserver mono-enum ou passer multi-enum”) sans verrou contractuel final. Ambiguïté d’implémentation sur un point critique de couverture; audit tiers non déterministe sur le design cible. MAJEUR
Test irréalisable TC-NOM-03 / Plan §5 (point d’observation) Le test demande une traçabilité explicite au mapping du couple (entity_name, column_name); le plan n’explicite qu’une observation par entité/type, sans point d’observabilité contractuel du couple de clé. Critère de traçabilité du test non démontré; validation du scénario incomplète. BLOQUANT
Risque sécu/conformité Axe 5 (auditabilité) / Plan §7, §3-C3 Le plan conclut “Aucun impact sécurité identifié” mais ne documente pas de mécanisme d’intégrité/provenance des mises à jour d’artefacts probatoires (_generated-z-lint.yaml, AUDIT-SYNTHESIS.md) dans la chaîne de preuve. Risque de rupture d’auditabilité et de contestabilité de la preuve de conformité. MAJEUR
Code Contract — Cohérence Code Contracts architectural_decisions #2 / Spec §5.3 / INV-281-03 La décision architecturale “mapping timestamp_batch -> BatchState” est en contradiction avec la contrainte spec “TimestampBatchStatus doit exister” et avec l’invariant de complétude repris dans les contracts. Incohérence contractuelle interne (spec vs code contracts), bloquante pour audit externe. BLOQUANT
Code Contract — Invariant Code Contracts module discriminateur-enum / Spec INV-281-01 Le contract d’invariant n’encadre pas explicitement la dimension colonne dans l’interface déclarée (centrage sur entité/fonction), alors que l’invariant dépend de field. Garantie d’invariant partielle dans le contrat de code; risque de conformité non vérifiable au niveau frontière contractuelle. MAJEUR
Contrainte technique non documentée Plan (absence section “Contraintes techniques”) / Dépendances inter-PD Le plan ne liste pas les dépendances inter-PD avec statut DONE/TODO/STUB. Manque de traçabilité de dépendances de livraison. MINEUR
Contrainte technique non documentée Plan (absence section “Contraintes techniques”) / Framework de test Aucun choix explicite Jest/Vitest n’est documenté, ni justification de non-applicabilité. Ambiguïté sur le runner de test attendu dans la gouvernance demandée. MAJEUR
Contrainte technique non documentée Plan (absence section “Contraintes techniques”) / Compatibilité ESM/CJS Aucune identification des dépendances ESM-only/CJS ni du runner adapté. Risque d’échec d’exécution de tests lié à l’environnement outillage. MAJEUR
Contrainte technique non documentée Plan (absence section “Contraintes techniques”) / Variables CI Variables CI requises (DATABASE_URL, CI=true, etc.) non documentées / non qualifiées comme non applicables. Faible auditabilité de la reproductibilité d’exécution CI. MINEUR

3. Synthèse

  • Nombre d’écarts par gravité : BLOQUANT = 4, MAJEUR = 7, MINEUR = 2.
  • Points critiques :
  • Contradiction explicite entre la spec (§5.3) et le plan/code contracts sur TimestampBatchStatus.
  • Réalisabilité incomplète de tests contractuels (TC-NOM-05, TC-NOM-03).
  • Couverture incomplète de l’invariant de discrimination (dimension couple entité/colonne et préfiltre z_mapping).
  • Absence de section “Contraintes techniques” requise par le cadre de revue.

4. Verdict de la revue

  • Statut : ⛔ Rejeté
  • Motif synthétique : Présence d’écarts bloquants de conformité contractuelle (spec ↔ plan ↔ code contracts), tests contractuels non intégralement réalisables, et exigences documentaires techniques obligatoires absentes.