Aller au contenu

PD-297 — Rapport de confrontation (Étape 3)

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

1. Sources confrontées

  • Document d'entrée SPECIFICATION : PD-297 — Boucle d’enrichissement formel contractuelle (capitalisation inter-stories) (étape Spécification)
  • Document d'entrée TESTS : PD-297 — Scénarios de tests contractuels (étape QA/Validation)

2. Convergences

  • FSM contractuelle alignée (mêmes états et rejets des transitions hors contrat). Réf : SPEC INV-297-09..19, §5.5 ; TESTS §2 (INV-297-09..19), TC-ERR-10, TC-ERR-11.
  • Append-only et interdiction de mutation/suppression alignés. Réf : SPEC INV-297-01, ERR-297-05 ; TESTS TC-ERR-05, TC-NR-01.
  • Traçabilité story_id + trace_source alignée. Réf : SPEC INV-297-02, D-297-16 ; TESTS TC-NOM-02, TC-NEG-01.
  • Idempotence stricte alignée (replay identique, collision refusée). Réf : SPEC INV-297-03, §5.6 ; TESTS TC-NOM-05, TC-ERR-03.
  • Obligation des 4 formalismes alignée. Réf : SPEC INV-297-07, F-297-03 ; TESTS TC-NOM-03, TC-NEG-03.
  • Fail-closed aligné (outil indisponible/timeout/erreur interne => FAIL). Réf : SPEC INV-297-05, ERR-297-07, ERR-297-08 ; TESTS TC-ERR-07, TC-ERR-08, TC-ERR-13.
  • Scopes contracts|code|full alignés sur GO|FAIL uniquement, SKIP interdit. Réf : SPEC INV-297-06, F-297-05 ; TESTS TC-NOM-04, TC-ERR-09.
  • Guard de clôture step 10 aligné (job_state != DONE => clôture refusée). Réf : SPEC INV-297-21 ; TESTS TC-NOM-07, TC-NEG-04.
  • Mécanismes distribués globalement alignés (lock, idempotence, réconciliation, rate-limit, clearing). Réf : SPEC §5.6 ; TESTS TC-ERR-02, TC-NR-03, TC-NR-04, TC-NEG-09.

3. Divergences

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

  • DIV-01 : Référence épique incohérente.
    Source A (SPECIFICATION) : Références = « Epic : Référence épique non fournie », + Q-297-01.
    Source B (TESTS) : §1 Références = « Epic : EPIC-XX ».
    Impact : traçabilité PMO/Jira non univoque.

  • DIV-02 : Contradiction sur la testabilité globale du contrat.
    Source A (SPECIFICATION) : INV-297-22 impose la testabilité de toute règle (sinon hors périmètre).
    Source B (TESTS) : §10 Verdict QA = « Testable intégralement : Non » ; §9 liste 5 éléments non testables.
    Impact : conflit de lecture pour la gate (contrat annoncé vérifiable vs validation partielle).

  • DIV-03 : Exigence de signature d’audit présente dans TESTS mais non contractualisée dans la SPEC.
    Source A (SPECIFICATION) : traçabilité définie (D-297-16, D-297-21) sans contrat de signature explicite.
    Source B (TESTS) : TC-NOM-01 exige « Audit signé » ; §8 exige « Événement signé / horodaté ».
    Impact : critère QA non rattaché à un format/protocole contractuel.

  • DIV-04 : Incohérence de traçabilité invariant/critère dans la matrice TESTS.
    Source A (SPECIFICATION) : INV-297-11 = entrée unique PENDING -> EXTRACTING; CA-297-15 = guard de clôture.
    Source B (TESTS) : §2 associe INV-297-11 à CA-297-15 tout en commentant l’entrée nominale unique.
    Impact : preuve de couverture ambiguë en audit.

4. Zones d'ombre

  • Routage canonique story_id -> norme non spécifié opérationnellement.
  • Format sémantique canonique de details dans formal_result_json non défini.
  • Stratégie inter-repo de versionnement/résolution de conflits append-only non définie.
  • Portée globale Jira Done vs guard local job_state != DONE non tranchée.
  • Sémantique lock au retour FAILED_BLOCKING -> PENDING (maintien/libération/réacquisition) non explicitée.
  • Politique de conservation long terme des métadonnées d’idempotence non couverte.

5. Recommandation

  • Procéder — convergence confirmée, aucun conflit bloquant
  • Rework nécessaire — divergences à résoudre avant de continuer
  • Escalade — décision humaine requise sur un point structurant