Aller au contenu

PD-180 — Dossier de conformité Gate 3 v3

Gate : CONFORMITY_CHECK

Story : PD-180 — Webhooks événements utilisateur

Date : 2026-03-07

Itération : v3 (dernière itération — plafond 3)


1. Résolution des écarts v2

ECT v2 Statut v3
ECT-16 (BLOQ) HMAC secret brut vs hash RÉSOLU — clé HMAC = SHA-256(S), obligation partenaire documentée
ECT-17 (BLOQ) Schéma payload strict RÉSOLU — 3 variantes (documentaire, device.revoked, ping)
ECT-18 (MAJ) Timeout HTTP RÉSOLU — 5 secondes contractualisé
ECT-19 (MAJ) Références ECT-XX dans tests RÉSOLU — toutes supprimées
ECT-20 (MAJ) Critères replay RÉSOLU — DELIVERED/FAILED, <30j, même org
ECT-21 (MAJ) Attributs Update RÉSOLU — target_url, event_types[], état listés
ECT-22 (MAJ) Dérivation clé signature RÉSOLU — signing_key = secret_sha256, pas de dérivation
ECT-23 (MIN) Unité rate limit RÉSOLU — intentions de livraison, N webhooks = N unités
ECT-24 (MIN) JSON.stringify fragile RÉSOLU — construction programmatique immédiate avant sérialisation
ECT-25 (MIN) Périmètre purge RÉSOLU — tentatives purgées, intentions conservées
ECT-26 (MIN) Secret irrécovrable RÉSOLU — rotation comme seul recours, by design

2. Résolution des écarts review v3 (Claude)

ID review Statut v3
E-01 (BLOQ) Secret brut vs masque dans Flux A RÉSOLU — Flux A étape 4 corrigé : retourne secret brut une seule fois, GET/LIST retournent masque
E-02 (MAJ) Unicité webhook RÉSOLU — explicité : pas de contrainte d'unicité
E-03 (MAJ) Ping/replay rate limit RÉSOLU — ping et replay soumis au rate limit CA-13
E-04 (MAJ) Cible du replay RÉSOLU — webhooks ACTIVE abonnés au moment du replay
E-05 (MAJ) ERR-12 responsabilité RÉSOLU — reformulé : données source internes, état FAILED + log
E-06 (MAJ) TOCTOU DNS RÉSOLU — IP pinning spécifié dans INV-15

3. Écarts résiduels v3

BLOQUANTS (0)

Aucun.

MAJEURS (0)

Aucun.

MINEURS (5)

ID Type Description Source
RES-01 Ambiguïté data.metadata accepte des propriétés arbitraires — aucune contrainte schématique interne. Risque théorique de fuite via metadata. Review v3 E-07
RES-02 Incohérence Spec↔Tests TC-NOM-10 ne teste pas le cas N>1 webhooks × 1 événement (multiplication des intentions). Review v3 E-09
RES-03 Hypothèse TOCTOU secret rotation : fenêtre de concurrence théorique entre lecture DB et envoi HTTP. Impact limité (retry corrige). Review v3 E-10
RES-04 Ambiguïté event_types[] vide autorisé ou non à la mise à jour — comportement non spécifié. Review v3 E-11
RES-05 Ambiguïté event_types[] à la création : minimum 1 obligatoire non spécifié explicitement. Déduction E-11

4. Scoring par critère

Critère Écarts assignés Score
completeness RES-04 (MIN), RES-05 (MIN) 10 - 0.5 = 9.5
testability RES-02 (MIN) 10 - 0.25 = 9.75
clarity RES-01 (MIN) 10 - 0.25 = 9.75
traceability RES-03 (MIN) 10 - 0.25 = 9.75

Moyenne : (9.5 + 9.75 + 9.75 + 9.75) / 4 = 9.69

5. Convergence

  • v1 mean: 6.0
  • v2 mean: 7.5
  • v3 mean: 9.69
  • Delta v2→v3: +2.19 (amélioration majeure)

6. Verdict

  • Moyenne 9.69 >= 7 : OK
  • Tous scores >= 8 : OK (9.5, 9.75, 9.75, 9.75)
  • Verdict : GO