Aller au contenu

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

  1. 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)
  2. Digest compounding : inclure les formules mathématiques littéralement (pas juste les références)
  3. Gate 3 cycle 4 succès : le pattern "besoin minimaliste + spec concise + volume limité" devrait être la norme pour les tools internes
  4. 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.py produise des scores non-nuls
  • Mesurer CS-1 à CS-4 à T+30j, T+60j, T+90j post-merge
  • Enrichir pii_ruleset_v1 si un cas de PII apparaît réellement dans les clarifications (peu probable, c'est moi qui écris)