Aller au contenu

PD-280 — Retrospective

Produit par l'orchestrateur Claude apres l'etape 9 (REX). Analyse les learnings PD-280 et des stories recentes pour identifier patterns recurrents et recommandations.

1. Synthese PD-280

Metrique Valeur Comparaison
Temps total 6.1h +27% vs moyenne medium (4.8h)
Iterations gates 7 (G3:3, G5:3, G8:1) +40% vs moyenne (5.0)
Ecarts totaux 19 -14% vs moyenne (22.0)
Score convergence moyen 9.19/10 +7% vs moyenne (8.56)
Gate 8 GO v1 (9.31/10) Record legal-compliance
Pipeline FAILED (migration PD-279, pre-existant) Non imputable PD-280

Profil atypique : Double NON_CONFORME v1 (Gate 3: 4.69, Gate 5: 5.50) mais convergence la plus forte de l'historique (delta total +8.06). Gate 8 GO en v1 avec score record.

2. Patterns recurrents confirmes (Sprint 9 : PD-275 a PD-281)

2.1 Patterns stabilises (>=6 occurrences)

Pattern Occurrences Derniere story Statut
Machine a etats avec transitions interdites 9 PD-280 Standard
Guard fail-closed (intercepteur/guard NestJS) 9 PD-280 Standard
Stubs inter-PD avec story destination 9 PD-280 Convention
Format non contractualise en spec v1 10 PD-280 Checklist ajoutee
Faux positifs LLM en reviews 7 PD-280 Section doc-only proposee
Sonar Phase 1.5 indisponible 6 PD-280 Derogation active

2.2 Patterns emergents (Sprint 9)

Pattern Occurrences Stories Signal
Projection a la lecture vs mutation 1 PD-280 Nouveau — a surveiller
Intercepteur coherence DTO sortie 1 PD-280 Nouveau — potentiel standard
Double NON_CONFORME v1 = complexite 1 PD-280 Indicateur — pas pattern
Prefix instruction OpenCode (INSTRUCTION CRITIQUE) 2 PD-275, PD-280 A standardiser
Corrections simultanees spec+tests pour debloquer stagnation 1 PD-275 A surveiller
Classifier faux positifs par type de projet (doc-only vs backend) 1 PD-281 A standardiser

2.3 Anti-patterns detectes

Anti-pattern Freq Sprint 9 Impact Mitigation proposee
Verbes ambigus spec ("reclassifie") sur endpoint lecture seule 1 (PD-280) +2 iterations Gate 5 Checklist semantique lecture/ecriture en spec v1
Renumerotation invariants plan vs spec 1 (PD-279) Tracabilite rompue Regle : IDs canoniques spec = IDs plan
ChatGPT persiste sur grilles backend pour projet doc-only 1 (PD-281) Faux positifs Gate 8 Template review adaptatif par type de projet
Migration PG enum dans meme transaction 1 (PD-279) Pipeline FAILED ALTER TYPE + COMMIT avant usage

3. Analyse convergence Sprint 9

3.1 Scores Gate 8 (dernieres 6 stories)

Story Gate 8 Iteration Complexite
PD-277 9.125 v1 simple
PD-276 8.375 v1 simple
PD-275 9.0 v1 simple
PD-281 9.125 v1 simple (doc)
PD-279 8.25 v1 medium
PD-280 9.31 v1 medium

Tendance : 100% Gate 8 GO en v1 sur les 6 dernieres stories. Score moyen : 8.86/10. Le workflow est mature pour la phase de cloture.

3.2 Iterations Gate 3 + Gate 5

Story G3 iter G5 iter Total Signal
PD-277 2 3 5 G5 plus exigeante
PD-276 2 1 3 G3 plus exigeante
PD-275 3 2 5 G3 plus exigeante
PD-281 1 2 3 Rapide
PD-279 2 2 4 Equilibre
PD-280 3 3 6 Maximum iterations (plafond v3 atteint 2x)

Tendance : PD-280 est la seule story a avoir atteint le plafond v3 sur les deux gates. Cela confirme la complexite conceptuelle (frontiere interne/API + lecture seule + idempotence concurrente).

4. Learnings PD-280 consolides

4.1 Learnings exploitables immediatement

  1. Projection a la lecture — Quand un endpoint GET doit "evaluer" un etat derive, modeliser comme projection (pas mutation). Exiger cette semantique des la spec.
  2. Intercepteur coherence sortie — Pattern NestJS sous-utilise. Cout ~50 lignes, ROI = Gate 8 GO v1 avec defense-in-depth contractuelle.
  3. verificationRequestId — UUID serveur pour desambiguer les etats transitoires. Generaliser pour toute ressource stateful.

4.2 Learnings a confirmer (1 occurrence)

  • Double NON_CONFORME v1 = investir plus en etape 0 pour clarifier frontieres
  • SLA lazy sans worker = dette planifiee acceptable si STUB documente

5. Recommandations d'amelioration du processus

5.1 Haute priorite

# Amelioration Impact estime Effort
R1 Ajouter checklist semantique lecture/ecriture dans template spec (etape 1) -1 a -2 iterations Gate 5 sur stories avec ambiguite Faible (1 section template)
R2 Exiger section "Mapping interne/API" dans template spec quand transformation non triviale -1 iteration Gate 3 sur stories avec frontiere Faible (1 section template)
R3 Standardiser prefix "INSTRUCTION CRITIQUE" pour prompts OpenCode agentic Elimine faux positifs tool-use Faible (1 ligne par prompt)

5.2 Moyenne priorite

# Amelioration Impact estime Effort
R4 Classifier faux positifs LLM par type de projet dans template review Reduction ~30% faux positifs Moyen (template conditionnel)
R5 Ajouter regle "IDs invariants plan = IDs spec" dans checklist pre-Gate 5 Elimination ecarts tracabilite Faible (1 regle)
R6 Documenter pattern intercepteur coherence sortie dans CLAUDE.md backend Reutilisation inter-stories Faible (5 lignes)

5.3 Basse priorite

# Amelioration Impact estime Effort
R7 Resoudre Sonar Phase 1.5 (derogation active depuis 6 stories) Quality Gate reelle avant reviews LLM Moyen-eleve (infra)
R8 Corriger migration PD-279 (ALTER TYPE + COMMIT) Pipeline vert Moyen (migration corrective)

6. Actions prises (PD-280)

Action Fichier Statut
5 regles apprises ajoutees CLAUDE.md backend DONE
Learning Gate 3 GO learnings.jsonl DONE
Learning Gate 5 GO learnings.jsonl DONE
Learning Gate 8 GO learnings.jsonl DONE
Metrics story metrics.jsonl DONE
Dashboard regenere GOVERNANCE-METRICS.md DONE

7. Signal CLAUDE.md

Les ameliorations R1, R2, R5, R6 touchent des templates ou CLAUDE.md. Validation humaine requise avant application.

R1 — Checklist semantique lecture/ecriture (template spec)

Ajouter dans templates/prompts/1 Specification.md, section "Contraintes" :
- Si un endpoint est GET (lecture seule), verifier que la spec n'utilise pas de verbes
  impliquant une mutation ("reclassifie", "met a jour", "modifie"). Si necessaire,
  expliciter "projection a la lecture" (pas de mutation en base).

R2 — Section Mapping interne/API (template spec)

Ajouter dans templates/prompts/1 Specification.md, section "Structure" :
- Si l'API expose une transformation non triviale (ex: enum interne -> null API),
  la spec DOIT inclure une section "Mapping interne/API" documentant chaque transformation.

R5 — IDs invariants plan = spec (checklist pre-Gate 5)

Ajouter dans gov-check-plan :
- Verifier que CHAQUE invariant du plan utilise l'ID canonique de la spec (INV-XXX-NN).
  Interdire la renumerotation ou l'ajout d'invariants hors canon sans mention explicite.

R6 — Pattern intercepteur coherence (CLAUDE.md backend)

Deja ajoute par Claude -p dans le REX (section "Etat PENDING verification de preuve").

Retrospective produite le 2026-03-01. Prochaine : etape 10 de la story suivante.