Aller au contenu

PD-295 — Dossier de conformité (Étape 3)

Type de gate : CONFORMITY_CHECK

1. Documents de référence

  • PD-295-besoin — présent
  • PD-295-specification — présent
  • PD-295-tests — présent
  • PD-295-review-step3 (Claude, P1) — présent
  • PD-295-confrontation-step3 (Codex, P2) — présent
  • PD-295-plan — absent (normal à Gate 3)
  • PD-295-code-contracts — absent (normal à Gate 3)
  • PD-295-acceptability — absent (normal à Gate 3)
  • PD-295-rex — absent (normal à Gate 3)
  • PD-295-decomposition — absent (normal à Gate 3)

2. Rapport de confrontation

Voir : PD-295-confrontation-step3.md

3. Synthèse des écarts (Review P1 + Confrontation P2)

3.1 Écarts BLOQUANTS (3)

ID Type Description Source
G3-B1 ECT Formule reuse_score (INV-295-07) produit une somme pondérée d'entiers non bornés alors que §5.1.4 contraint le champ à 0.00..1.00. Aucune normalisation spécifiée → l'invariant est mathématiquement impossible à satisfaire. Review Claude §Bloquants #1
G3-B2 AMB Clé d'idempotence de ERR-295-10 inclut query_hash : un payload différent → hash différent → pas de rejeu détectable. Le cas "rejeu avec payload différent" est rendu inatteignable par la clé elle-même. Review Claude §Bloquants #2
G3-B3 ECT CA-295-20 renvoie à Q-295-05 (baseline CS-1 non figée) → le critère d'acceptation se déclare lui-même non testable au moment du Gate 8. Contradiction directe avec §7 (classement testable). Review Claude §Bloquants #3 + DIV-01 confrontation

3.2 Écarts MAJEURS (8)

ID Type Description
G3-M1 AMB nb_domains utilisé dans INV-295-09 (éviction) et INV-295-07 (scoring) n'est défini nulle part. Source de comptage (learnings-injections.jsonl ? tags ?) non spécifiée.
G3-M2 ECT INV-295-04 conditionne la persistance des clarifications au seul mode Ringbearer, alors qu'INV-295-05 et CA-295-04 l'exigent dans les deux modes. Contradiction périmétrique.
G3-M3 SEC Le lock B4 sur learnings.jsonl (INV-295-18) ne couvre pas les lectures concurrentes B5 pendant la migration/promotion → race silencieuse possible (injection step 0 qui lit un fichier en cours de réécriture).
G3-M4 AMB Jonction learnings.jsonl ↔ learnings-scores.jsonl non spécifiée pour le tri secondaire de search-learnings.py (§5.1.4). Clé de jointure ? Comportement si score absent ?
G3-M5 ECT Contradiction interne : §5.7 N3 étape 6 impose la publication /morning, §9 et besoin déclarent l'intégration "optionnelle". DIV-03 de la confrontation.
G3-M6 ECT INV-295-17 est déclaré "non négociable" mais sa couverture de tests est classée "Partielle" dans §2 des tests → un invariant non négociable ne peut pas être partiellement couvert. DIV-02.
G3-M7 ECT CS-2, CS-3, CS-4 ne sont pas mesurables au moment du Gate 8 (nécessitent données temporelles post-déploiement sur plusieurs semaines/mois). Gate 8 ne peut pas les vérifier.
G3-M8 SEC Les événements d'observabilité (§5.1.6 spec) ne contractualisent pas de signature / horodatage, alors que les tests §8 l'exigent. DIV-05.

3.3 Écarts MINEURS (6)

ID Type Description
G3-m1 AMB Format canonique de l'identifiant learning exploité dans result_ids[] non explicité (unicité/stabilité/version).
G3-m2 AMB Implémentation technique du lock distribué (backend, reprise après crash) non documentée.
G3-m3 AMB Comportement B5 en cas de source disponible mais count=0 non spécifié (dégradé ou normal ?).
G3-m4 AMB Gouvernance de restauration manuelle depuis scope: ARCHIVED non couverte (annoncée hors périmètre mais pas de mécanisme de référence).
G3-m5 ECT Référence épic canonique incohérente : spec "tooling (à confirmer)" vs tests "EPIC-XX (à confirmer)". DIV-04.
G3-m6 AMB Politique de rétention / anonymisation / suppression des clarifications PO non définie. Q-295-04 non tranchée.

3.4 Scoring par critère (base 10, -2 bloquant, -1 majeur, -0.25 mineur)

completeness — impacté par G3-B1, G3-B2, G3-M1, G3-M2, G3-M4 et 2 mineurs : - 10 − 2 − 2 − 1 − 1 − 1 − 2×0.25 = 3.5

testability — impacté par G3-B3, G3-M6, G3-M7 et 2 mineurs : - 10 − 2 − 1 − 1 − 2×0.25 = 5.5

clarity — impacté par G3-M5, G3-M8, G3-M2 (contradiction interne) et 1 mineur : - 10 − 1 − 1 − 1 − 0.25 = 6.75

traceability — impacté par G3-M3, G3-M4, G3-m2, G3-m5 : - 10 − 1 − 1 − 2×0.25 = 7.5

4. Verdict attendu

  • GO — conformité vérifiée
  • RESERVE — conformité partielle, conditions à satisfaire
  • NON_CONFORME — 3 écarts BLOQUANTS + 8 MAJEURS. Score moyen ~5.8 (< 7) et 2 critères < 6 (completeness 3.5, testability 5.5). Boucle de correction v2 requise.
  • ESCALADE — décision humaine requise