19 KiB
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 ≥maxTurnsde 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-bpSTE-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é :maxTurnsn'est pas journalisé dans les transcriptions (Grepmax_turns|Reached max|maximum number of turns|max turnssurD--Game-LifePlay-master-5-8: 1 occurrence, dans un fichier de la session EVAL, exclue) ; le nombre de coupes réelles parmaxTurnsest 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 delp-cartest sonnet mais 4lp-cartont tourné sur opus (P3a) ; l'en-tête delp-implest opus mais 2lp-implont 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, colonnesdescriptionetsession_titredu 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
maxTurnspour aucun agent de P3. - Escalades : 0 pour
lp-cart-max,lp-impl-max,opus-max,fable-top; zéro vérifié sur la colonnetype_agentdu 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
--lotici ; le contrôlemeasure()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\Roaminginvisible (voir § 1) → utiliserD:\Game\Launcher\Engine\UE_5.8\Engine\Binaries\ThirdParty\Python3\Win64\python.exe. FicheStats.AGENTS_N3ignorelp-mcp-bp,lp-diag,lp-cart-max: leurs budgets sont mal classés en « hors budget » sans ligne « Niveau Nx ».--coupuren'accepte queAAAA-MM-JJ HH:MM(pas de secondes) : limite du script, sans effet ici.