Gate : CONFORMITY_CHECK | Story : PD-276 | Itération : v1
1. Documents de référence
| Document | Source | Étape |
| PD-276-specification.md | ChatGPT gpt-5.3-codex | 1 |
| PD-276-tests.md | ChatGPT gpt-5.3-codex | 2 |
| PD-276-review-step3.md | Claude (claude -p) | 3.1 |
| PD-276-confrontation-step3.md | ChatGPT gpt-5.3-codex | 3.2 |
2. Synthèse des écarts
BLOQUANT (1)
| ID | Type | Référence | Description | Source |
| ECT-01 | Contradiction | INV-276-08 vs §2 "hors périmètre" vs §9 | INV-276-08 (secrets en clair) maintenu comme exigence obligatoire alors que les règles non testables sont déclarées hors périmètre ; tests reconnaissent l'impossibilité de preuve exhaustive. Contradiction sur le statut même de cet invariant. | Review #1 + DIV-01 + ZO-3 |
MAJEUR (7)
| ID | Type | Référence | Description | Source |
| ECT-02 | Contradiction | INV-276-01 vs INV-276-09 (deriveKey) | Le fait Prolog service_method(argon2, deriveKey) contredit le principe "validation seule" (zero-knowledge). Frontière "nom formel" vs "comportement interdit" non explicitée. | Review #2 + ZO-2 |
| ECT-03 | Contradiction | E-06 (403) vs H-276-05 / Q-276-03 | Code HTTP 403 fixé dans E-06 mais déclaré "à clarifier" dans les hypothèses. Risque de faux négatifs QA si l'assertion HTTP est figée différemment. | Review #3 + DIV-02 |
| AMB-04 | Ambiguïté | Q-276-02 (LEGACY phase 1) | Politique d'accès aux enveloppes LEGACY (autoriser, forcer rotation, bloquer) non définie. Pas d'oracle unique pour les tests de compatibilité transitoire. | Review #4 + DIV-03 |
| ECT-05 | Incohérence Spec↔Tests | INV-276-11 (LEGACY→TAMPERED) | Transition autorisée dans la spec mais aucun test ne la couvre. | Review #5 |
| ECT-06 | Incohérence Spec↔Tests | CA-276-12 vs §9 tests | CA présenté comme testable mais tests le classent "partiel/probatoire". | Review #6 |
| SEC-07 | Risque sécu/conformité | Journaux d'audit signés | Requis dans les tests comme prérequis d'observabilité mais non contractualisé dans les invariants spec. | Review #9 |
| ECT-08 | Hypothèse dangereuse | H-276-02 (atomicité Prolog) | Le 24/24 dépend entièrement de l'hypothèse que les checks ne consomment que des faits générés. Contrôle d'intégrité des règles Prolog sans protocole opérationnel. | Review #8 + ZO-4 |
MINEUR (3)
| ID | Type | Référence | Description | Source |
| AMB-09 | Non testable | "Rejet immédiat" (F4, E-06) | Pas de borne temporelle définie pour "immédiat". | Review #10 |
| ECT-10 | Traçabilité | Epic "non fournie" vs "EPIC-XX" | Référence épique incohérente entre spec et tests. | Review #11 + ZO-1 |
| ECT-11 | Non testable | Triggers existants | Pas de baseline comportementale ni d'oracle pour "aucun changement de comportement". | Review #7 |
3. Convergences confirmées (Phase 2)
- Objectif 24/24 checks Prolog sans modification des règles
- Contrat Argon2id serveur : validation uniquement, bornes OWASP
- Configuration centralisée exposée par endpoint
- Metadata binding :
metadata_tag 32 bytes, vérification avant accès - Migration 2 phases (NULL → NOT NULL) avec rollback
- Machine à états : interdiction downgrade BOUND→LEGACY, terminalité TAMPERED
4. Scoring
| Critère | Score | Justification |
| completeness | 6.0 | 1 BLOQUANT (INV-276-08 contradictoire), politique LEGACY non définie, journaux d'audit non contractualisés |
| testability | 5.5 | 1 BLOQUANT testabilité (INV-276-08), transition LEGACY→TAMPERED non testée, CA-276-12 partiel, "immédiat" sans borne |
| clarity | 6.5 | Sémantique deriveKey ambiguë, code 403 contradictoire, LEGACY indéterminé |
| traceability | 7.0 | Référence épique incohérente, journaux d'audit non tracés comme invariant |
Score moyen : 6.25
5. Verdict préliminaire
Avec un score moyen de 6.25 (< 7) et deux scores < 6 (testability = 5.5), le verdict attendu est NON_CONFORME.
Dossier assemblé par l'orchestrateur Claude le 2026-02-28.