Aller au contenu

PD-46 — Retour d'expérience (REX)

1. Résumé exécutif

Métrique Valeur
Objectif initial Implémenter download sécurisé avec pre-signed URLs S3
Résultat obtenu Conforme au scope défini (owner download)
Verdict final GO (8.625/10)
Tests contractuels 70/70 passés
Pipeline CI/CD Bloqué par dette externe (notifications/)

2. Métriques de convergence

2.1 Temps et itérations

Étape Durée estimée Durée réelle Itérations Écart
0 - Besoin 30 min 20 min 1 -33%
1 - Spécification 2h 1h 1 -50%
2 - Tests 1h 45 min 1 -25%
3 - Gate spec 1h 1h30 2 +50%
4 - Plan 1h 1h 1 0%
5 - Gate plan 1h 45 min 1 -25%
6 - Implémentation 4h 3h 1 -25%
7 - Acceptabilité 2h 2h 1 0%
8 - Gate acceptabilité 1h 1h 1 0%
9 - REX 30 min 30 min 1 0%
TOTAL ~14h ~11h 11 -21%

2.2 Scores de convergence par gate

Gate Score v1 Score final Delta Itérations
Gate 3 8.375/10 8.75/10 +0.375 2
Gate 5 9.0/10 9.0/10 0 1
Gate 8 8.0/10 8.625/10 +0.625 1

2.3 Écarts par catégorie

Catégorie d'écart Gate 3 Gate 5 Gate 8 Total
ECT (complétude/testabilité) 3 0 1 4
DIV (divergence spec/impl) - 0 0 0
AMB (ambiguïté) 0 2 0 2
SEC (sécurité) - - 1 1
PERF (performance) - - 0 0
TOTAL écarts 3 2 2 7

3. Points fluides

Ce qui a bien fonctionné :

  • Spécification Zero-Knowledge claire : L'invariant INV-46-06 (backend ne lit jamais le contenu) était bien défini et directement testable
  • Architecture pre-signed URL éprouvée : Pattern AWS S3 standard, pas d'ambiguïté sur l'implémentation
  • Tests exhaustifs dès la spécification : 70 tests définis en amont, tous passés
  • Scope explicitement réduit : Les TODO (partage, B2B) documentés dès le plan ont évité les faux positifs en Gate 8
  • Workflow automatisé OpenCode : Zéro copier-coller manuel pour les reviews ChatGPT

4. Points difficiles

Obstacles rencontrés (sans justification) :

  • Gate 3 à 2 itérations : INV-46-06 (Zero-Knowledge) non observable initialement, nécessité d'ajouter une assertion sur l'absence de GetObject
  • Review sécurité ChatGPT trop stricte : A remonté des vulnérabilités pour des fonctionnalités explicitement hors scope
  • Confrontation obligatoire : Le delta ChatGPT (RESERVE) vs Claude (GO) a nécessité une analyse des faux positifs
  • Pipeline CI/CD bloqué : Erreurs TypeScript pré-existantes dans notifications/ bloquent le merge (non lié à PD-46)

5. Hypothèses révélées tardivement

Hypothèses non explicites découvertes en cours de workflow :

  • OVH S3 compatible AWS SDK — découverte à l'étape 6 (confirmé fonctionnel)
  • TTL centralisé nécessaire — découverte à l'étape 7 (ECT-CODE-05 corrigé)
  • Audit non-bloquant by design — découverte à l'étape 7 (ERR-46-008 documenté)

6. Invariants complexes

Invariants difficiles à implémenter ou sensibles aux régressions :

  • INV-46-06 (Zero-Knowledge) — TC-ZK-01 : Nécessite de vérifier l'absence de GetObject dans les mocks S3
  • INV-46-01 (TTL + droits temps réel) — TC-INV-01 : Le TTL S3 est vérifié par X-Amz-Expires, mais les droits temps réel nécessitent un scénario de révocation

7. Dette technique

Compromis acceptés et non bloquants :

  • Erreurs TypeScript notifications/ — impact: moyen (bloque pipeline, mais pas lié à PD-46)
  • CA-46-02, CA-46-04 TODO — impact: faible (partage/B2B hors scope MVP)
  • ESLint security/detect-object-injection désactivé — impact: faible (enum typé vérifié manuellement)

8. Risques résiduels

Risque Type Probabilité Impact Mitigation
TTL S3 non vérifié côté client ops faible moyen Documentation API + test E2E futur
Énumération UUIDs sécurité très faible faible UUIDv4 non séquentiels
Dette TS notifications/ propage tech élevée moyen Story dédiée à créer

9. Patterns récurrents détectés

9.1 Patterns confirmés (déjà vus dans d'autres stories)

  • Review sécurité trop stricte sur scope futur — aussi dans PD-19, PD-60
  • Gate 3 nécessite 2 itérations pour invariants observables — pattern récurrent

9.2 Nouveaux patterns identifiés

  • Confrontation ChatGPT vs Claude efficace : Le delta de scoring révèle les faux positifs
  • Scope réduit avec TODO tracés = RESERVE contestable : Si TODO explicites, RESERVE → GO

10. Améliorations du workflow

10.1 Améliorations des prompts/templates

Fichier Amélioration suggérée Priorité
docs/prompts/7c Review Security.md Ajouter instruction "Ne pas pénaliser fonctionnalités marquées TODO/hors scope" haute
docs/templates/PD-XX-verdict.yaml Ajouter champ scope_exclusions pour documenter les TODO acceptés moyenne

10.2 Améliorations des agents

Agent Amélioration suggérée Justification
Gate reviewer Distinguer écarts "in-scope" vs "out-of-scope" Éviter faux positifs sur TODO documentés
Confrontation Systématiser contestation si écart concerne fonctionnalité hors scope Réduire bruit dans scoring

10.3 Améliorations du processus

  • Pré-vérifier TypeScript avant merge : Ajouter check local npx tsc --noEmit dans la phase 6c
  • Créer story dette tech si pipeline bloqué : Automatiser création de ticket pour dette pré-existante

11. Enseignements clés

5 enseignements génériques réutilisables :

  1. Scope explicite = protection contre faux positifs — Documenter les TODO dès le plan évite les pénalités en Gate 8
  2. Invariants observables dès Gate 3 — Un invariant non testable causera une itération supplémentaire
  3. Confrontation ChatGPT/Claude indispensable — Le delta de scoring révèle les biais des reviewers
  4. Zero-Knowledge testable par absence — Vérifier qu'une opération N'EST PAS appelée est aussi un test valide
  5. Dette technique externe bloque le workflow — Prévoir une marge pour corriger les problèmes pré-existants

12. Métriques cumulatives

Métrique Cette story Moyenne projet Tendance
Temps total 11h 14h
Itérations gates 4 5.2
Écarts totaux 7 8.4
Score convergence moyen 8.79/10 8.2/10

13. Actions de suivi

Action Responsable Échéance
Corriger dette TypeScript notifications/ Dev team Sprint N+1
Implémenter partage actif (CA-46-02) PO à planifier Backlog
Implémenter B2B tenant (CA-46-04) PO à planifier Backlog
Améliorer prompt review sécurité Governance team Sprint N

Statut final : Story PD-46 GO, en attente correction dette notifications/ pour pipeline vert.