Aller au contenu

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

  1. SLA temporels obligatoires : Chaque transition d'etat avec dimension temporelle DOIT avoir SLA min/max/default. Pattern recurrent (PD-81, PD-55, PD-39).
  2. Envelope encryption non implicite : Artefacts crypto temporaires (kfrags, DEK, ReKey) doivent etre chiffres at-rest. S-04 CRITIQUE.
  3. JWT binding systematique : actorIdentity = req.user.sub, jamais le body. Regle code-contracts.
  4. Faux positifs LLM massifs : 5 findings sur code deja corrige (30-40% taux FP). Injecter corrections dans prompts review.
  5. 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.md v1.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.md v1.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_slow dans 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