build · gpt-5.3-codex
PD-180 — Plan d’implémentation : Revue¶
1. Références¶
- Spécification : PD-180-specification.md
- Tests contractuels : PD-180-tests.md
- Plan d’implémentation : PD-180-plan.md
- Date de revue : 2026-03-07
- Reviewer : Auditeur technique indépendant (conformité contractuelle)
2. Constatations (écarts)¶
| Type | Référence (Spec/Test/Plan) | Description | Impact | Gravité (BLOQUANT/MAJEUR/MINEUR) |
|---|---|---|---|---|
| Non-conformité Spec | CA-13 / Spec §7, Flux D / Plan §2 (Flux D), §4 (CA-13) | Le contrôle de débit est positionné avant la création des intentions (checkAndIncrement au niveau événement), alors que le contrat impose un quota en intentions (N webhooks abonnés = N unités). | Non-respect du contrat de comptabilisation ; comportement divergent en fanout multi-webhooks. | BLOQUANT |
| Non-conformité Spec | CA-13 / Spec §7 / Plan §6 (429 Rate limit dépassé via guard) | Le plan prévoit un rejet 429 en cas de dépassement, alors que le contrat impose mise en attente en file BullMQ, sans perte. | Violation directe de l’acceptation CA-13 et incohérence interne du plan. | BLOQUANT |
| Test irréalisable | TC-NOM-10 / Tests §3 / Plan §6 | Le scénario TC-NOM-10 exige “100 passent, excédent en attente, aucune perte”. Le comportement 429 décrit en gestion d’erreurs rend ce scénario non réalisable tel que défini. | Impossibilité de valider contractuellement le rate limit attendu. | BLOQUANT |
| Non-conformité Spec | INV-14 / Spec §4, §5.6 / Plan §2 (Flux D), §3 (INV-14), Code Contract CC-180-06 | Le plan annonce une atomicité “transaction DB + enqueue BullMQ” et place l’enqueue dans la transaction logique ; cette écriture multi-systèmes n’est pas démontrée contractuellement et peut laisser des artefacts persistants pré-commit. | Risque de violation “crash pré-commit: aucun artefact persistant”. | BLOQUANT |
| Test irréalisable | TC-NOM-05, TC-SEC-02, TC-INV-15 / Tests §8 (Observabilité requise) / Plan §9.5, §7.2 | Le plan ne documente pas explicitement des points d’observabilité permettant de capturer de manière vérifiable le payload exact signé, les headers signés et la preuve de relecture DB par tentative. | Validation incomplète des tests de signature, sécurité secret et SSRF. | MAJEUR |
| Hypothèse implicite | Spec Flux F / Plan §1 (C9 route replay), §2 (Flux F) | Le replay est routé via /webhooks/:id/replay/:eventId alors que le contrat décrit un replay piloté par événement historique avec diffusion à tous les webhooks actifs abonnés au moment du replay ; l’usage contractuel de :id n’est pas explicité. | Ambiguïté contractuelle sur le périmètre du replay ; risque d’interprétation non conforme. | MAJEUR |
| Code Contract — Invariant | Vérif code-contracts / CC-180-08, CC-180-09, CC-180-01 | Des “invariants” de code contracts ne sont pas un sous-ensemble des invariants de la spec (ex. contraintes API BullMQ dépréciée, exigences Swagger, migration reversible). | Écart de gouvernance contractuelle entre référentiel spec et référentiel code-contracts. | MAJEUR |
| Code Contract — Forbidden | Vérif code-contracts / CC-180-08 | Certains patterns interdits ne sont pas justifiés par la spec ni explicitement par une exigence sécurité/réglementaire (ex. interdiction d’API BullMQ deprecated). | Règles contractuelles annexes non ancrées dans la base normative. | MINEUR |
| Contrainte technique non documentée | Exigence axe 7 / Plan (absence de section “Contraintes techniques”) | Le plan ne contient pas la section dédiée “Contraintes techniques” demandée. | Traçabilité documentaire incomplète vis-à-vis du cadre de revue. | MINEUR |
| Contrainte technique non documentée | Exigence axe 7 (Dépendances inter-PD) / Plan §8, §10 | Les dépendances inter-PD ne sont pas listées avec statut explicite DONE/TODO/STUB acceptable. | Incertitude d’ordonnancement et de blocage inter-stories. | MINEUR |
| Contrainte technique non documentée | Exigence axe 7 (Framework de test) / Plan §11 | Aucun choix explicite Jest ou Vitest n’est documenté. | Ambiguïté d’exécution des tests contractuels. | MINEUR |
| Contrainte technique non documentée | Exigence axe 7 (Compatibilité ESM/CJS) / Plan §7.3, §8 | Absence de qualification explicite des dépendances ESM-only et du runner adapté. | Risque d’échec d’exécution en CI/local selon runtime/module system. | MAJEUR |
| Contrainte technique non documentée | Exigence axe 7 (Variables CI) / Plan global | Variables CI nécessaires (ex. CI=true, DATABASE_URL, Redis/BullMQ) non documentées formellement. | Fragilité de reproductibilité des tests d’intégration. | MINEUR |
3. Synthèse¶
- Nombre d’écarts par gravité : BLOQUANT = 4, MAJEUR = 5, MINEUR = 4
- Points critiques :
- Non-conformité contractuelle CA-13 (unité de quota + gestion dépassement).
- Atomicité DB/asynchrone non démontrée au niveau exigé par INV-14.
- Réalisabilité des tests contractuels dégradée (TC-NOM-10, observabilité sécurité/signature).
4. Verdict de la revue¶
- Statut : ⛔ Rejeté
- Motif synthétique : Le plan présente des écarts bloquants sur des exigences contractuelles non négociables (CA-13, INV-14) et ne garantit pas la testabilité complète exigée par les scénarios contractuels.