Aller au contenu

PD-180 — Rapport de confrontation (Étape 3)

Ce rapport est produit par l'orchestrateur Claude avant chaque gate PMO.
Il confronte les documents produits pour identifier convergences, divergences et zones d'ombre.

1. Sources confrontées

  • Spécification (Étape 1) : PD-180 — Spécification canonique des webhooks sortants d’événements utilisateur (corrigée v2)
  • Tests (Étape 2) : PD-180 — Scénarios de tests contractuels (corrigés v2)

2. Convergences

  • Périmètre fonctionnel aligné : webhook sortant org-level, CRUD, ping, replay, rotation secret, journalisation append-only, isolation multi-tenant (Spec §2, §5 ; Tests TC-NOM-01..14, matrice de couverture).
  • Sécurité de transport et SSRF alignées : https obligatoire, schémas interdits rejetés, blocage IP privées/loopback/link-local/metadata, DNS rebinding bloqué à la création et à l’envoi (Spec INV-04, INV-15, ERR-01, ERR-13 ; Tests TC-ERR-01, TC-INV-15, TC-NR-08).
  • Signature et anti-rejeu alignés : header X-ProbatioVault-Signature, HMAC-SHA256, format t=<unix>,v1=<hex64>, fenêtre anti-rejeu ±5 min (Spec INV-02, INV-03, §5.1, §5.2 ; Tests TC-NOM-05, TC-ERR-06, TC-SEC-03).
  • Politique de livraison/retry alignée : succès uniquement 2xx, 3xx/4xx/5xx échec, 401 retriable, séquence exacte 10 tentatives puis FAILED (Spec §5.4, ERR-05..09, CA-07 ; Tests TC-NOM-09, TC-ERR-05..09, TC-NR-03, TC-NR-09).
  • Machine à états alignée : terminalité DELETED, DELIVERED, FAILED et refus des transitions non listées (Spec INV-13, §5.7 ; Tests TC-NOM-04, TC-INV-13).
  • Contraintes multi-tenant / RLS alignées : dérivation orgId depuis JWT, refus cross-tenant (Spec INV-08, INV-10, ERR-04, CA-11 ; Tests TC-NOM-02, TC-ERR-04, TC-INV-10, TC-NR-04).
  • Non-régression probatoire alignée : aucun impact sur états probatoires (Spec INV-11, CA-12 ; Tests TC-NOM-13, TC-NR-07).
  • Rate limiting aligné : 100 événements/min/org en sliding window 60s, surplus mis en attente sans perte (Spec CA-13 ; Tests TC-NOM-10).

3. Divergences

⚠️ Les conflits ne doivent JAMAIS être lissés. Chaque divergence est rendue visible.

  • DIV-01 : Contradiction sur la restitution du secret à la création/rotation.
  • Source A (Spécification §5.3) : « Secret brut affiché une seule fois à la création/rotation ».
  • Source B (Spécification §5.5 Flux A.4) : « retourne uniquement masque secret ».
  • Source C (Tests TC-NOM-01, TC-NOM-08) : secret visible une fois puis masqué ensuite.
  • Impact : ambiguïté contractuelle sur la réponse API create/rotate (comportement produit non déterministe, risque de verdict gate non convergent).

4. Zones d'ombre

  • Les références ECT-01/04/05/07/08/09/11 sont utilisées côté tests (ex. TC-NOM-09, TC-SEC-01..03, TC-ERR-05/12) mais le document ECT n’est pas fourni dans les sources confrontées ; traçabilité de certaines exigences incomplète.
  • Les contrats API détaillés (routes exactes, payloads requête/réponse, codes de succès par endpoint CRUD/ping/replay/rotate) ne sont pas explicités de façon exhaustive dans les deux documents ; couverture test reste comportementale.
  • La mention « retry si pertinent » pour ERR-13 (SSRF) n’explicite pas les critères de “pertinence” (cas à replanifier vs abandon immédiat), et les tests ne formalisent pas ce critère décisionnel.

5. Recommandation

  • Procéder — convergence confirmée, aucun conflit bloquant
  • Rework nécessaire — divergences à résoudre avant de continuer
  • Escalade — décision humaine requise sur un point structurant