1. Sources
- Review P1 (Claude) :
PD-287-review-step3.md — 7 bloquants, 12 majeurs, 9 mineurs - Confrontation P2 (ChatGPT) :
PD-287-confrontation-step3.md — convergences confirmées, escalade recommandée sur INV-287-25 testabilité
2. Déviations identifiées
BLOQUANT (7)
| ID | Type | Description |
| B-01 | ECT | Export ZIP simultanément invariant (INV-287-14) et nice-to-have (Q-287-06) |
| B-02 | ECT | SLA révocation : CA-287-08 (5s) vs SLO défaut (2s) — borne ambiguë |
| B-03 | ECT | Journal async post-commit incompatible avec 503 fail-closed (ERR-287-14) |
| B-04 | SEC | Anti-enumeration : codes HTTP 401/403/404/429 différenciants vs INV-287-12 |
| B-05 | DIV | Politique de rétention absente (INV-287-15 non testable) |
| B-06 | AMB | INV-287-01 quantification universelle auto-contredit INV-287-25 |
| B-07 | ECT | Ancrage audit max divergent (§5.3=900s vs H-287-06=300s) |
MAJEUR (12)
| ID | Type | Description |
| M-01 | SEC | OTP : cycle OTP_BLOCKED→ACTIVE réarmable indéfiniment, pas de plafond cumulé |
| M-02 | DIV | INV-287-17 trust-store sans critère d'acceptation |
| M-03 | AMB | CA-287-08 P95 : "charge nominale" non spécifiée |
| M-04 | SEC | Manifeste export sans mécanisme d'authenticité (signature/ancrage) |
| M-05 | SEC | Journal append-only sans structure de chaînage/preuve d'intégrité |
| M-06 | AMB | INV-287-20 conditionnel vs §5.6 obligatoire |
| M-07 | SEC | Session inactivity max 12h disproportionnée |
| M-08 | DIV | recipient_capsule_encrypted_b64 dans diagramme sans D-287-* |
| M-09 | DIV | Flux révocation/réauth absents du diagramme de séquence |
| M-10 | AMB | Diagramme d'état : transitions INTERDITE en self-loop |
| M-11 | SEC | Regex email D-287-03 : accepte 319 chars vs contrainte 254 |
| M-12 | ECT | ERR-287-16 en 500 vs ERR-287-14/15 en 503 — incohérence fail-closed |
MINEUR (9)
| ID | Type | Description |
| m-01 | AMB | INV-287-16-envelope-encryption : identifiant non normalisé |
| m-02 | AMB | H-287-07 : hypothèse processus vs produit |
| m-03 | AMB | CA-287-29 : contrainte stack pas un CA fonctionnel |
| m-04 | AMB | Warning DRM : moment d'affichage non spécifié |
| m-05 | AMB | Q-287-04 doublon avec B-05 |
| m-06 | AMB | otp_max_attempts min=max=5 figé sans justification |
| m-07 | AMB | open_requests_per_ip : "open request" non défini |
| m-08 | AMB | idempotency_window min 1h — garde-fou désérialisation absent |
| m-09 | AMB | ST-287-13 "compromission" non observable |
3. Scoring
| Critère | Score | Justification |
| completeness | 5.5 | B-01/B-05 (invariants contradictoires/absents), M-02/M-04/M-05/M-08/M-09 (5 lacunes structurelles) |
| testability | 5.0 | B-03/B-06 (2 invariants non testables), M-03 (P95 non reproductible), m-09 (compromission non observable) |
| clarity | 6.5 | B-02/B-07 (2 contradictions SLA), M-06/M-10/M-11 (3 ambiguïtés), 6 mineurs AMB |
| traceability | 7.0 | M-02 (INV sans CA), M-08 (champ non référencé), m-01 (ID non normalisé) |
Moyenne : 6.0
4. Verdict
Moyenne < 7 → NON_CONFORME Scores < 6 sur completeness et testability → NON_CONFORME confirmé
Les 7 bloquants doivent être corrigés avant re-gate v2.