PD-287 — Rétrospective¶
Métriques globales¶
| Métrique | Valeur |
|---|---|
| Durée totale workflow | ~4h |
| Nombre d'appels LLM | ~25 (Claude + Codex) |
| Fichiers TS produits | 52 |
| Agents step 6b | 11 (4 waves) |
| Gate 3 | RESERVE 7.25/10 (2 itérations) |
| Gate 5 | RESERVE 7.25/10 (2 itérations) |
| Gate 8 | RESERVE 7.25/10 (2 itérations) |
| Learnings capturés | 3 |
Patterns récurrents identifiés¶
1. Anti-enumeration insuffisant en première passe¶
Pattern : Les agents produisent systématiquement des codes HTTP différenciants (401/403/404/429) malgré un invariant anti-enum explicite (INV-SEC-8). Corrigé en Gate 3 (spec) et Gate 8 (code).
Recommandation : Ajouter un check automatique post-agent qui grep les codes HTTP dans le code produit et vérifie l'uniformité pour les endpoints destinataire/public.
2. Sessions non liées à la ressource¶
Pattern : Les agents produisent des sessions UUID validées en isolation (existence + non-expirée) mais sans vérifier l'appartenance à la ressource demandée. Détecté en Gate 8 (CVSS 9.1).
Recommandation : Ajouter dans le template agent 6b un invariant explicite : "Toute validation de session DOIT vérifier la liaison session↔ressource, pas seulement l'existence."
3. Audit journal async vs sync — confusion récurrente¶
Pattern : La spec et le plan confondent "async post-commit" et "synchrone bloquant" pour le journal d'audit. Détecté en Gate 3 (B-03). Le journal audit probatoire DOIT être synchrone et bloquant (fail-closed).
Recommandation : Ajouter dans le template spec une règle : "Si un journal est qualifié d'append-only ET qu'un fail-closed est requis → le journal est synchrone."
4. Code contracts glob trop larges¶
Pattern : src/sharing/** en code contract chevauche les sous-modules. Détecté en Gate 5.
Recommandation : Interdire les globs ** dans les fichiers code contracts. Exiger des chemins explicites.
5. Stubs crypto documentés mais flaggés critique¶
Pattern : Les stubs PRE (STUB: PD-287) sont correctement documentés mais sont flaggés CVSS 9.8 en review sécurité, ce qui pollue le scoring.
Recommandation : Le template de review sécurité devrait distinguer "stub documenté avec story destination" de "vulnérabilité non tracée". Atténuer la criticité des stubs tracés (cf. learning PD-250/PD-251).
Ce qui a bien fonctionné¶
- Clarifications PO exhaustives : les 20 questions + 10 arbitrages tranchés dès step 0 ont évité les allers-retours en spec.
- Learnings injectés : les learnings PD-280/PD-282/PD-283 ont directement nourri les invariants (anti-enum, trust-store strict, purge proactive).
- Agents parallèles Wave 2 : 4 agents en parallèle sans conflit de fichiers grâce aux code contracts.
- Corrections ciblées Gate 8 : 5 fixes chirurgicaux (156 insertions, 128 deletions) ont fait passer le score de 5.25 à 7.25.
Ce qui doit être amélioré¶
- Pas de tests : les agents n'ont pas produit de tests unitaires. À intégrer dans le template agent ou ajouter un agent-tests dédié.
- Sonar non exécuté : Docker indisponible. Installer sonar-scanner localement.
- Codex output brut : les sorties Codex contiennent beaucoup de bruit (doublons, tentatives d'écriture fichier en sandbox). Parser et nettoyer automatiquement.
- 6 gates au total (3×2 itérations) : 6 appels LLM pour les reviews + 6 pour les confrontations = 12 appels de gate. Réduire en améliorant la qualité de la première passe.