PD-80 — Dossier de conformité Gate 3 (v3)¶
1. Contexte¶
- Story : PD-80 — Implémenter scellement instantané < 1h
- Gate : 3 — CONFORMITY_CHECK
- Itération : v3 (dernière avant ESCALADE si NON_CONFORME)
- Date : 2026-03-12
- P1 (review) : Claude (claude -p)
- P2 (confrontation) : Claude (fallback — prompt >30 KB)
- Dérogation Art. II : Maintenue (même raison que v1/v2)
- Score v2 : 7.875/10 (NON_CONFORME — completeness 5.75 < 6)
2. Corrections appliquées (v2 → v3)¶
| ECT v2 | Statut v3 | Détail |
|---|---|---|
| ECT-v2-01 (BLOQ) worker réconciliation double exécution | Corrigé | Lock distribué Redis ajouté dans §5.10 + TC-NOM-18 |
| ECT-v2-02 (MAJ) DEK lifecycle | Corrigé | §5.14 complet : génération, wrapping, usage, destruction, rotation KEK |
| ECT-v2-03 (MAJ) rate-limit mineur | Corrigé | rate_limit_minor_hour=2 + alerte sécurité + TC-NEG-12 |
| ECT-v2-04 (MAJ) comportement 5e retry | Corrigé | §5.4 point 3 : événement retries_exhausted, attente passive, comportement explicite |
| ECT-v2-05 (MAJ) tests transition retour | Corrigé | TC-NOM-16 (TSA_PENDING→QUEUED_PRIORITY) + TC-NOM-17 (TSA_SEALED→TSA_PENDING) |
| ECT-v2-06 (MAJ) P95 N minimum | Corrigé | TC-NOM-03 : ref p95_min_samples, N exposé en métrique |
| ECT-v2-07 (MIN) clamp vs rejet | Résolu v2 | §5.2 comportement clamp défini |
| ECT-v2-08 (MIN) SLA par étape non testés | Accepté | Couvert indirectement par SLA global (CA-03) |
| ECT-v2-09 (MIN) NTP au démarrage non testé | Accepté | Observabilité documentée §5.13, pas de TC dédié |
| ECT-v2-10 (MIN) DEK cycle vecteur | Corrigé | §5.14 couvre le cycle complet |
| ECT-v2-11 (MIN) référence epic placeholder | Accepté | Donnée PO manquante, non bloquante |
3. Écarts restants v3¶
3.1 BLOQUANTS (0)¶
Aucun écart bloquant.
3.2 MAJEURS (3)¶
| ID | Type | Source | Description |
|---|---|---|---|
| ECT-v3-01 | AMB | Review C-01 | Relation entre rate_limit_urgent (1/h global), rate_limit_minor_hour (2/h), rate_limit_enterprise_hour (10/h) : priorité non spécifiée si un compte est à la fois mineur ET enterprise |
| ECT-v3-02 | AMB | Review C-03 | Définition de "job BullMQ actif" pour le critère de détection d'orphelin : BullMQ states (active, waiting, delayed) à considérer non listés |
| ECT-v3-03 | AMB | Review C-04 | Conditions exhaustives de déclenchement des transitions retour (TSA_PENDING→QUEUED_PRIORITY, TSA_SEALED→TSA_PENDING) : seuls des exemples sont donnés ("ex :"), pas une liste fermée |
3.3 MINEURS (5)¶
| ID | Type | Source | Description |
|---|---|---|---|
| ECT-v3-04 | DIV | Review C-05 | Cycle oscillant TSA_PENDING↔QUEUED_PRIORITY non borné (pas de max transitions retour) |
| ECT-v3-05 | DIV | Confront DIV-01 | DEK destruction testée indirectement (absence en clair) mais pas de TC vérifiant suppression wrappée à la transition |
| ECT-v3-06 | DIV | Confront DIV-02 | Vérification NTP au démarrage spécifiée (§5.13) mais pas de TC dédié |
| ECT-v3-07 | AMB | Confront DIV-03 | TC-ERR-04 : formulation "rejeté" vs spec "pas un rejet API, retry interne" |
| ECT-v3-08 | DIV | Confront DIV-04 | Contenu événement retries_exhausted vérifié dans spec §5.4 mais TC-ERR-11 ne vérifie pas seal_id/état/nb tentatives |
4. Scoring v3¶
Base 10, déductions :
| Critère | Déductions | Score |
|---|---|---|
| completeness | -1 (ECT-v3-01) -1 (ECT-v3-02) -1 (ECT-v3-03) -0.25 (ECT-v3-04) = -3.25 | 6.75 |
| testability | -0.25 (ECT-v3-05) -0.25 (ECT-v3-06) -0.25 (ECT-v3-08) = -0.75 | 9.25 |
| clarity | -0.25 (ECT-v3-07) -0.25 (ECT-v3-04) = -0.5 | 9.5 |
| traceability | 0 = 0 | 10 |
Moyenne v3 : (6.75 + 9.25 + 9.5 + 10) / 4 = 8.875 Delta v3-v2 : 8.875 - 7.875 = +1.0 (amélioration significative)
5. Verdict¶
- Moyenne 8.875 >= 7 ✅
- Score minimum : completeness 6.75 >= 6 ✅
- Tous les scores >= 8 → condition pour GO
- Completeness 6.75 < 8 → au moins un score < 8
Verdict : RESERVE (moyenne >= 7, tous >= 6, mais completeness 6.75 < 8)
Les 3 MAJEURs restants sont des ambiguïtés de spécification portant sur des cas limites (interaction rate-limits, définition BullMQ "actif", conditions transitions retour). Ils ne bloquent pas l'implémentation et seront clarifiés à l'étape 4 (plan).