Aller au contenu

PD-180 — Dossier de conformité Gate 5 v1

Gate : AMBIGUITY

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

Date : 2026-03-07

Itération : v1


1. Sources

  • Review (P1 ChatGPT) : 13 écarts (4 BLOQ, 5 MAJ, 4 MIN)
  • Confrontation (P2 Claude) : 5 divergences (3 BLOQ, 2 MIN) + 7 zones d'ombre

2. Écarts consolidés (dédupliqués)

BLOQUANTS (3)

ID Type Description Source
ECT-01 Non-conformité Rate limit : le plan prévoit un rejet 429 + checkAndIncrement avant création des intentions. La spec impose mise en attente en file BullMQ sans perte (CA-13). Le check est fait 1 fois par événement, pas par intention (N webhooks abonnés = N unités). Review + Confrontation DIV-01/DIV-05
ECT-02 Non-conformité Atomicité DB+BullMQ : le plan place l'enqueue BullMQ dans la transaction logique sans démontrer que le crash pré-commit ne laisse pas d'artefact persistant dans BullMQ. INV-14 exige rollback complet. Review
ECT-03 Incohérence Replay : route /webhooks/:id/replay/:eventId scope le replay à un webhook spécifique. La spec v3 spécifie broadcast vers tous les webhooks ACTIVE abonnés au moment du replay. Review + Confrontation DIV-02

MAJEURS (4)

ID Type Description Source
ECT-04 Ambiguïté Observabilité : le plan ne documente pas les points d'observation pour vérifier payload exact signé, headers signés, preuve de relecture DB par tentative. Tests TC-NOM-05, TC-SEC-02, TC-INV-15 non validables. Review
ECT-05 Incohérence Code contracts : certains invariants (API BullMQ deprecated, Swagger, migration reversible) ne sont pas ancrés dans les invariants spec INV-XX. Review
ECT-06 Ambiguïté ESM/CJS : absence de qualification des dépendances ESM-only et du runner adapté. Review
ECT-07 Ambiguïté Transport tenantId : pas de spécification du mécanisme de propagation de orgId dans les événements EventEmitter2 entre modules. Confrontation ZO-01

MINEURS (5)

ID Type Description Source
ECT-08 Ambiguïté Limite 4096 bytes metadata absente du plan et des code contracts. Confrontation DIV-03
ECT-09 Ambiguïté Section "Contraintes techniques" absente du plan. Review
ECT-10 Ambiguïté Dépendances inter-PD sans statut DONE/TODO/STUB. Review
ECT-11 Ambiguïté Framework de test (Jest vs Vitest) non documenté. Review
ECT-12 Ambiguïté Variables CI nécessaires non listées. Review

3. Scoring par critère

Critère Écarts assignés Score
feasibility ECT-02 (BLOQ), ECT-06 (MAJ) 10 - 2 - 1 = 7.0
coverage ECT-04 (MAJ), ECT-08 (MIN), ECT-09 (MIN) 10 - 1 - 0.25 - 0.25 = 8.5
risk_mitigation ECT-01 (BLOQ), ECT-07 (MAJ), ECT-10 (MIN), ECT-11 (MIN), ECT-12 (MIN) 10 - 2 - 1 - 0.25 - 0.25 - 0.25 = 6.25
coherence ECT-03 (BLOQ), ECT-05 (MAJ) 10 - 2 - 1 = 7.0

Moyenne : (7.0 + 8.5 + 6.25 + 7.0) / 4 = 7.19

4. Verdict

  • Moyenne 7.19 >= 7 : OK
  • risk_mitigation 6.25 < 8 ET feasibility 7.0 < 8 ET coherence 7.0 < 8 → au moins un score < 8
  • Mais risk_mitigation 6.25 >= 6 : OK (pas NON_CONFORME)
  • Verdict : RESERVE