Retrospective — PD-81¶
Resume story¶
- Story : PD-81 — Creer module Legal PRE pour acces judiciaire
- Domaine : crypto-proof
- Date : 2026-02-23
- Gates : G3 GO (v3, 9.25) | G5 GO (v2, 8.50) | G8 GO (v4, 8.15)
- Complexite : complex (19 taches, 55 fichiers, 6203 lignes, 79 tests)
- Iterations totales : 9 (3+2+4)
- Ecarts totaux : 20 (ECT=7, DIV=7, SEC=6)
Learnings de cette story¶
Depuis les gates¶
| Gate | Verdict | Score | Tags | Note |
|---|---|---|---|---|
| G3 v1 | NON_CONFORME | 4.25 | #legal-pre, #eidas, #sla-temporal | Spec v1 sans SLA temporels, bornes, definitions |
| G3 v2 | RESERVE | 8.00 | #spec-completeness | Ajout 7 definitions, 5 corrections INV |
| G3 v3 | GO | 9.25 | #legal-pre, #proxy-re-encryption | Convergence totale spec |
| G5 v1 | RESERVE | 7.75 | #storageDomain, #ancrage-blockchain | risk_mitigation = 6/10 |
| G5 v2 | GO | 8.50 | #plan, #coverage | Plan complet post-corrections |
| G8 v1 | NON_CONFORME | 6.13 | #test-coverage, #security | 52 tests, 11/18 erreurs couvertes |
| G8 v2 | RESERVE | 7.50 | #corrections | +15 tests, R-02/R-03/R-07 corriges |
| G8 v3 | RESERVE | 7.80 | #security, #jwt-binding | S-01 a S-04, T-01/T-03/T-04/T-06 corriges |
| G8 v4 | GO | 8.15 | #closure | 79 tests, 18/18 erreurs, 12 INV |
Depuis le REX¶
- SLA temporels obligatoires : Chaque transition d'etat avec dimension temporelle DOIT avoir SLA min/max/default. Pattern recurrent (PD-81, PD-55, PD-39).
- Envelope encryption non implicite : Artefacts crypto temporaires (kfrags, DEK, ReKey) doivent etre chiffres at-rest. S-04 CRITIQUE.
- JWT binding systematique :
actorIdentity = req.user.sub, jamais le body. Regle code-contracts. - Faux positifs LLM massifs : 5 findings sur code deja corrige (30-40% taux FP). Injecter corrections dans prompts review.
- Convergence lente Gate 8 : Delta < 0.50 entre iterations = corrections trop incrementales. Regrouper par theme.
Patterns recurrents (domaine crypto-proof)¶
Pattern 1 — Specs crypto v1 systematiquement insuffisantes¶
- Stories : PD-81 (4.25), PD-55 (6.25), PD-52 (7.5)
- Frequence : 3/12 stories crypto avec Gate 3 v1 NON_CONFORME
- Cause : Les modules crypto/blockchain exigent un formalisme (RFC, canonicalisation, SLA) absent des specs v1.
- Impact : +2 iterations de Gate 3 en moyenne
Pattern 2 — Fail-closed non implicite dans le domaine crypto¶
- Stories : PD-81 (kfrags non chiffres), PD-39 (NTS permissif), PD-25 (Redis fail-open), PD-35 (DEV-ONLY guards)
- Frequence : 4/12 stories crypto-proof
- Cause : Les developpeurs ne presument pas fail-closed par defaut. L'absence de chiffrement at-rest n'est pas detectee en review code.
- Impact : Ecarts SEC critiques detectes tardivement (step 7)
Pattern 3 — Faux positifs LLM en reviews (cross-domaine)¶
- Stories : PD-81 (5 FP), PD-55 (3 FP), PD-63 (2 FP), PD-31 (⅚ ecarts annules), PD-79 (2 FP), PD-53 (2 FP)
- Frequence : 6+ stories, taux moyen 30-40%
- Cause : Contexte partiel envoye au reviewer LLM (code modifie non inclus, corrections precedentes non signalees)
- Impact : Bruit dans les dossiers de conformite, temps de triage
Pattern 4 — Tests insuffisants post-step 6¶
- Stories : PD-81 (+52%), PD-55, PD-63, PD-44
- Frequence : 4+ stories avec augmentation significative de tests en step 7
- Cause : Step 6 (implementation) produit le code minimum, step 7 (acceptabilite) revele les lacunes
- Impact : 34% des tests PD-81 ajoutes en acceptabilite, rallonge phase 7-8
Pattern 5 — SERIALIZABLE oublie sur mutations d'etat¶
- Stories : PD-81, PD-55
- Frequence : 2 stories recentes (blockchain + crypto-proof)
- Cause : Les transactions de mutation (revoke, finalize, close) ne sont pas systematiquement en SERIALIZABLE
- Impact : Ecart DIV detecte en review code, correction simple mais tardive
Analyse tags haute frequence (>= 5 stories distinctes)¶
| Tag | Stories distinctes | Alerte |
|---|---|---|
| #backend | 26 | Infrastructure — pas d'action |
| #crypto | 20 | Invariants crypto a renforcer |
| #testing | 12 | Patterns de test a capitaliser |
| #security | 12 | Invariants securite a renforcer |
| #auth | 11 | Checklist auth a creer |
| #spec-incomplete / #spec-completeness | 8 | Gate 3 v1 NON_CONFORME recurrent |
| #code-contracts | 7 | Regle JWT binding a ajouter |
| #faux-positifs / #false-positives | 6 | Section corrections dans reviews |
| #rate-limiting | 5 | Contractualiser des la spec |
Recommandations¶
Priorite haute (>= 5 stories ou NON_CONFORME recurrent)¶
- Checklist SLA temporels dans template spec — Appliquee (REX PD-81 §10.1, template
1 Specification.mdv1.1.0) - Section corrections dans prompts review 7a/7b/7c — Appliquee (REX PD-81 §10.2, templates v1.2.0/v1.4.0)
- Invariant envelope encryption par defaut — Appliquee (REX PD-81 §10.3, template
1 Specification.mdv1.1.0) - Checklist auth dans template spec — A creer pour domaine auth-identity (6+ stories avec Gate 3 NON_CONFORME sur rate-limiting, JWT, enum)
- Capitaliser patterns de test NestJS — Factoriser les patterns recurrents (advisory lock, mocks Redis, fixtures dynamiques) dans un guide dev
Priorite normale¶
- Seuil convergence lente dans CLAUDE.md — REX PD-81 §10.4 : si delta < 0.50 apres 2 iterations, regrouper corrections par theme. Requiert validation humaine.
- Augmenter coverage cible a 85% branches — 4 stories avec corrections post-Gate 8 causees par coverage insuffisant
- SERIALIZABLE par defaut sur mutations d'etat — Ajouter dans code-contracts template comme regle par defaut
Signal CLAUDE.md¶
Les patterns suivants meritent une revision de CLAUDE.md :
1. Section "Etape 4 — Checklist pre-soumission Gate 5"¶
Suggestion : Ajouter une regle de convergence pour Gate 8 :
Si delta entre 2 iterations consecutives < 0.50, l'orchestrateur DOIT regrouper les ecarts restants par theme (securite, tests, completude) et produire un batch de corrections plutot que des corrections unitaires.
2. Section "Guardrails"¶
Suggestion : Ajouter un seuil de convergence :
Seuil de convergence lente : Si le delta moyen entre 2 iterations consecutives de gate < 0.50 ET que l'iteration courante est >= 3, l'orchestrateur DOIT : 1. Regrouper tous les ecarts restants par categorie (ECT, DIV, SEC) 2. Produire un batch de corrections couvrant tous les ecarts d'une categorie 3. Logger un
convergence_slowdans session-log
3. Section "Etape 6 — Multi-agents"¶
Suggestion : Ajouter une regle SERIALIZABLE :
Toute transaction de mutation d'etat (revoke, finalize, close, expire, activate) DOIT utiliser le niveau d'isolation SERIALIZABLE. Regle a integrer dans le template code-contracts.
Metriques de la retrospective¶
- Learnings analyses : 177 (fichier complet)
- Stories domaine crypto-proof : 12
- Patterns identifies : 5
- Alertes haute priorite : 3 (dont 3 deja appliquees)
- Alertes priorite normale : 3
- Signaux CLAUDE.md : 3 sections