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