Story : PD-293 — One Ring : orchestration multi-stories via claude-peers + contrôle iPhone Gate : 3 — CONFORMITY_CHECK Itération : v1 Date : 2026-03-30 P1 (Review) : Claude -p P2 (Confrontation) : ChatGPT (gpt-5.3-codex)
1. Documents audités
| Document | Auteur | Taille |
| PD-293-specification.md | ChatGPT | 15KB |
| PD-293-tests.md | ChatGPT | 15KB |
2. Synthèse des écarts
Écarts de la Review (Phase 1 — Claude)
| ID | Type | Gravité | Description |
| ÉCART-01 | AMB | MAJEUR | Regex story_id ^PD-[0-9]{1,4}$ incohérente avec contrainte "5-9 chars" |
| ÉCART-02 | AMB | MINEUR | Sémantique start avec même story_id mais idempotency_key différente non contractualisée |
| ÉCART-03 | AMB | MINEUR | peer_id "printable UTF-8" non défini formellement |
| ÉCART-04 | AMB | MINEUR | Double source de vérité case-sensitivity (textuel vs regex) |
| ÉCART-05 | AMB | MAJEUR | Seuil 30s crash vs fréquence polling 10s — détection réelle 10-20s non contractualisée |
| ÉCART-06 | AMB | BLOQUANT | État ESCALADE_PENDING dans spec textuelle absent du diagramme Mermaid |
| ÉCART-07 | AMB | MAJEUR | Commande PAUSE/RESUME sans skill /gov-lord correspondant |
| ÉCART-08 | AMB | MAJEUR | Timeout création Ringbearer 30s vs découverte post-start non contractualisée |
| ÉCART-09 | AMB | MAJEUR | Persistance .gov-lord-state.json format exact non spécifié |
| ÉCART-10 | AMB | MINEUR | Comportement reconnexion broker après crash non spécifié |
| ÉCART-11 | AMB | MAJEUR | Validation format message — critère "rejet avec log" sans format de log |
| ÉCART-12 | AMB | MINEUR | CA-06 (/remote-control iPhone) non testable unitairement |
| ÉCART-13 | AMB | MAJEUR | Ordre de vérification des gardes (quota vs doublon vs format) non spécifié |
| ÉCART-14 | AMB | BLOQUANT | État ESCALADE_EXPIRED mentionné §5.1 sans intégration dans la machine d'états |
| ÉCART-15 | AMB | MINEUR | project_code enum ne contient pas "ia-governance" (projet de la story) |
| ÉCART-16 | AMB | MAJEUR | Comportement multi-escalade simultanée (file vs remplacement) non spécifié |
| ÉCART-17 | AMB | MINEUR | Version claude-peers-mcp non verrouillée |
Écarts de la Confrontation (Phase 2 — ChatGPT)
| ID | Type | Gravité | Description |
| DIV-01 | DIV | MAJEUR | Référence epic incohérente entre spec ("non fournie") et tests ("EPIC-XX") |
| DIV-02 | DIV | MAJEUR | Exemple ia-gov invalide selon enum project_code |
| DIV-03 | DIV | MAJEUR | État ESCALADE_EXPIRED introduit sans intégration machine d'états (confirme ÉCART-14) |
Zones d'ombre
- ZO-01 : Contrat mobile iPhone non borné (matrice iOS/Safari non définie)
- ZO-02 : Format peer_id volontairement opaque — pas de critère d'interopérabilité
- ZO-03 : Politique reprise One Ring après crash = question ouverte (Q-293-04)
- ZO-04 : Sémantique PAUSE/RESUME sans commande /gov-lord explicite
3. Scoring
Critères CONFORMITY_CHECK (Gate 3) :
| Critère | Score | Justification |
| completeness | 6.5 | 2 BLOQUANTS (ÉCART-06, ÉCART-14 : états machine non intégrés), 2 MAJEURS supplémentaires sur complétude (ÉCART-07, ÉCART-09) |
| testability | 7.0 | Tests couvrent bien les invariants mais CA-06 non testable, 1 MINEUR (ÉCART-12) |
| clarity | 6.0 | 8 MAJEURS d'ambiguïté au total, regex incohérente (ÉCART-01), double source vérité |
| traceability | 7.5 | DIV-01 (epic ref manquante), DIV-02 (exemple invalide), le reste bien tracé |
Décompte : 2 BLOQUANTS × (-2) = -4, 11 MAJEURS × (-1) = -11, 7 MINEURS × (-0.25) = -1.75 Score brut moyen : (6.5 + 7.0 + 6.0 + 7.5) / 4 = 6.75
4. Verdict attendu
- Moyenne 6.75 < 7 → NON_CONFORME
- completeness 6.5 et clarity 6.0 < 8 → confirme NON_CONFORME