1. Documents de référence
- Spécification : PD-275-specification.md (ChatGPT gpt-5.3-codex)
- Tests : PD-275-tests.md (ChatGPT gpt-5.3-codex)
- Review : PD-275-specification-review.md (Claude-p)
- Confrontation : PD-275-confrontation-step3.md (ChatGPT gpt-5.3-codex)
2. Synthèse des écarts
Écarts BLOQUANTS (1)
| ID | Type | Description | Contexte |
| NT-02 | Non testable | INV-275-07 non vérifiable pour batch — Q-02 non résolu | Question ouverte reconnue par la spec (§10.7) et les tests (§9). Déclassé en MAJEUR car la spec reconnaît explicitement l'incomplétude et propose la levée via Q-02. |
Écarts MAJEURS (4 réels)
| ID | Type | Description | Faux positif ? |
| HD-02 | Hypothèse | Race condition revokeSigner/submitBatch concurrents non contractualisée | Non — écart réel, concurrence non traitée |
| RS-01 | Sécu | Pas d'autorisation sur revokeSigner() — vecteur de DoS | Non — écart réel, autorisation absente |
| RS-02 | Sécu | revokedBy usurpable si paramètre appelant (Q-04 lié) | Partiellement — lié à Q-04 mais risque de sécurité réel |
| C-01 | Contradiction | CA-02 ne couvre pas le chemin d'acceptation de finalisation | Non — écart réel de contractualisation |
Écarts MAJEURS atténués (liés aux questions ouvertes reconnues)
| ID | Type | Description | Question liée |
| A-01 | Ambiguïté | NON_FINALIZED non défini | Q-02 |
| A-04 | Ambiguïté | Interface signer→batch non contractualisée | H-01 (PD-177) |
| HD-03 | Hypothèse | Seed initial fail-closed = indisponibilité | H-04 |
| DIV-01 | Divergence | Complétude machine à états non vérifiable | Q-02 |
Écarts MINEURS (13)
A-02, A-03, C-02, C-03, C-04, NT-01, HD-01, IST-01, IST-02, IST-03, DIV-02, DIV-03, DIV-04
3. Scoring
Méthode : Base 10, -2 par BLOQUANT, -1 par MAJEUR, -0.25 par MINEUR. Note domaine crypto-proof : Conformément au learning PD-274, les écarts liés aux questions ouvertes déjà reconnues par la spec sont atténués (-0.5 au lieu de -1).
Completeness (exhaustivité spec)
- NT-02 déclassé en MAJEUR car Q-02 reconnue : -0.5
- A-01 (Q-02 reconnue) : -0.5
- A-04 (H-01 reconnue) : -0.5
- HD-03 (H-04 reconnue) : -0.5
- 3 mineurs (A-02, A-03, HD-01) : -0.75
- Score : 10 - 0.5 - 0.5 - 0.5 - 0.5 - 0.75 = 7.25 → 7.25
Testability (testabilité des critères)
- C-01 (CA manquant) : -1
- C-02, C-03, C-04 (duplications) : -0.75
- NT-01 (invariant vacuement vrai) : -0.25
- Score : 10 - 1 - 0.75 - 0.25 = 8.0
Clarity (clarté et non-ambiguïté)
- RS-01 (autorisation absente, écart réel) : -1
- RS-02 (revokedBy usurpable) : -0.5
- DIV-02, DIV-03, DIV-04 : -0.75
- IST-01, IST-02, IST-03 : -0.75
- Score : 10 - 1 - 0.5 - 0.75 - 0.75 = 7.0
Traceability (traçabilité invariants ↔ tests)
- IST-01 (méta-test vs test comportemental) : -0.25
- IST-03 (matrice imprécise) : -0.25
- DIV-04 (rattachement incohérent) : -0.25
- Score : 10 - 0.25 - 0.25 - 0.25 = 9.25
4. Résumé scoring
| Critère | Score |
| completeness | 7.25 |
| testability | 8.0 |
| clarity | 7.0 |
| traceability | 9.25 |
| Moyenne | 7.875 |
5. Écarts à corriger prioritairement
- HD-02 : Contractualiser la stratégie de concurrence (SELECT FOR UPDATE ou version optimiste)
- RS-01 : Définir le modèle d'autorisation pour revokeSigner()
- C-01 : Ajouter un CA explicite pour le chemin d'acceptation de finalisation
- RS-02 : Contractualiser que revokedBy est dérivé du contexte d'authentification (pas fourni par l'appelant)