LifePlay-Revival/Docs/Migration/etat/EVAL2/AMEL1/AMEL1-INDICATEURS.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

20 KiB
Raw Blame History

Fiche AMEL1-T0 — Niveau N2 — Modèle prévu Opus 5.5 | utilisé claude-opus-5-5 — Agent orchestrateur (session EVAL) — Skills aucun préchargé

AMEL1-INDICATEURS : un indicateur mesurable par recommandation R1 à R14, mesure « avant » (P3) et mode opératoire « après » (2026-10-14)

Demande de l'utilisateur (2026-10-14, session EVAL) : « implémentons les recommandations pour chaque recommandation je veux un indicateur mesurable. avec une mesure maintenant et après basé sur un mode opératoire net et complet ». Recommandations : etat\EVAL2\EVAL2-RAPPORT.md § 4. Valeurs « avant » : etat\EVAL2\EVAL2-STATS.md et les relevés T1a à T6 (période P3, 2026-10-11 05:30 → 2026-10-14 18:25:41).


1. Mode opératoire de la mesure (identique avant et après)

1.1 Périodes

Période Bornes Rôle
AVANT = P3 2026-10-11 05:30:00 → 2026-10-14 18:25:41 (UTC+2), coupure P3a/P3b 2026-10-13 12:07:16 valeur de référence, déjà relevée (§ 2, colonne « Avant »)
APRÈS = P4 début : date du dernier commit d'AMEL1 (toutes les recommandations « en place ») ; fin : la première des deux bornes 72 h de calendrier ou 30 h actives cumulées des sessions principales ; au moins 5 builds et 1 essai commun dans la fenêtre, sinon la fenêtre est prolongée jusqu'à les atteindre mesure de l'effet

La période P4 ne commence pas avant que toutes les recommandations soient en place, sinon l'effet est mélangé. Une recommandation non en place à P4 est mesurée quand même et notée « non en place » (sa valeur sert de témoin).

1.2 Commande unique

python -I -X utf8 Tools\Indicateurs.py --debut "AAAA-MM-JJ HH:MM:SS" --fin "AAAA-MM-JJ HH:MM:SS" --sortie Docs\Migration\etat\EVAL2\AMEL1\AMEL1-MESURE-<periode>.md
  • Le script (Tools\Indicateurs.py, fiche AMEL1-M1) lance les relevés T1a à T6 d'EVAL2 sur la fenêtre donnée, avec les mêmes définitions, et écrit une ligne par indicateur : valeur, numérateur, dénominateur, source, et la commande de contrôle à rejouer à la main.
  • Contrôle de non-régression du script : --debut "2026-10-11 05:30:00" --fin "2026-10-14 18:25:41" doit redonner les valeurs « Avant » du § 2 (tolérance : ± 1 sur les comptes, ± 0,5 point sur les pourcentages ; écart plus grand = script faux, la mesure P4 n'est pas faite).
  • Session EVAL et ses sous-agents exclus, comme en EVAL et EVAL2. Métadonnées des sessions lues avec le chemin MSIX (%USERPROFILE%\AppData\Local\Packages\Claude_*\LocalCache\Roaming\Claude\claude-code-sessions).

Tools/ n'est plus suivi par git (décision de l'utilisateur du 2026-10-14 : « on gitignore Tools. c'est un dossier pour Agent IA », CHG-357). Tools\Indicateurs.py et Tools\EssaiJournal.* vivent donc seulement sur le poste. Avant la mesure P4, vérifier leur MD5 contre la référence (Indicateurs.py 42feceb7… ; écart = rejouer d'abord le contrôle sur P3 du § 1.2) ; copie des versions finales, hors git, dans D:\Game\LifePlay_Backup_5.5\AMEL1-OUTILS\ (2026-10-14 : Indicateurs.py 42feceb7…, EssaiJournal.ps1 39d511f2…, EssaiJournal.regles.json a34e684b…, CopieEtat.ps1 a5298113…, FicheStats.py 25938733…).

Transcriptions (décision de l'utilisateur du 2026-10-14 : « Copier avant suppression ») : 4 sessions supprimées le 2026-10-14 ont emporté leurs transcriptions (P3 n'est plus rejouable à l'identique ; la référence « Avant » reste AMEL1-MESURE-P3.md, figée). Copie complète faite le 2026-10-14 : D:\Game\LifePlay_Backup_5.5\TRANSCRIPTIONS\complet\ (dossier d'abord nommé 2026-10-14\, renommé pour servir de base à -Tout ; premier -Tout incrémental : 8 copies, manifeste écrit) (2 077 fichiers, 837 Mo). Avant toute suppression de session : Tools\SauverTranscriptions.ps1 -Session <id> ; avant la mesure P4 : -Tout. I15 : valeur « avant » retenue = 10,9 pour 100 appels shell (mesurée par l'outil sur les données P3 restantes ; décision de l'utilisateur « 10,9 mesuré par l'outil ») ; cible ≤ 5,5.

1.3 Règles de lecture

  • Atteint : la valeur P4 franchit la cible. Amélioré : elle va dans le bon sens sans franchir la cible. Sans effet : écart inférieur à la tolérance. Dégradé : mauvais sens.
  • Les valeurs P4 sont rapportées à la même unité que P3 (par heure active, par 100 appels, par commit) : P4 n'aura pas la même durée ni le même type de travail. Le type de travail de P4 est décrit en tête de la mesure (lots, builds, essais).
  • Biais déclaré : la session EVAL conçoit, met en œuvre et mesure ; la VAL de la mesure P4 est confiée à un lp-validator indépendant (fiche AMEL1-V2).

2. Indicateurs

Rec. Indicateur Formule exacte Source (relevé, script) Avant (P3) Cible P4 Tolérance
R1 Recentrer Big Boss I1a part de Big Boss dans tous les jetons lus jetons lus des transcriptions Big Boss (ebc15012, 92a3927f et suivantes, identifiées par local_7f1c9fb1 dans les métadonnées) / jetons lus de toutes les principales et de tous les sous-agents T1a eval2_sessions.py, T1b eval2_subagents.py 20,4 % (605,6 M / 2 970 M) ≤ 15 % (clause D-P7.8) ± 0,5 pt
I1b part de Big Boss dans les heures actives heures actives Big Boss / somme des heures actives des sessions principales T1a 36,1 % (24,66 / 68,27 h) ≤ 20 % ± 1 pt
I1c contexte médian des principales (E1, rotation) médiane du contexte par tour, toutes principales T1a 295 k < 200 k (doc 33 § 7) ± 5 k
R2 Crochet v2 I2a taux de refus à tort refus opérationnels du crochet classés « à tort » (règle v2, eval2_refus.py) / refus opérationnels T6 eval2_commandes.py, eval2_refus.py 47 % (36 / 76) ≤ 10 % ± 2 pts
I2b cas adverses bloqués (sécurité conservée) cas adverses de la batterie P7-H2 refusés par le crochet en place / cas adverses de la batterie etat\AG\P7\P7-H2* (batterie cas.jsonl), rejouée par le script de test de P7-H2 à mesurer en AMEL1-M1 sur le crochet actuel 100 % 0
R3 Contrôles en jeu automatiques I3 part des KO trouvés avant l'utilisateur KO (cas KO, KO partiels et défauts hors fiche KO) dont le découvreur est « agent » ou « script » / tous les KO des essais communs de la période T4 eval2_commun.py (data\commun.csv, colonne découvreur) 12,5 % (6 / 48 ; 9 / 48 = 18,8 % avec les mixtes) ≥ 30 % ± 2 pts
R4 lp-mcp-bp en Sonnet (essai ORGA2) I4a jetons lus par passage lp-mcp-bp jetons lus des sous-agents lp-mcp-bp* / nombre de passages T1b 3,90 M (144,2 M / 37) ≤ 2,3 M (−40 %) ± 0,1 M
I4b temps d'éditeur par correctif (garde-fou ORGA2 § 6) somme des durées éditeur des passages lp-mcp-bp* (premier → dernier appel MCP) / passages T1b (horodatages des appels MCP) à mesurer en AMEL1-M1 ≤ valeur avant + 10 % ± 5 %
R5 Journal au fil de l'eau I5a part des ERR consignées en rattrapage ERR de la période dont la ligne porte « JOURNAUX » ou dont l'écart date du fait → date d'inscription dépasse 24 h / ERR de la période T3 eval2_journal.py 100 % (50 / 50) ≤ 10 % 0
I5b plus long intervalle sans écriture de journal pendant l'activité plus grand écart entre deux écritures successives d'un CHG, d'un ERR ou d'un brouillon *-JOURNAL-BROUILLON.md (dates de commit et dates de modification), borné aux heures actives T3 + dates des brouillons ≈ 29 h (CHG-343, 10-13 13:04 → 3af7324, 10-14 18:22) < 4 h ± 0,5 h
R6 PubCheck dès la fiche I6 refus de commit pour fuite (nom de compte, chemin machine) pour 100 commits (refus PubCheck + refus du gardien pour nom de compte, lus dans etat\REPO\REPO-JOURNAL.md) × 100 / commits de la période T2 eval2_commits.py (data\tickets.csv) 12,2 (6 / 49) 0 0
R7 Consignes de shell I7a refus que les agents se causent eux-mêmes, pour 1 000 appels shell des sous-agents refus du crochet sur python -c, heredoc Python, tee par un agent dont la fiche les interdit × 1 000 / appels Bash + PowerShell des sous-agents T6 numérateur 14 (T6) ; dénominateur à mesurer en AMEL1-M1 (appels shell des seuls sous-agents) ; borne basse 2,4 ‰ si rapporté aux 5 910 appels de toutes les sessions ≤ 1 ‰ ± 0,5 ‰
I7b erreurs de guillemets et d'échappement pour 1 000 appels shell erreurs classées « guillemets / échappement » × 1 000 / appels Bash + PowerShell (tous) T6 § 2.8 4,4 ‰ (26 / 5 910) ≤ 2 ‰ ± 0,5 ‰
R8 VAL « témoin en jeu » I8a part des VAL PASS-STATIC de comportement qui nomment leur cas de fiche de tests VAL PASS-STATIC dont le livrable cite un cas COMMUN-n / VAL PASS-STATIC d'un correctif de comportement T5 eval2_val.py (data\val.csv) à mesurer en AMEL1-M1 (estimé ≈ 0 %) ≥ 90 % ± 5 pts
I8b PASS (ou PASS-STATIC) suivis d'un KO en jeu sur le même cas compte T5 × T4 4 (S-F5m, B2p-E, B2q-a, B2s) pour 70 PASS / PASS-STATIC = 5,7 % ≤ 2 % ± 1 cas
R9 Fiches lp-cart plus étroites I9 taux de hors budget lp-cart passages lp-cart hors budget (tours ou pic, critère EVAL) / passages lp-cart T1b 79 % (11 / 14) ≤ 40 % ± 5 pts
R10 Outils de copie, contrôle d'instantané I10a part des contrôles faits par les outils appels CopieEtat + GitEtat / (ces appels + git status + calculs d'empreinte improvisés) T6 familles a.*, c.git-status, § 2.9 4,0 % (66 / 1 655) ≥ 30 % ± 1 pt
I10b écritures sans instantané préalable relevés « instantané manquant » (cas distincts) T5 data\ecarts.csv 3 cas distincts (7 relevés) 0 0
R11 Registres et BOSS-JOURNAL horodatés I11a lignes du BOSS-JOURNAL avec heure lignes de la période avec HH:MM / lignes de la période T3 18,6 % (86 / 462) ≥ 90 % ± 2 pts
I11b livrables de rôle avec ligne Tours livrables de rôle avec Tours : / livrables de rôle T5 68,6 % ≥ 95 % ± 2 pts
R12 Sessions renommées au lot servi I12 sessions dont le titre dans l'application ne correspond pas au lot servi sessions principales actives dont le titre de l'application ≠ titre de la transcription / lot servi (table data\lots.csv vs lots_transcription.csv) T1a 3 sur 25 (ARCH427 et TRACE1 sous « STG », PUB3 sous « REL ») 0 0
R13 Pièges de poste versés I13 fiches lp-inventory reprises pour une cause d'environnement ou de consigne de shell fiches lp-inventory reprises ou arrêtées par un refus ou un piège de poste / fiches lp-inventory registres de lot, T1b 3 / 7 dans EVAL2 (T1a, T4, T6), 43 % 0 0
R14 Budget de tours du build I14 passages lp-builder au-delà du budget de tours de leur fiche passages dont les tours mesurés dépassent le budget déclaré / passages lp-builder T1b § 2.6 1 / 32 (3 %) 0 0

2.1 Valeurs « Avant » de référence, figées par l'outil (AMEL1-M1, 2026-10-14)

La comparaison avant / après se fait entre deux sorties du même outil : la référence « Avant » est AMEL1-MESURE-P3.md, produite par Tools\Indicateurs.py sur P3 (MD5 de l'outil f6703323…, 50 lignes sur 53 dans la tolérance du tableau ci-dessus). Les valeurs du tableau ci-dessus restent la trace de la lecture manuelle. Là où les deux diffèrent, l'outil fait foi (décision de l'orchestrateur), parce que la mesure P4 sera faite par lui :

Ind. Lecture manuelle Avant de référence (outil) Cause de l'écart
I2b à mesurer 88,5 % (154 / 174 cas adverses refusés ; cas.jsonl de P7-H2 seul : 32 / 35) mesuré
I4b à mesurer 3,4 min par passage lp-mcp-bp (127,5 min / 37) mesuré
I7a numérateur 14 5,9 ‰ (14 / 2 370 appels shell des sous-agents) mesuré
I8a à mesurer 2,9 % (1 / 34 VAL PASS-STATIC citent un cas COMMUN-n précis) critère strict retenu, conforme au texte R8 approuvé (« nomme le cas ») ; critère large (mention d'un essai en jeu) : 88,2 %, non retenu
I8b 4 / 70 = 5,7 % 5,8 % (4 / 69) retouche en bloc filtrée
I11a 18,6 % (86 / 462, fichier entier) 19,0 % (51 / 268 lignes de la fenêtre) fenêtre P3 seule ; le fichier entier donne 18,8 % (87 / 463, une ligne ajoutée depuis)
I12 3 sessions 5 / 25 relevé automatique complet (lecture manuelle partielle)
I13 3 / 7 (lot EVAL2) 2 / 7 dans P3 le 3 / 7 portait sur le lot EVAL2, hors fenêtre et session exclue
I14 1 / 32 2 / 32 GEL1-D1 (19 tours pour 15 déclarés) aussi au-delà
I15 (R7 / OUTIL1) — (indicateur ajouté par OUTIL1-D1, 2026-10-14) 10,9 pour 100 appels shell (465 / 4 281 ; principales 320, sous-agents 145) mesuré sur les données P3 restantes : 4 sessions « STG » et leurs 66 sous-agents ont été supprimés de ~/.claude/projects après P3 ; à données complètes, la définition T6 (lancements de scripts écrits dans Tools\ inclus) donnait 723 / 5 910 = 12,2 (957 appels h.* moins 234 Write, T6-INV § 2.8). Cible proposée : −50 %

Définitions fixées par l'outil et retenues (décision de l'orchestrateur, à appliquer à l'identique en P4) :

  • I5b : intervalles comptés seulement pendant l'activité (heures où les sessions principales cumulent au moins 25 % d'activité) ; sans ce filtre, 39,2 h.
  • I6 : un refus = une opération du REPO-JOURNAL.md qui commence par « COMMIT refus » (les lignes de reprise qui rappellent un refus ne comptent pas).
  • I8b : les retouches en bloc (≥ 20 fichiers à la même seconde) sont exclues ; les liens VAL → KO viennent d'une table saisie (--liens-val-ko).
  • I10b : un « cas distinct » = un lot.
  • I15 : appels Bash et PowerShell (principales et sous-agents) portant une des familles T6 h.python-heredoc, h.python-pipe-stdin, h.python-c (plus de 200 caractères) ou le lancement d'un script écrit par Write hors Tools\ dans la même transcription, pour 100 appels shell ; ventilé par lot (titre de la transcription, à défaut celui de l'application). Détail : OUTIL1-D1-MESURE-P3.md.
  • Attention, rejeu de P3 après suppression de données : les transcriptions de 4 sessions « STG » (dont celle de 902 tours) et de 66 sous-agents (114,9 M de jetons lus) ont disparu de ~/.claude/projects depuis la mesure d'origine. Un rejeu de P3 ne redonne plus les valeurs de ce tableau pour les indicateurs fondés sur les transcriptions (I1, I2a, I4, I7, I10a, I12 à I14, G-a, G-b) ni, à cause des journaux vivants et du crochet v2, pour I2b, I6, I11a. AMEL1-MESURE-P3.md n'a donc pas été réécrit : il reste la référence « Avant ». Le rejeu actuel est dans OUTIL1\OUTIL1-D1-MESURE-P3.md (même outil, mêmes lignes sauf I15). La non-régression de l'outil se prouve en rejouant l'ancienne et la nouvelle version sur les mêmes données (sortie identique pour les 27 indicateurs).

Données saisies nécessaires à la mesure P4 (sinon l'indicateur sort « non mesurable » et le code est 1) : --commun-csv et --builds-csv (I3, G-c, G-d), --ecarts-csv (I10b), --liens-val-ko (I8b). Elles sont tirées des bilans d'essai écrits au gabarit BILAN (colonne découvreur, heures) par une fiche lp-writer AMEL1-P4a, juste avant la mesure, au format des CSV d'EVAL2 (etat\EVAL2\data\commun.csv, builds.csv, ecarts.csv). Après le 2026-10-25 (heure d'hiver) : --decalage-utc 1.

Indicateurs de résultat global (ne mesurent pas une recommandation seule, ils suivent l'effet d'ensemble) :

Indicateur Avant (P3) Cible P4
G-a jetons lus par CHG + ERR 39 M ≤ 30 M
G-b part des appels faite par les sous-agents 57 % > 70 % (doc 33 § 7)
G-c délai fin d'essai → exe suivant (médiane) 53 min ≤ 53 min (ne pas ralentir)
G-d KO par essai commun 19 KO + KO partiels / 13 builds = 1,46 baisse

3. Mise en œuvre (lot AMEL1)

Chaque recommandation devient une fiche, avec instantané (Tools\Snapshot.ps1 -Lot AMEL1-<n>) avant toute écriture, livrable dans etat\EVAL2\AMEL1\, et commit par le gardien sur ticket. Les textes de skills et de règles sont soumis à l'utilisateur avant le ticket (usage du projet, « approuvé tel quel »).

Fiche Rec. Contenu Où Agent Dépend de Décision préalable
AMEL1-M1 toutes Tools\Indicateurs.py : scripts EVAL2 paramétrés (--debut, --fin, --coupure), calcul des 14 indicateurs ; contrôle sur P3 ; mesure des « avant » manquants (I2b, I4b, I7a, I8a) jeu Tools\ lp-impl (sonnet) — —
AMEL1-R1 R1, F1, F6 règle « Big Boss = file UE, arbitrages, GO » ; gabarits fiche de tests et bilan d'essai tenus par un lp-writer ; rotation à 250 k et à chaque FIN-LOT pour toutes les sessions addon : lp-lot, lp-doc/gabarits.md ; doc 32 § 15.9 lp-writer — F1 = a, F6 = a
AMEL1-R2 R2, F2 crochet v2 : motifs cherchés hors texte cité, écriture permise dans le scratchpad et %TEMP%, crochet lu depuis le profil seulement ; batterie de cas (P7-H2 + 36 cas « à tort » de P3) profil %USERPROFILE%\.claude\hooks\, copie versionnée addon lp-impl (opus) + lp-validator M1 (I2b avant) F2 = a
AMEL1-R3 R3, F3 Tools\EssaiJournal.ps1 : relecture du journal de jeu par cas de la fiche de tests (PASS / FAIL), lancé par le builder avant la remise jeu Tools\ lp-impl (sonnet) — F3 = a
AMEL1-R4 R4, F4 essai ORGA2 § 5 (agent lp-mcp-bp-s en Sonnet, gabarit SPEC-MCP, script de relecture) addon agents et skills session ORGA2 après le 2026-10-18 (ORGA2) F4 = a
AMEL1-R5 R5 règle « brouillon <LOT>-JOURNAL-BROUILLON.md à chaque BUILD-FIN et à chaque KO » lp-lot, lp-doc lp-writer — F5 = a
AMEL1-R6 R6 PubCheck.ps1 dans la VAL et le BUILD-FIN lp-validate, lp-lot lp-writer — F5 = a
AMEL1-R7 R7, R13 consignes de shell et pièges de poste (MSIX, ls-remote, test d'interpréteur) sk-windows-shell, lp-paths, agent lp-inventory lp-writer — F5 = a
AMEL1-R8 R8 règle « VAL témoin en jeu » lp-validate lp-writer — F5 = a
AMEL1-R9 R9 rappel « une question, liste fermée » en tête de toute fiche lp-cart, et modèle de l'en-tête de l'agent respecté sk-orchestrate lp-writer — F5 = a
AMEL1-R10 R10 CopieEtat.ps1 : avertissement si aucun instantané du lot depuis le GO ; outils nommés dans le gabarit de fiche jeu Tools\, lp-lot lp-impl (sonnet) — F5 = a
AMEL1-R11 R11, R12 horodatage obligatoire du BOSS-JOURNAL, colonnes Tours et statut dans les registres ; renommage des sessions au lot servi lp-doc, lp-lot, doc 32 § 15 lp-writer — F5 = a
AMEL1-R13 R13 FicheStats.py : lp-mcp-bp, lp-diag, lp-cart-max dans AGENTS_N3 jeu Tools\ lp-impl (sonnet) — —
AMEL1-R14 R14 budget 60 tours pour un build dont la chaîne de vérification dépasse 50 étapes lp-build, agent lp-builder lp-writer — F5 = a
AMEL1-V1 — VAL de chaque fiche (diff, LF, PubCheck, critère de la fiche) — lp-validator chaque fiche —
AMEL1-P4 toutes mesure P4 par Tools\Indicateurs.py, tableau avant / après etat\EVAL2\AMEL1\AMEL1-MESURE-P4.md orchestrateur toutes en place + fenêtre P4 —
AMEL1-V2 — VAL indépendante de la mesure P4 — lp-validator P4 —

Coordination : Big Boss tient le jeton du journal, les numéros CHG et les tickets du gardien ; R1 change son propre rôle et lui est soumis en même temps qu'à l'utilisateur.

Tours : sans objet (fiche de l'orchestrateur)