PD-275 — Dossier de conformité (Gate 5 — AMBIGUITY v2)¶
1. Documents de référence¶
- Spécification : PD-275-specification.md v2
- Tests : PD-275-tests.md v2
- Plan : PD-275-plan.md v2 (corrigé)
- Code contracts : PD-275-code-contracts.yaml
- Review v2 : PD-275-review-step5-v2.md (ChatGPT gpt-5.3-codex)
- Confrontation v2 : PD-275-confrontation-step5-v2.md (Claude-p)
2. Écarts v1 corrigés¶
| ID v1 | Description | Correction v2 |
|---|---|---|
| BLK-01 | FT4 séquencement batch créé avant contrôle signer | assertSignerActive() déplacé AVANT createBatch() dans FT4 |
| MAJ-01 | SignerActiveGuard contradictoire avec BullMQ worker | C8 supprimé du plan |
| MAJ-02 | Autorisation revoke seulement au controller | Double protection ajoutée (actorRoles dans service) |
| MAJ-03 | C8 absent code contracts | Résolu par suppression de C8 |
4/4 écarts v1 corrigés.
3. Écarts résiduels v2¶
Écarts MAJEURS (2 réels + 1 atténué)¶
| ID | Type | Description | Analyse |
|---|---|---|---|
| DIV-02 | Incohérence | Signature revokeSigner() dans C4 (4 params + actorRoles) vs FT3 (3 params sans actorRoles) | Écart réel — le flux FT3 doit être aligné avec la signature service. Correction mineure à appliquer. |
| DIV-05 | Design | Double fenêtre vérification signer (pré-check + re-check) vs sérialisation unique spec F4 | Atténué — le pré-check est une optimisation (évite createBatch inutile), le re-check transactionnel garantit la sérialisation INV-275-11. L'oracle TC-NOM-10 est satisfait par le re-check. |
| DIV-04 | Complétude | INV-275-09 (autorisation) absent des code contracts module signer-registry-service | Écart réel — à ajouter. Correction triviale. |
Écarts MINEURS (5)¶
| ID | Type | Description |
|---|---|---|
| DIV-03 | Anti-spoofing | Couverture body only pour injection revokedBy (query/header marginaux — DTO NestJS ne mappe que body) |
| DIV-01 | Terminologie | PENDING_FINALITY vs NON_FINALIZED |
| DIV-06 | Duplication | Tests TC-ERR-02/04/05 doublons de TC-NOM |
| DIV-07 | HTTP status | 409 trompeur pour erreur interne BullMQ |
| ZO-05 | Service account | Identité service account pour revokedBy non traitée (Q-04 reconnue) |
4. Scoring¶
Feasibility¶
- DIV-05 (double fenêtre — atténué, design valide) : -0.5
- DIV-02 (signature incohérente, correction triviale) : -0.5
- Score : 10 - 0.5 - 0.5 = 9.0
Coverage¶
- DIV-04 (INV-275-09 absent code contracts) : -0.5
- DIV-06 (duplication tests) : -0.25
- Score : 10 - 0.5 - 0.25 = 9.25
Risk Mitigation¶
- ZO-05 (service account Q-04) : -0.25
- DIV-03 (anti-spoofing body only) : -0.25
- Score : 10 - 0.25 - 0.25 = 9.5
Coherence¶
- DIV-01 (terminologie) : -0.25
- DIV-07 (HTTP status) : -0.25
- Score : 10 - 0.25 - 0.25 = 9.5
5. Résumé scoring¶
| Critère | Score v1 | Score v2 | Delta |
|---|---|---|---|
| feasibility | 7.0 | 9.0 | +2.0 |
| coverage | 8.75 | 9.25 | +0.5 |
| risk_mitigation | 8.5 | 9.5 | +1.0 |
| coherence | 9.5 | 9.5 | 0.0 |
| Moyenne | 8.438 | 9.3125 | +0.875 |
6. Écarts à reporter¶
- DIV-02 : Aligner FT3 avec la signature service (ajouter actorRoles)
- DIV-04 : Ajouter INV-275-09 aux code contracts du module signer-registry-service