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— Spécification (cycle 2 v3)PD-295-tests.md— Tests (cycle 2 v3)
2. Convergences¶
- Alignement global sur le périmètre B1..B5, fail-closed, audit HMAC JCS, RGPD et isolation runtime B2 (Spec §1-2, §4 ; Tests §2, §5-6).
- Alignement sur le contrat B5
count_configured=5/3/3,count_effective=min(...),under_corpus, trace signée avant retour,EMPTY_BLOCKsi échec d’écriture (Spec INV-295-10/11, §5.6, CA-295-07/08 ; Tests TC-NOM-08, TC-ERR-13, TC-NEG-15). - Alignement sur la borne récursive fail-closed (
depth<=3accepté,depth=4abort + erreur dédiée) (Spec INV-295-17, D-295-32 ; Tests TC-NEG-17, TC-ERR-19). - Alignement sur la stabilité de clé Vault pendant la session
/govet arrêt process si indisponible/invalide au chargement (Spec INV-295-09, §5.2.4, CA-295-06/22 ; Tests TC-ERR-10/11, TC-NOM-23). - Alignement sur scoring
reuse_score(formule, 4 décimales, écrêtage0.9999, interdiction1.0000) (Spec INV-295-13, §5.7, CA-295-09 ; Tests TC-NOM-07, TC-NOM-10). - Alignement sur états
learning.scopeetclarification.lifecycle_state+ blocage des transitions interdites (Spec INV-295-LS-01..12, INV-295-CL-01..08, §5.11 ; Tests TC-NOM-11/12/13/14, TC-ERR-15, TC-NEG-06/07). - Alignement sur signatures des fichiers d’état, filtrage des entrées non signées, compteur
ERR-295-UNSIGNED_ENTRY, migration/rotation (Spec INV-295-STATE-01..05, §5.15 ; Tests TC-STATE-01/02/03, TC-ERR-18). - Alignement sur Gate 8 méta (présence + exécutable de
measure-cs1..4.sh) et campagnes post-merge CS-1..CS-4 (Spec INV-295-16, CA-295-15..19 ; Tests TC-META-01..04, TC-NOM-17, TC-NOM-18-A/B/C/D).
3. Divergences¶
⚠️ Les conflits ne doivent JAMAIS être lissés. Chaque divergence est rendue visible.
-
DIV-01 : Nom du champ de signature des événements audit non unifié.
Source A (SPEC) : D-295-11 définitsignature_hmac_sha256pour les événements audit.
Source B (TESTS) : observabilité §12 exigesig_hmac_sha256pour le schéma v3.
Impact : incompatibilité possible entre producteurs/validateurs de traces (rejets ou faux négatifs QA). -
DIV-02 : Comportement attendu pour
ERR-295-HMAC_VERIFICATION_FAILEDplus strict côté tests.
Source A (SPEC) : §6 indique « ligne/trace rejetée ».
Source B (TESTS) : TC-ERR-12 exige « trace rejetée + alerte ».
Impact : critère d’acceptation non déterministe (implémentation conforme SPEC potentiellement non conforme TESTS). -
DIV-03 : Chemins de scripts d’écriture signée et hook non alignés.
Source A (SPEC) :scripts/lib/write-signed-state.pyobligatoire (INV-295-STATE-03, §5.15) etscripts/lib/story-hooks.sh(§5.8).
Source B (TESTS) : §1 référencelib/write-signed-state.pyetlib/story-hooks.sh; TC-STATE-03 citewrite-signed-state.py.
Impact : ambiguïté d’exécution des tests et risque de valider un chemin non contractuel. -
DIV-04 : Critère de tri de
/morningétendu dans les tests.
Source A (SPEC) : CA-295-13 impose « 3 lignesscore=X.XXXX».
Source B (TESTS) : TC-NOM-10 exige en plus un « tri stable ».
Impact : risque de rejet QA sur un comportement non explicitement contracté dans la SPEC.
4. Zones d'ombre¶
- La SPEC impose
TERM=dumbpour le subprocess B2 (§5.3), mais aucun test dédié ne vérifie explicitement ce point (Tests runtime couvrent surtoutCLAUDE_DISABLE_SESSION_LOG=1). - La SPEC impose, en cas de clé indisponible, une tentative d’alerte signée avec dernière clé valide sinon
UNSIGNED_DEGRADED(INV-295-09, §5.6.9/10) ; les tests valident l’arrêt process mais ne distinguent pas explicitement ces deux branches. - INV-295-RUNTIME-04 demande que le hash du commit DPO soit référencé dans le dépôt de conformité ; TC-NOM-24 vérifie fichier + commit/tag, mais la vérification explicite de la référence de hash reste implicite.
- Le test TC-NOM-20 (hook sur 2 états) coexiste avec TC-NOM-22 (hook sur 3 états idempotent) sans positionnement explicite dans la matrice de couverture ; statut exact (complément ou reliquat) non explicité.
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 ```