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 — Spécification (cycle 3 v2)
  • PD-295 — Tests (cycle 3 v2)

2. Convergences

  • Le périmètre fonctionnel B1..B5 est globalement aligné entre les deux documents (index veille B1, clarifications non-PII B2, scoring B3, promotion/archivage B4, injection unifiée B5).
  • Les règles de sécurité fail-closed et de signature HMAC/JCS sont cohérentes, y compris les vecteurs V1/V4/V6/V8 (CA-295-05TC-NOM-06, TC-NOM-06-bis).
  • Le comportement B5 sur count_configured/count_effective/under_corpus est convergent (INV-295-11, CA-295-08TC-NOM-08, TC-NEG-15).
  • Le calcul reuse_score (formule, arrondi 4 décimales, écrêtage 0.9999) est convergent (INV-295-13, §5.7 ↔ TC-NOM-07, TC-NOM-10).
  • Les machines à états learning.scope et clarification.lifecycle_state sont alignées avec les tests de transitions (INV-295-LS-*, INV-295-CL-*TC-NOM-11..14, TC-NEG-06, TC-NEG-07, TC-ERR-15).
  • Les contraintes lock/timeout/stale (30s, stale strict >60s) sont cohérentes entre la spec et les tests (INV-295-14, §5.8 ↔ TC-NOM-15, TC-ERR-08, TC-ERR-09, TC-NEG-13).
  • Le contrôle méta Gate 8 sur l’existence/exécutabilité des scripts CS-1..CS-4 est aligné (INV-295-16, CA-295-15TC-NOM-17, TC-META-01..04, TC-ERR-17).
  • Les exigences RGPD de purge (y compris frontière J+540/J+541) sont cohérentes (INV-295-04..05, CA-295-04TC-NOM-04, TC-NOM-27, TC-ERR-16).
  • Les contraintes backup (exclusion + purge historique) sont convergentes (INV-295-BACKUP-01, CA-295-BACKUP-01TC-NOM-21).
  • L’abort sur dérive horloge >500ms est aligné (G-295-09, ERR-295-CLOCK_DRIFT_EXCEEDEDTC-NEG-10).

3. Divergences

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

  • DIV-01 : Référentiel de brique incohérent sur la section signature d’état.
  • Source A (Spécification) : le modèle contractuel ne définit que 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 dans le contrat de référence).

  • DIV-02 : Attribution incohérente des tests runtime verbatim.

  • Source A (Spécification) : l’isolation subprocess verbatim appartient explicitement à B2 (INV-295-RUNTIME-01..03, §5.3 B2).
  • Source B (Tests) : section 5. Tests runtime B5 (subprocess verbatim) alors que les scénarios portent sur b2-sanitizer.py.
  • Impact : risque d’interprétation divergente du périmètre B2 vs B5 pendant la gate.

  • DIV-03 : Contrainte de redaction PII sur-spécifiée dans les tests.

  • Source A (Spécification) : exigence de sortie non-PII et erreur ERR-295-PII_DETECTED si violation (D-295-17, CA-295-02), sans format de token de redaction imposé.
  • Source B (Tests) : TC-NEG-08 impose des remplacements explicites <REDACTED_FAMILY_N> avant écriture disque, sinon erreur.
  • Impact : un comportement conforme à la spec (non-PII) peut être jugé non conforme par le test si le format de token diffère.

  • DIV-04 : Niveau d’exigence différent sur l’alerte en cas d’échec de vérification HMAC.

  • Source A (Spécification) : ERR-295-HMAC_VERIFICATION_FAILED => ligne/trace rejetée (§6), sans obligation explicite d’alerte.
  • Source B (Tests) : TC-ERR-12 => trace rejetée + alerte.
  • Impact : critère de conformité potentiellement divergent selon que l’alerte est considérée obligatoire ou optionnelle.

4. Zones d'ombre

  • Les points Q-295-01, Q-295-02, Q-295-05, Q-295-06 restent ouverts dans la spec et ne sont pas clos par le plan de tests.
  • INV-295-09 (clé Vault chargée une fois, immuable en session) n’a pas de scénario de preuve explicite de non-relecture en cours de session.
  • CA-295-12 inclut explicitement le clearing MEMORY_DEGRADED -> MEMORY_HEALTHY après 2 cycles conformes, sans test dédié identifié.
  • CA-295-STATE-01 exige le filtrage non signé au scoring, à la promotion et à l’injection; les tests détaillés montrent surtout le cas scoring (TC-STATE-01), la démonstration explicite sur promotion/injection reste implicite.
  • TC-NR-02 (« step0 sans mémoire dispo continue sans crash ») n’explicite pas clairement la frontière avec les cas fail-closed bloquants (ERR-295-AUDIT_KEY_UNAVAILABLE, ERR-295-CLOCK_DRIFT_EXCEEDED).

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 ```