Aller au contenu

PD-295 — 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

  • PD-295-specification.md (cycle 3 v3)
  • PD-295-tests.md (cycle 3 v3)

2. Convergences

  • Alignement global B1..B5 (veille, clarifications non-PII, scoring, promotion/archivage, injection).
  • Alignement HMAC/JCS, y compris V1/V4/V6/V8 (CA-295-05TC-NOM-06).
  • Alignement fail-closed B5 (EMPTY_BLOCK, borne de récursion) (INV-295-10, INV-295-17TC-ERR-13, TC-NEG-17).
  • Alignement count_configured / count_effective / under_corpus (INV-295-11, CA-295-08TC-NOM-08, TC-NEG-15).
  • Alignement reuse_score (formule, 4 décimales, plafond 0.9999) (INV-295-13TC-NOM-07, TC-NOM-10).
  • Alignement filtrage des lignes d’état non signées (INV-295-STATE-01..03, CA-295-STATE-01TC-STATE-01..04).
  • Alignement machines d’état learning.scope / clarification.lifecycle_state (INV-295-LS-*, INV-295-CL-*TC-NOM-11..14, TC-NEG-06/07, TC-ERR-15).
  • Alignement lock/timeout/stale (INV-295-14, §5.12 ↔ TC-NOM-15, TC-NOM-17, TC-ERR-08/09, TC-NEG-13).
  • Alignement NTP/dérive (G-295-09, ERR-295-NTP_UNREACHABLE, ERR-295-CLOCK_DRIFT_EXCEEDEDTC-NEG-10).
  • Alignement méta Gate 8 (INV-295-16, CA-295-15TC-META-01..04, TC-ERR-17).

3. Divergences

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

  • DIV-01 : Référentiel de briques incohérent sur la signature d’état.
    Source A (Spécification) : contrat borné à B1..B5 (Objectif, D-295-23).
    Source B (Tests) : section 6. Tests signature d’état B7.
    Impact : ambiguïté de traçabilité (brique B7 non définie contractuellement).

  • DIV-02 : Attribution incohérente des tests runtime verbatim.
    Source A (Spécification) : isolation runtime rattachée à B2 (INV-295-RUNTIME-01..03, §5.3).
    Source B (Tests) : section 5. Tests runtime B5 (subprocess verbatim) alors que les scénarios testent b2-sanitizer.py.
    Impact : ambiguïté de périmètre B2/B5 au moment du verdict.

  • DIV-03 : Règle de redaction PII sur-spécifiée dans les tests.
    Source A (Spécification) : exigence “résumé non-PII” + ERR-295-PII_DETECTED (D-295-17, CA-295-02), sans token imposé.
    Source B (Tests) : TC-NEG-08 impose <REDACTED_FAMILY_N> avant écriture, sinon erreur.
    Impact : une implémentation conforme spec peut échouer aux tests si le masquage utilise un autre format.

  • DIV-04 : Niveau d’exigence différent pour ERR-295-HMAC_VERIFICATION_FAILED.
    Source A (Spécification) : “ligne/trace rejetée” (§6).
    Source B (Tests) : “trace rejetée + alerte” (TC-ERR-12).
    Impact : conformité variable selon que l’alerte est obligatoire ou non.

  • DIV-05 : Contrainte count_configured incompatible avec V6 validé en test.
    Source A (Spécification) : D-295-26 borne count_configured à 5/3/3 (ou 6 purge RGPD).
    Source B (Tests) : TC-NOM-06 valide V6, dont le payload contient count_configured: 1 (rotation).
    Impact : incertitude normative sur les valeurs autorisées hors injection/purge.

  • DIV-06 : Comportement attendu différent sur ERR-295-PURGE_VERIFICATION_FAILED.
    Source A (Spécification) : “alerte conformité” (§6).
    Source B (Tests) : “clôture purge rejetée + alerte” (TC-ERR-16).
    Impact : ambiguïté sur l’effet métier attendu (alerte seule vs rejet).

4. Zones d'ombre

  • Q-295-01, Q-295-02, Q-295-05, Q-295-06 restent ouverts dans la spécification et non clos par les tests.
  • Le support exact des “traces query” à purger (CA-295-04, TC-NOM-04) n’est pas explicitement listé.
  • La preuve explicite “clé Vault chargée une fois puis jamais relue en session” (INV-295-09) n’a pas de scénario dédié.
  • Le reset à 0 de fail_closed_depth en fin de step 0 (D-295-32) n’a pas d’oracle de test explicite.
  • Le canal/forme des alertes opérateur/conformité n’est pas contractuellement spécifié.

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