LifePlay-Revival/Docs/Migration/etat/EVAL2/EVAL2-T1b-INV.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

19 KiB
Raw Permalink Blame History

Fiche EVAL2-T1b-b — Niveau N1 — Modèle prévu sonnet | utilisé claude-sonnet-5-5 — Agent lp-inventory — Skills sk-protocol, sk-recount, lp-paths

EVAL2-T1b-INV : sous-agents lancés pendant P3 (2026-10-14, reprise avec la coupure exacte)

Période P3 : 2026-10-11 05:30 → 2026-10-14 18:25:41 (UTC+2), sur l'heure du premier événement de chaque transcription (définition de l'EVAL, doc 33). Coupure P3a/P3b : 2026-10-13 12:07:16, heure établie par EVAL2-T1a. Le script ne lit que HH:MM : il a reçu --coupure "2026-10-13 12:07". Équivalent à 12:07:16 car aucun sous-agent ne débute à la minute 12:07 (Grep ,2026-10-13 12:07, sur le CSV → 0). Table de sensibilité conservée au § 2.9. Rien n'est écrit hors etat\EVAL2\. Aucun contenu de prompt ni de réponse n'est recopié : identifiants, types, chiffres.

1. Commandes exactes

Racine D:\Game\LifePlay-master 5.8. Fichiers : etat\EVAL2\scripts\eval2_subagents.py (copie paramétrée de etat\EVAL\scripts\eval_subagents.py, original intact, mêmes définitions, ajouts listés dans son en-tête) et eval2_subagents_sessions.py (rattachement aux sessions).

python -I "Docs/Migration/etat/EVAL2/scripts/eval2_subagents.py" --coupure "2026-10-13 12:07"
"D:/Game/Launcher/Engine/UE_5.8/Engine/Binaries/ThirdParty/Python3/Win64/python.exe" -I "Docs/Migration/etat/EVAL2/scripts/eval2_subagents_sessions.py"
python -I --version                      -> Python 3.14.4
python -I Tools/FicheStats.py --help     (budgets : N0-N2 40 tours / 150 k ; N3-N5 60 / 250 k ; FicheStats.measure sert de contre-contrôle)

Ordre obligatoire : le premier écrit data\subagents.csv et data\subagents-aggregats.md (la sortie dit « coupure … 12:07 (EXACTE, passee en argument) ») ; le second ajoute des colonnes au CSV et écrit data\subagents-sessions.md. Relancer le premier remet le CSV à zéro. Le second tourne sous le Python d'Unreal car le Python du Store (WindowsApps\python, 3.14.4) ne voit pas %USERPROFILE%\AppData\Roaming\Claude\claude-code-sessions (essai : os.path.exists → False, 0 fichier ; même chemin vu par ls : 67 fichiers). Piège : tout script qui lit AppData\Roaming doit utiliser un autre Python. Sources lues : dossiers %USERPROFILE%\.claude\projects\ D--Game-LifePlay-master-5-8, …-5-8-Docs-Migration-etat-AG-P7 (0 sous-agent), D--Game-LifePlay-master-5-5, …-5-5--claude-worktrees-measurement-tool-character-animations-028723 (0), D--Game-LifePlay-Backup-5-5-P7-jetable-copie ; sessions exclues be193763…, b339a92a… ; en-têtes d'agents %USERPROFILE%\.claude\agents\*.md (16 fichiers ; le projet n'a pas de dossier .claude\agents). Recompte par une autre formulation (première version, 258 lignes inchangées par la coupure) : Grep count ^[0-9a-f]{8},a[0-9a-f]+, sur le CSV → 258 ; Grep count ,lp-builder, → 32 ; tr -cd '\r' < fichier | wc -c → 0 pour les trois sorties (LF). Les sommes P3a + P3b = 117 + 141 = 258 sont contrôlées par type (§ 2.2).

2. Comptes bruts (sortie des scripts ; détail complet dans data\subagents-aggregats.md et data\subagents-sessions.md)

2.1 Couverture

- dossiers_projet_lus : 5
- jsonl_subagents_profondeur_quelconque : 630
- jsonl_pattern_session/subagents : 630
- hors_fenetre_avant : 355        (hors_fenetre_apres : absent = 0)
- session_exclue_total : 17 ; session_exclue_dans_fenetre : 13
- retenus : 258
- controle FicheStats.measure (tours, pic, jetons, erreurs, resultats) : 0 ecart(s) sur 258 agents
- jetons lus (total) : 562445300 (562.4 M)
- fiches reconnues (motif principal) : 118 ; non reconnues : 140
- niveau lu dans la fiche : 56 ; déduit de l'agent : 202
- dernier message assistant : handback=239, texte=18, outil=1

630 = 258 + 17 + 355 (cohérent). P3a 117 agents (194.6 M jetons) + P3b 141 (367.9 M) = 258 (562.4 M). Rattachement aux sessions : 258 agents dans 37 sessions parentes ; 67 fichiers local_*.json lus, 65 titrés ; 24 des 37 sessions parentes sans titre dans la table ; Big Boss (ebc15012…) n'a lancé directement qu'1 agent (lp-gardien, P3b) ; 92a3927f… : 0. Les sous-agents viennent des sessions de lot : STE 36e41eab 55, STG 8d9744a8 45, CAM e4f91a9c 42 (soit 142 sur 258).

2.2 Par type d'agent, P3 / P3a / P3b (n ; tours med/moy/max ; pic med/max en k ; jetons en M ; % hors budget)

type P3 n tours med / moy / max pic med / max jetons M % hors budget (EVAL) P3a n P3b n
lp-validator 77 16 / 18.7 / 57 102 / 347 142.1 26 % 21 56
lp-mcp-bp 37 44 / 43.6 / 82 129 / 236 144.2 46 % 3 34
lp-gardien 34 14 / 15.2 / 36 64 / 215 33.1 6 % 30 4
lp-builder 32 19 / 17.7 / 55 90 / 136 35.9 3 % 8 24
lp-writer 18 16.5 / 17.6 / 36 91 / 257 25.3 11 % 17 1
lp-impl 16 23 / 23.3 / 36 206 / 364 55.4 12 % 9 7
lp-cart 14 36.5 / 37.1 / 64 307 / 451 92.2 79 % 5 9
lp-inventory 7 20 / 22.9 / 57 106 / 254 14.2 29 % 6 1
lp-diag 5 31 / 29.8 / 40 171 / 193 16.6 60 % 0 5
opus-xhigh 1 18 233 2.9 0 % 1 0
essais (essai-bash 4, essai-pwsh 3, mcpa-probe-* 8, general-purpose 2) 17 1-4 ≤ 66 0.4 0 % 17 0
TOTAL 258 19 / 22.1 / 82 103 / 451 562.4 23 % 117 141

P3a : tours med 15 / moy 16.9 / max 82, 194.6 M, 16 % hors budget (4 % sur les tours, 15 % sur le pic). P3b : med 23 / moy 26.4 / max 65, 367.9 M, 29 % hors budget (13 % tours, 21 % pic). Pic > 150 k : P3 61/258 (55 % des jetons), P3a 25/117 (65 %), P3b 36/141 (50 %). Erreurs d'outil : 264/8983 résultats (2.9 %) ; P3a 3.4 %, P3b 2.7 %.

2.3 Par modèle (famille du modèle majoritaire des messages)

famille P3 agents / jetons M / tours P3a agents / jetons M (part jetons) P3b agents / jetons M (part jetons) % hors budget P3 (P3a / P3b)
sonnet-5-5 155 (60 %) / 294.8 (52 %) / 2906 (51 %) 84 / 128.0 (66 %) 71 / 166.8 (45 %) 23 % (18 % / 30 %)
opus-5-5 61 (24 %) / 231.3 (41 %) / 2215 (39 %) 15 / 60.6 (31 %) 46 / 170.7 (46 %) 38 % (27 % / 41 %)
haiku-5-5 42 (16 %) / 36.3 (6 %) / 586 (10 %) 18 / 6.0 (3 %) 24 / 30.4 (8 %) 2 % (0 % / 4 %)
Aucun autre modèle (pas de fable). Tours moyens par famille sur P3 : sonnet 18.7, opus 36.3, haiku 14.0.

2.4 Par niveau (EVAL : « Niveau Nx » lu dans la fiche, sinon déduit ; ? = déduit)

niveau P3 n tours med / moy pic med (k) % hors budget P3a n P3b n
N0 7 12 / 13.1 84 0 % 0 7
N1 (lu) 36 13.5 / 15.4 84 3 % 9 27
N1? (déduit) 174 18 / 20.9 100 25 % 93 81
N3 (lu) 13 54 / 46.8 122 23 % 0 13
N3? (déduit) 28 30 / 28.9 240 43 % 15 13
N2, N4, N5 0 0 0
Piège de définition (hérité de FicheStats.level_of, laissé tel quel pour comparer à l'EVAL) : lp-mcp-bp et lp-diag ne sont pas dans AGENTS_N3 ; sans « Niveau Nx » dans l'en-tête de la fiche, ils sont classés N1 (budget 40 tours / 150 k) alors que leur maxTurns est 75. Les passages lp-mcp-bp sans niveau lu sont classés N1 : leur 43 % de « tours > budget » est mesuré contre 40 ; contre 60 (budget N3) le relevé donne 5 passages au-dessus (tours 82, 65, 63, 62, 62), soit 14 % de 37.

2.5 Coupés, maxTurns, escalades

  • Coupés sans compte rendu (dernier message = outil/vide) : 1 sur 258 : REG1-T1 (lp-inventory, P3a, 16 tours, loin du plafond). Dernier message : handback 239, texte 18.
  • Tours ≥ plafond de niveau (50 N0-N2, 75 N3-N5) : 13 (P3a 4, P3b 9), dont 10 lp-mcp-bp (artefact du niveau déduit N1). Tours mesurés ≥ maxTurns de l'en-tête de l'agent : 4 (P3a 3, P3b 1) — ARCH427-T1 (lp-inventory, 57 / 50), OUTC-T4b (lp-validator, 57 / 50), lp-mcp-bp STE-H10-GI1 (82 / 75), lp-builder « Build COMMUN-9 » (55 / 50). Les 4 ont rendu un compte rendu (handback ou texte). La mesure (messages assistant distincts avec usage) dépasse donc le plafond sans que l'agent soit coupé : maxTurns n'est pas journalisé dans les transcriptions (Grep max_turns|Reached max|maximum number of turns|max turns sur D--Game-LifePlay-master-5-8 : 1 occurrence, dans un fichier de la session EVAL, exclue) ; le nombre de coupes réelles par maxTurns est incertain, 0 prouvée.
  • Escalades (lp-cart-max, lp-impl-max, opus-max, fable-top) : 0 sur P3, P3a et P3b. Seul opus-xhigh : 1 (P7-T4b, P3a, N3, 18 tours, 233 k, handback). Paires par fiche lp-cart → lp-cart-max : 0 / 0 ; lp-impl → lp-impl-max : 9 fiches de base, 0 escalade. Escalades « par modèle » : l'en-tête de lp-cart est sonnet mais 4 lp-cart ont tourné sur opus (P3a) ; l'en-tête de lp-impl est opus mais 2 lp-impl ont tourné sur sonnet (P3a) : 6 agents dont la famille observée diffère de l'en-tête (cause non lue).
  • Reprises : SendMessage 40 sur 37 agents (37 après un arrêt) ; reprises après arrêt, tous messages confondus : 45 sur 38 agents.

2.6 Agents de build (lp-builder) arrêtés par la limite de tours — liste nominative

32 lp-builder (P3a 8, P3b 24). Critère A : tours mesurés ≥ 50 (maxTurns de l'en-tête) ; critère B : dernier message = outil/vide.

fiche / description début tours mesurés tours déclarés / budget dernier message transcription
(aucun identifiant) « Build COMMUN-9 », session 8d9744a8 (STG) 2026-10-14 11:42 55 (60 appels, 5.4 min, pic 107 k) 40 / 40 handback, « Résultat : réussi avec un écart. Build 0 erreur, paquet code 0… » %USERPROFILE%\.claude\projects\D--Game-LifePlay-master-5-8\8d9744a8-a87e-4585-95b9-b685062a77f3\subagents\agent-a9c185f0cb100b851.jsonl
Critère A : 1 (le cas COMMUN-9) ; critère B : 0 ; A et B : 0. Aucun lp-builder n'a été coupé sans compte rendu. COMMUN-9 a dépassé le budget de la fiche (mesuré 55 contre 40 déclaré : sous-comptage de 15 tours) et le plafond de 50 par la mesure, mais a livré (« Tours : 40 / 40 » déclaré ; mention d'une limite dans le message : 0). Fiche non reconnue par le motif (description « Build COMMUN-9 », sans identifiant LOT-Tn) ; la fiche d'origine est à chercher dans le registre de la session STG (non fait ici). Autres builders proches : COMMUN-7 32 tours (déclaré 31 / 40), « Dumps TopRight (GEL1-D1) » 19 tours (déclaré 18 / 15). Aucun autre builder au-dessus de 40 tours. Par période : P3a 0, P3b 1. lp-builder P3a : tours med 11 / moy 11.2 / max 29 ; P3b : 19 / 19.9 / 55.

2.7 Agents arrêtés par un refus du crochet

Comptes (P3 : P3a / P3b) : refus ecriture-gardien 83 sur 57 agents (23 sur 16 / 60 sur 41) ; refus du crochet lp-mcp (lecture) 1 sur 1 agent (MCPA-T1h, P3a, sonde mcpa-probe-garde2) ; refus de permission par heuristique de texte d'erreur 23 sur 12 agents (22 / 1) ; décisions de permission non accept : 106 (47 / 59). Détection : texte du résultat d'outil commençant par « Refus du crochet ecriture-gardien » (script %USERPROFILE%\.claude\hooks\ecriture-gardien.py l. 153-154). Agents arrêtés par un refus (critère : le dernier résultat d'outil de la transcription est un refus et l'agent a fini par un texte ou un handback qui mentionne un refus) : 6, tous en P3a, tous des essais volontaires du crochet (P7) : lp-builder en copie jetable (2026-10-12 23:08, agent a41511601853033f7), essai-bash ×3 (23:17, 23:18, 23:19), essai-pwsh ×2 (23:19, 23:20). Les 6 transcriptions sont listées avec leur chemin dans subagents-aggregats.md (section « Refus du crochet »). Aucun agent de production n'est arrêté net par ce critère (0 en P3b). Mais 51 agents (57 − 6) ont reçu au moins un refus et ont continué ; deux cas concordent avec ORGA2-PROPOSITION § 1 (« 2 passages perdus sur refus », STE-H10-GI2) : lp-mcp-bp « STE-H10-GI1 » (2026-10-13 00:19, 15 tours, 1 refus) et « STE-H10-GI2 » (00:48, 51 tours, 1 refus). Le critère « dernier résultat = refus » ne détecte pas un agent qui rend la main après un refus suivi d'autres appels : à confirmer par lecture des transcriptions listées. La colonne « dernier message mentionne refus » compte aussi « aucun refus » : ne pas la lire comme un arrêt.

2.8 Usage par modèle rapporté à ORGA2-PROPOSITION (etat\AG\ORGA2\ORGA2-PROPOSITION.md)

La proposition (§ 1, § 2, § 6) pose : BUILD déjà au plancher (haiku), CART/VAL/DOC/gardien sonnet, DIAG et IMPL opus, lp-mcp-bp opus xhigh ; seule baisse à fort volume visée = lp-mcp-bp (« 16 passages relevés en trois jours », 6 à ≤ 3 tours du budget, 1 arrêt faute de budget, 2 passages perdus sur refus). Comparaison mesurée sur P3 :

point de la proposition mesure P3
lp-mcp-bp = Opus xhigh 37 passages Opus (3 en P3a, 34 en P3b), tous opus-5-5 ; 144.2 M = 26 % des jetons de P3 et 62 % des jetons Opus (Opus hors lp-mcp-bp : 87.1 M)
« 16 passages » 37 sur P3 (période plus longue que celle relevée par la proposition, qui s'arrête au 2026-10-13)
passages à 3 tours du budget (60) ou au-delà 5 passages à plus de 60 tours mesurés (82, 65, 63, 62, 62) ; le nombre à ≥ 57 n'est pas compté séparément
lp-mcp-bp tours moyenne 43.6, médiane 44, max 82 (mesurés ; budget 60, plafond 75)
BUILD haiku inchangé 32 lp-builder, tous haiku ; 3 % hors budget ; 0 coupé
VAL sonnet 77 lp-validator, tous sonnet ; 142.1 M (25 % des jetons) ; 26 % hors budget ; médiane 16 tours
gardien sonnet 34, tous sonnet ; 14 tours médians ; 6 % hors budget
CART sonnet xhigh « hors budget dans 55 % des cas » lp-cart : 79 % hors budget (11/14 par le total des deux critères) ; 10 sonnet + 4 opus
IMPL opus lp-impl 16 : 14 opus + 2 sonnet ; 12 % hors budget
DIAG opus lp-diag 5, tous opus, 60 % hors budget (pic > 150 k, niveau déduit N1)
Part des familles sur P3 : sonnet 60 % des agents / 52 % des jetons ; opus 24 % / 41 % ; haiku 16 % / 6 %. De P3a à P3b la part Opus des jetons passe de 31 % à 46 %, la part Sonnet de 66 % à 45 % (effet du sprint COMMUN : 34 passages lp-mcp-bp en P3b). Aucun essai lp-mcp-bp-s (Sonnet) dans P3 (aucun type d'agent de ce nom).

2.9 Sensibilité à la coupure (agents P3a / P3b selon l'heure de coupure le 2026-10-13)

coupure P3a n P3b n P3a jetons M P3b jetons M
00:00 78 180 102.3 460.2
06:00 88 170 124.9 437.5
08:00 94 164 139.7 422.8
10:00 (ancienne coupure provisoire) 104 154 174.8 387.6
12:07 (coupure exacte, ligne 12:00 = 117 / 141, mêmes chiffres) 117 141 194.6 367.9
14:00 125 133 206.5 355.9
18:00 152 106 293.3 269.2
La coupure exacte déplace 13 agents de P3b vers P3a par rapport à la coupure provisoire de 10:00 (+19.8 M jetons en P3a). Les 3 passages lp-mcp-bp de P3a sont du 2026-10-13 00:19 à 00:48 ; STE-H3d (12:47) et les suivants restent en P3b.

2.10 Ce qui n'est pas mesuré ici

  • Contenu des fiches, correspondance fiche → registre <LOT>-TACHES.md (140 agents sur 258 sans identifiant de fiche reconnu ; description et titre de session donnent le lot dans la plupart des cas, colonnes description et session_titre du CSV).
  • Tours déclarés vs mesurés : 188 agents avec ligne « Tours : n / b » ; écart mesuré − déclaré : médiane +2, moyenne +2.9, min −3, max +57 ; mesure > déclaré pour 136, égal 42, inférieur 10. 6 agents déclarent plus que leur budget (OUTC-T4b 57/55, CAM-B2b-F5 62/60, STE-ORG 63/60, GEL1-D1 18/15, CAM-B2n 63/60, B2p-I 42/40). Le sous-comptage déjà relevé en OBB persiste.
  • Refus du mode auto : seulement les décisions de permission journalisées et l'heuristique de texte ; aucun comptage fiable.

3. Écarts au compte attendu de la fiche

  • La coupure est exacte (12:07:16, passée à la minute près, sans effet sur les 258 agents).
  • La fiche attendait un niveau N0-N5 par agent : N2, N4 et N5 n'apparaissent pas (0) ; 202 niveaux sont déduits par level_of (définition EVAL).
  • « Agents de build arrêtés par la limite de tours (cas connu COMMUN-9) » : le cas est retrouvé (55 tours mesurés) mais non coupé : le compte rendu est rendu. Rien ne prouve un arrêt par maxTurns pour aucun agent de P3.
  • Escalades : 0 pour lp-cart-max, lp-impl-max, opus-max, fable-top ; zéro vérifié sur la colonne type_agent du CSV (258 lignes).
  • Table session ↔ transcription lue : 67 fichiers, 65 titres ; 24 sessions parentes sans titre. Docs-Migration-etat-AG-P7 : dossier lu, 0 sous-agent.
  • Les chiffres FicheStats ne sont pas rejoués par --lot ici ; le contrôle measure() donne 0 écart sur 258.

4. Établi / estimé / incertain

Établi (sortie des scripts) : 258 agents retenus (CSV 258 lignes, Grep) ; P3a 117 + P3b 141 ; 5 dossiers de projet lus, 630 transcriptions vues ; contrôle FicheStats.measure 0 écart ; répartition par type, modèle, niveau (définitions EVAL) ; 0 escalade *-max/fable-top, 1 opus-xhigh ; 1 coupé sans compte rendu (REG1-T1) ; COMMUN-9 : 55 tours mesurés, compte rendu rendu (agent-a9c185f0cb100b851.jsonl) ; texte du refus lu dans ecriture-gardien.py l. 153-154 ; fichiers de sortie en LF (0 CR sur la première version ; non recontrôlé après relance, les scripts écrivent en LF). Estimé : arrêt par maxTurns (la mesure dépasse le plafond de 5 à 7 tours sans coupure observée) ; « arrêtés par refus » = 6 d'après le critère « dernier résultat = refus » (essais P7 volontaires) ; la part des refus à tort ou utiles relève de EVAL2-T6 ; la cause des 6 écarts modèle observé / en-tête n'est pas lue. Incertain (essai qui trancherait) : (a) coupures réelles par maxTurns : lire la fin des transcriptions des 4 agents ≥ plafond ; (b) agents de production arrêtés par un refus puis relancés : lire les 51 transcriptions à refus, ou croiser avec refus.csv de T6 ; (c) niveau des 202 agents déduits : croiser avec les registres *-TACHES.md ; (d) 283 transcriptions modifiées dans la fenêtre (find -newermt, mtime) contre 258 + 13 exclues = 271 par premier événement : écart attendu, non élucidé fichier par fichier.

Fichiers à commiter

Aucun par cet agent (pas de git). Fichiers écrits ou réécrits, sous D:\Game\LifePlay-master 5.8\Docs\Migration\etat\EVAL2\ (A, dépôt du jeu ; le gardien décide) : EVAL2-T1b-INV.md ; data\subagents.csv ; data\subagents-aggregats.md ; data\subagents-sessions.md ; scripts\eval2_subagents.py ; scripts\eval2_subagents_sessions.py.

Tours : 31 / 40 (cumul des deux passes : 25 + 6)

Constats

  • Piège du Python du Store : AppData\Roaming invisible (voir § 1) → utiliser D:\Game\Launcher\Engine\UE_5.8\Engine\Binaries\ThirdParty\Python3\Win64\python.exe.
  • FicheStats.AGENTS_N3 ignore lp-mcp-bp, lp-diag, lp-cart-max : leurs budgets sont mal classés en « hors budget » sans ligne « Niveau Nx ».
  • --coupure n'accepte que AAAA-MM-JJ HH:MM (pas de secondes) : limite du script, sans effet ici.