Gate : CONFORMITY_CHECK | Story : PD-276 | Itération : v2
1. Documents de référence
| Document | Source | Version |
| PD-276-specification.md | ChatGPT gpt-5.3-codex | v2 (corrigée) |
| PD-276-tests.md | ChatGPT gpt-5.3-codex | v2 (corrigée) |
| PD-276-review-step3-v2.md | Claude (claude -p) | v2 |
| PD-276-confrontation-step3-v2.md | ChatGPT gpt-5.3-codex | v2 |
2. Écarts v1 résolus (7/11)
| ID v1 | Résolution |
| ECT-01 (BLOQUANT) | INV-276-08 qualifié "exigence probatoire partielle" avec modalités de preuve |
| ECT-02 | deriveKey → validateParams dans spec, tests et faits Prolog |
| ECT-03 | E-06 aligné sur HTTP 422, Q-276-03 fermé |
| ECT-06 | CA-276-12 aligné sur "probatoire" dans spec et tests |
| ECT-08 | TC-INV-04 ajouté : vérification consommation checks 10/19/22 |
| ECT-10 | Référence épique alignée sur PD-189 |
| ECT-11 | Baseline OK/KO instrumentée pour triggers |
3. Écarts résiduels
MAJEUR (3)
| ID | Type | Référence | Description | Source |
| AMB-04r | Ambiguïté | INV-276-07 vs politique LEGACY phase 1 | INV-276-07 exige vérification tag obligatoire, mais la politique phase 1 autorise lecture sans tag. Pas de distinction contractuelle "tag absent" vs "tag invalide". | Review v2 #1 |
| ECT-05r | Non testable | LEGACY→TAMPERED (TC-NOM-13) | Transition repose sur "incohérence détectée" sans observable déterministe (enveloppe LEGACY n'a pas de tag par définition). | Review v2 #2 |
| SEC-07r | Dépendance externe | Journaux d'audit | Prérequis d'observabilité présupposé (couvert par autres stories) mais existence non démontrée dans ce lot. | Review v2 #4 + ZO-2 |
MINEUR (3)
| ID | Type | Référence | Description | Source |
| AMB-09r | Imprécision | Borne < 100ms | Périmètre de mesure non normalisé (t_req vs t_decision, environnement). | Review v2 #3 + ZO-3 |
| ECT-DIV02 | Traçabilité | TC-NOM-04 vs CA-276-08 | TC-NOM-04 teste création/persistance tag mais rattaché à CA-276-08 (contrôle d'accès). | Review v2 #5 + DIV-02 |
| ECT-DIV03 | Risque | Q-276-01 vs bornes figées | Q-276-01 (bornes max Argon2) reste ouvert mais tests figent les maxima comme oracles. | Review v2 #6 + DIV-03 |
4. Convergences confirmées (v2)
- Objectif 24/24 checks Prolog sans modification des règles
- Contrat Argon2id zero-knowledge : validation seule, fait Prolog
validateParams - Configuration centralisée avec valeurs exactes du contrat
- Metadata binding : tag 32 bytes, HTTP 422 sur invalidité, borne < 100ms
- Migration 2 phases avec rollback + politique LEGACY lecture seule
- Machine à états complète (y compris LEGACY→TAMPERED via TC-NOM-13)
- Faits Prolog ciblés sur checks 10/19/22 avec vérification de consommation
- INV-276-08 qualifié probatoire (consensus spec + tests)
5. Scoring
| Critère | Score v1 | Score v2 | Delta | Justification v2 |
| completeness | 6.0 | 7.5 | +1.5 | Bloquant résolu, politique LEGACY définie mais ambiguïté INV-276-07, Q-276-01 ouvert |
| testability | 5.5 | 7.0 | +1.5 | TC-INV-04 ajouté, INV-276-08 probatoire clarifié, mais LEGACY→TAMPERED non déterministe |
| clarity | 6.5 | 8.0 | +1.5 | deriveKey→validateParams, 422 fixé, Q-276-03 fermé, épique PD-189 |
| traceability | 7.0 | 7.5 | +0.5 | PD-189 aligné, mais mapping TC-NOM-04/CA-276-08 imprécis, journaux audit externes |
Score moyen v2 : 7.50 (v1 : 6.25, delta : +1.25)
6. Verdict préliminaire
Avec un score moyen de 7.50 (>= 7) et tous les scores >= 7.0 mais testability et traceability < 8, le verdict attendu est RESERVE.
Dossier assemblé par l'orchestrateur Claude le 2026-02-28.