PD-295 — Retour d'expérience (REX)¶
1. Résumé¶
PD-295 a transformé la bibliothèque documentaire plate en mémoire vivante injectable au step 0. 5 briques Python livrées (veille, clarifications, scoring, lifecycle, injection unifiée). Gate 8 GO à 9.438/10.
2. Métriques¶
| Métrique | Valeur |
|---|---|
| Durée totale workflow | ~7h (dont 5h sur Gate 3 cycles 1-2-3) |
| Itérations Gate 3 | 10 (3 cycles × 3 + cycle 4 v1) |
| Itérations Gate 5 | 1 (GO direct) |
| Itérations Gate 8 | 1 (GO direct) |
| Lignes de code produites | ~1300 lignes Python |
| Scripts créés | 11 (9 scripts + 2 libs) |
| Skills Claude Code créés | 2 (/veille-search, /clarifications) |
| Fiches veille indexées | 127/128 |
| Learnings scorés | 303 (59 archivés) |
| Gate 3 meilleur score | 8.375 (RESERVE cycle 4 v1) |
| Gate 5 score | 9.312 (GO v1) |
| Gate 8 score | 9.438 (GO v1) |
3. Learnings¶
3.1 Over-engineering toxique (CRITIQUE — learning principal)¶
Le cycle 1-2-3 a empilé HMAC + clé Vault + canonicalisation JCS RFC 8785 + fail-closed strict + machine à états PII + purge multi-artefacts RGPD + subprocess isolation avec buffer mémoire inviolable — pour un outil interne mono-utilisateur. 9 itérations Gate 3 pour converger à 7.938/10 (RESERVE). Puis le besoin v3 minimaliste (67 lignes, sans rien de tout ça) passe RESERVE 8.375/10 en 1 itération.
Pattern : une review adversariale qui trouve des défauts dans un mécanisme ne valide pas la nécessité du mécanisme. Il faut questionner la PERTINENCE avant d'itérer sur la QUALITÉ.
3.2 Besoin minimaliste = meilleur passage de gates¶
| Cycles 1-3 (besoin lourd) | Cycle 4 (besoin minimal) | |
|---|---|---|
| Besoin | 460 lignes | 67 lignes |
| Spec | 522 lignes | 380 lignes |
| Itérations G3 | 9 | 1 |
| Score G3 | 7.938 (RESERVE) | 8.375 (RESERVE) |
| Score G5 | — | 9.312 (GO) |
| Score G8 | — | 9.438 (GO) |
3.3 Compounding digest fonctionne (avec limites)¶
Le pattern "archiver cycle + capitaliser arbitrages au besoin + digest en tête de prompt correction" fonctionne pour réduire les régressions cachées. Mais les formules mathématiques doivent être dupliquées littéralement dans le digest (sinon Codex les réintroduit fausses — cf. nb_domains trivial qui a régressé 3 fois).
3.4 Codex review applique une grille standard JS/TS¶
5 faux positifs sur 9 majeurs en Gate 5 (Jest, Vitest, ESM, CJS, CI variables) pour un projet Python pur. Le dossier de conformité est le bon endroit pour requalifier. Ne pas déférer aveuglément.
3.5 Corrections CRITICAL identifiées et corrigées par le process¶
La review Codex step 7 a identifié 2 CRITICAL réels (scoring nb_domains sur stories au lieu de domaines, nb_stories_gate8_go sans filtre Gate 8 GO). Ces bugs auraient été silencieux en production (scores à 0 = pas d'impact visible tant que #28 n'a pas accumulé de données). Le process a fonctionné : review → identification → correction → re-validation.
4. Difficultés rencontrées¶
- Spirale over-engineering : 5h passées sur des mécanismes de sécurité non pertinents
- Régression
nb_domains: réintroduit 3 fois malgré le digest compounding (formule pas assez explicite) - Ollama indisponible : l'index FAISS veille n'a pas pu être construit pendant la session (IA-Server non lancé)
- pyenv vs système : numpy/faiss disponibles uniquement sur
/usr/bin/python3, pas sur pyenv 3.9.4
5. Améliorations process proposées¶
- Règle "pertinence avant qualité" : avant d'accepter une contrainte signalée par une review adversariale, vérifier si elle s'applique au contexte d'usage réel (interne vs externe, mono vs multi-tenant, dev vs prod)
- Digest compounding : inclure les formules mathématiques littéralement (pas juste les références)
- Gate 3 cycle 4 succès : le pattern "besoin minimaliste + spec concise + volume limité" devrait être la norme pour les tools internes
- Learning méta-process capitalisé dans learnings.jsonl
6. Prochaines étapes¶
- Lancer Ollama sur IA-Server pour construire l'index FAISS veille (127 fiches)
- Attendre ~5 stories avec instrumentation #28 pour que
compute-reuse-scores.pyproduise des scores non-nuls - Mesurer CS-1 à CS-4 à T+30j, T+60j, T+90j post-merge
- Enrichir
pii_ruleset_v1si un cas de PII apparaît réellement dans les clarifications (peu probable, c'est moi qui écris)