Date : 2026-03-01 Gate : CONFORMITY_CHECK Iteration : v1
1. Documents de référence
- Spécification :
PD-278-specification.md (ChatGPT gpt-5.3-codex) - Tests :
PD-278-tests.md (ChatGPT gpt-5.3-codex) - Review :
PD-278-review-step3.md (Claude — agent factuel) - Confrontation :
PD-278-confrontation-step3-v1.md (ChatGPT gpt-5.3-codex)
2. Synthèse des écarts
| Source | Bloquants | Majeurs | Mineurs | Total |
| Review Claude | 3 | 8 | 6 | 17 |
| Confrontation ChatGPT | 0 (confirmations) | 0 | 0 | 3 DIV + 6 ZO |
| Consolidé | 3 | 8 | 6 | 17 |
3. Écarts bloquants
| ID | Type | Description courte | Réf |
| ECR-02 | AMB | Rôles autorisés DIP→SEALED non listés | INV-278-02 vs §5.4 |
| ECR-06 | SEC | Contournement rétention via DIP (document bloqué indéfiniment) | §5.2 + INV-278-03 |
| ECR-10 | ECT | Atomicité package — échec partiel sur gardes individuelles non spécifié | §5.1 + §5.3 |
4. Écarts majeurs
| ID | Type | Description courte | Réf |
| ECR-01 | ECT | Contradiction code HTTP 400 vs 422 pour event_type invalide | §5.1 vs §6 |
| ECR-03 | ECT | Audit sync vs async non tranché | §5.8 vs §6 |
| ECR-04 | AMB | Concurrence inter-requêtes sur transitions non spécifiée | §5.3 + §5.8 |
| ECR-05 | ECT | motif_communication non contractualisé dans flux/audit | §5.1 vs tests |
| ECR-07 | AMB | Cardinalité attestation pour package (1 par package ou 1 par doc) | INV-278-05 |
| ECR-14 | AMB | « résolution manuelle » EXPIRED non définie | INV-278-08 + §5.2 |
| ECR-15 | ECT | Pas de test négatif rôle pour DIP→SEALED | tests |
| ECR-16 | ECT | INV-278-10 non testable (observabilité non garantie) | TC-INV-10 |
5. Écarts mineurs
| ID | Type | Description courte | Réf |
| ECR-08 | AMB | package_id NULL ou généré en mono-document | §5.3 |
| ECR-09 | AMB | PENDING→EXPIRED interdit vs inchangé | §5.2 |
| ECR-11 | ECT | TC-ERR-02 teste champ interne non exposé | TC-ERR-02 |
| ECR-12 | AMB | Source horloge et ordre temporel non spécifiés | §5.1 + §5.5 |
| ECR-13 | SEC | Rate limiting transitions DIP absent | §5.3 |
| ECR-17 | AMB | SLOW_OPERATION non défini dans enum/structure | §5.5 |
6. Confrontation — Convergences confirmées
- Machine à états (4 valeurs, transitions autorisées/interdites) ✅
- Traçabilité audit (events, métadonnées) ✅
- Attestation bloquante (échec = pas de transition) ✅
- Non-régression WORM/RLS ✅
- EXPIRED terminal ✅
7. Confrontation — Divergences
| DIV | Description | Impact |
| DIV-01 | Code HTTP event_type 400 vs 422 (= ECR-01) | Oracle de test ambigu |
| DIV-02 | Epic reference manquante dans spec et tests | Traçabilité affaiblie |
| DIV-03 | INV-278-10 non testable vs constitutionnel | Couverture partielle assumée |
8. Scoring
| Critère | Score | Justification |
| completeness | 5.75 | 1 bloquant (ECR-02 rôles), 2 majeurs (ECR-05 motif, ECR-04 concurrence), 1 mineur |
| testability | 5.50 | 1 bloquant (ECR-10 atomicité), 2 majeurs (ECR-15 test rôle, ECR-16 observabilité), 2 mineurs |
| clarity | 5.50 | 4 majeurs (ECR-01 HTTP, ECR-03 audit, ECR-07 attestation, ECR-14 EXPIRED), 2 mineurs |
| traceability | 7.75 | 1 bloquant (ECR-06 rétention), 1 mineur (ECR-13 rate limit) |
Moyenne : 6.125 Verdict attendu : NON_CONFORME (moyenne < 7, scores < 6)