Aller au contenu

PD-252 — Rapport de confrontation (Étape 5 — Pré-Gate Plan)

Ce rapport est produit par l'orchestrateur Claude avant la gate PMO Gate 5. Il confronte les documents produits pour identifier convergences, divergences et zones d'ombre.

1. Sources confrontées

  • Specification : PD-252-specification.md (v3, étape 1) — 9 invariants, 12 critères d'acceptation, 8 cas d'erreur
  • Tests : PD-252-tests.md (v3, étape 2) — 11 TC-NOM, 8 TC-ERR, 1 TC-INV, 1 TC-MEC, 4 TC-NR, 6 TC-NEG
  • Plan : PD-252-plan.md (étape 4) — 2 composants (C1 + C2), 3 flux, mappings invariants/CA/tests
  • Code contracts : PD-252-code-contracts.yaml (étape 4) — 2 modules, invariants et forbidden listés

2. Convergences

  • Nature documentaire pure : Les 4 documents s'accordent sans exception — PD-252 ne produit aucun code applicatif ; les deux seuls livrables sont des fichiers Markdown dans ProbatioVault-doc.

  • Chemin contractuel figé : Tous les documents désignent docs/sae-manual/preservation-format-policy.md comme emplacement unique de C1.

  • Fichier cible de l'amendement : Tous les documents désignent docs/sae-manual/ch08-conformite.md comme seul fichier modifié pour C2.

  • Catalogue des formats : La liste canonique de 14 formats en 5 catégories (§5.4b spec → TC-NOM-02 tests → §3 plan → invariant INV-252-02 code contracts) est identique dans les 4 documents. Aucune divergence de périmètre.

  • Invariants INV-252-01 à INV-252-09 : Tous repris de façon cohérente dans les 4 documents. Les codes contracts n'en ajoutent aucun et n'en suppriment aucun.

  • SHA3-384 : Présent de façon identique dans la spec (INV-252-05, §5.1), les tests (TC-NOM-05, TC-NOM-09), le plan (INV-252-05 mapping, point de vigilance §9.7 sécurité) et les code contracts (invariant INV-252-05, forbidden).

  • Distinction normativeReference vs citations documentaires : La note contractuelle de la spec §5.1 est reprise textuellement dans les tests (TC-NOM-09), le plan (§9.4 point de vigilance) et les code contracts (invariant + forbidden). Cohérence totale.

  • Modèle d'états : 4 états (UNCLASSIFIED, COMPLETE, BITSTREAM, REJECTED), transitions autorisées depuis UNCLASSIFIED, transitions inverses interdites — identiques dans spec §5.8, tests TC-NOM-07/TC-NEG-06, plan INV-252-07 mapping et code contracts invariant INV-252-07.

  • Q-252-05 NON TESTABLE : L'absence de test déterministe sur la modalité exacte du lien GAP-FINAL-004 est reconnue de façon cohérente dans les 4 documents (spec §10.2, tests §9, plan H-06 + hors périmètre, code contracts INV-252-09).

  • Protection des sections ch08 hors périmètre : Le plan (C2 — modification minimale ciblée) et les code contracts (module ch08-amendment, sections forbidden) convergent sur la lecture seule de toutes les sections ch08 sauf §8.4 et §8.5.

  • Clause de non-conformité technique (validations PLANIFIÉ) : Formulation identique dans la spec §5.6, les tests TC-NOM-05, le plan §9.5 et les code contracts (invariant preservation-format-policy).

  • Couverture de test : Le mapping plan §5 (TC-* → mécanismes) couvre les 31 tests définis dans les tests. Aucun test orphelin.


3. Divergences

⚠️ Les conflits ne doivent JAMAIS être lissés. Chaque divergence est rendue visible.


DIV-01 : Faute de frappe sur le statut IMPLÉMENTÉ dans les code contracts

  • Source A (Spec §5.6, tableau validations) : Colonne statut libellée IMPLEMENTE (sans accent, orthographe correcte).
  • Source B (Code contracts, module preservation-format-policy, invariant INV-252-05) : "avec statut IMPLÉMEMTÉ ou PLANIFIÉ (PD-NEW)" — double M sur IMPLÉMEMTÉ.
  • Source C (Tests TC-NOM-05) : "Chaque validation a un Statut implementation (IMPLÉMEMTÉ ou PLANIFIÉ (PD-NEW))" — même double M.
  • Impact : Si l'agent producteur (agent-doc-writer) reproduit le libellé des code contracts ou des tests pour le tableau §5 de C1, le terme sera erroné. En revue documentaire structurée (TC-NOM-05), le vérificateur pourrait rejeter le tableau si la valeur attendue est IMPLÉMEMTÉ (typo) alors que le revieweur compare à IMPLEMENTE (spec). Risque faible mais source d'ambiguïté lors de la vérification CA-05.

DIV-02 : Mise à jour de §8.5 « Plan de remédiation » contractualisée mais non testée

  • Source A (Plan §2 Flux F2, étape 4) : "Mettre à jour §8.5 Plan de remédiation : entrée GAP-FINAL-004 : statut PlanifiéDONE".
  • Source B (Code contracts, module ch08-amendment, invariant 3) : "Le statut de GAP-FINAL-004 dans §8.5 DOIT passer de 'Planifié' à 'DONE'".
  • Source C (Tests — ensemble des TC-*) : Aucun test (TC-NOM-01, TC-NOM-09, ni aucun autre) ne vérifie explicitement la mise à jour de §8.5. TC-NOM-01 vérifie uniquement la présence du lien dans ch08 (CA-01/CA-08). TC-NOM-09 vérifie la tracabilité GAP-FINAL-004 dans C1, pas dans §8.5 de C2.
  • Impact : La mise à jour de §8.5 est un livrable contractualisé (plan + code contracts) sans observable de test associé. Si elle est omise, aucun test ne la détecterait. La couverture de C2 est partiellement borgne.

4. Zones d'ombre

ZA-01 — Mécanisme de discrimination FACTUR-X / PDF/A-3B non contractualisé

  • La spec §5.4 step 6 décrit la discrimination via détection de flux XML embarqué CII/UBL (EN 16931), avec statut PLANIFIÉ (PD-NEW). Le plan reprend cette note (§3 Flux F1 step 6). Mais les code contracts (module preservation-format-policy) ne contractualisent pas ce mécanisme comme invariant ou forbidden. Aucun test ne vérifie que la politique documente ce mécanisme de discrimination. Si l'agent-doc-writer omet la note de discrimination, aucun invariant ni test ne le détecte.

ZA-02 — Référence croisée à INV-249-05 (protection des scores ch08) non traçable depuis PD-252

  • Les code contracts (module ch08-amendment, forbidden) font référence à INV-249-05 pour justifier la protection des scores 77,78% / 68,18% / 72,98%. La spec PD-252 et les tests PD-252 ne font aucune mention de INV-249-05. Cette contrainte croisée est opaque pour un vérificateur qui n'a accès qu'aux artefacts PD-252 : elle ne peut pas être auditée à partir du dossier PD-252 seul.

ZA-03 — Contenu actuel de ch08 supposé sans vérification documentaire

  • Le plan (Flux F2, étape 3) et les code contracts (ch08-amendment, invariant 4) supposent que ch08 contient actuellement la référence PD-NEW-FORMAT-POLICY comme story associée à GAP-FINAL-004. Aucun document du dossier PD-252 ne cite le contenu actuel exact de ch08. Si ch08 a déjà été modifié entre la rédaction du plan et l'implémentation, les instructions de mise à jour pourraient être incorrectes ou produire un doublon.

ZA-04 — Absence de section dédiée "NON TESTABLE" pour INV-252-09 dans le plan

  • La spec §9 identifie INV-252-09 ("règles non testables marquées NON TESTABLE") et Q-252-05 comme NON TESTABLE. Les tests ont une section §9 explicite "Règles non testables". Le plan décrit le mécanisme (point §9 hors périmètre + mapping TC-INV-09). Mais le plan ne liste pas de section dédiée aux règles NON TESTABLE dans la structure de C1 — il se contente de mentionner "Marquer règles NON TESTABLE avec justification (Q-252-05)" à l'étape 11 du Flux F1. La visibilité de cette section dans la structure finale de C1 n'est pas garantie.

5. Recommandation

  • Procéder — convergence confirmée, aucun conflit bloquant
  • Rework nécessaire — 2 divergences à résoudre avant de continuer :
  • DIV-01 : Corriger le typo IMPLÉMEMTÉIMPLÉMENTÉ dans les code contracts (module preservation-format-policy, invariant INV-252-05) ET dans les tests (TC-NOM-05, TC-NOM-07, matrice de couverture §2 si applicable). Adopter la graphie sans accent IMPLEMENTE de la spec, ou corriger de façon cohérente dans les 3 documents.
  • DIV-02 : Ajouter un test dédié (ou étendre TC-NOM-01) pour vérifier la mise à jour de §8.5 dans ch08 — ou, à défaut, décider explicitement que §8.5 est couvert implicitement par CA-08/CA-09 et documenter cette décision dans les tests (section "Règles non testables" ou note).
  • Escalade — décision humaine requise sur un point structurant

Note : Les zones d'ombre ZA-01 à ZA-04 sont des lacunes de spécification ou de contractualisation, non des blocages Gate 5. Elles sont signalées pour traitement optionnel avant rédaction de C1.