Fiche EVAL-T6 — Niveau N1 — Modèle prévu sonnet | utilisé Sonnet 5.5 (claude-sonnet-5-5) — Agent lp-inventory — Skills sk-protocol, sk-recount, sk-windows-shell (+ lp-paths préchargé) # EVAL-T6-INV : commandes et contrôles répétés dans les transcriptions, usage et création de `Tools\*` (2026-10-11) Fenêtre : 2026-10-08 05:30 → 2026-10-11 05:30 (UTC+2) ; P0 → 2026-10-08 13:30, P1 → 2026-10-10 10:45:20, P2 → fin. Session `b339a92a` et ses sous-agents exclus. Les chemins personnels et le contenu des commandes ne sont pas repris : seuls les motifs normalisés sont cités. ## 1. Commandes exactes Commande unique, rejouable (PowerShell ou Git Bash, ≈ 16 s, code de sortie 0, stderr vide) : ``` python -I -X utf8 "D:\Game\LifePlay-master 5.8\Docs\Migration\etat\EVAL\scripts\eval_commandes.py" ``` Le script lit `%USERPROFILE%\.claude\projects\D--Game-LifePlay-master-5-8\` et `...\D--Game-LifePlay-master-5-5\` (`*.jsonl` et `\subagents\agent-*.jsonl` + `.meta.json`), lit `data\sessions.csv` et `data\subagents.csv` (lecture seule), liste `Tools\` (premier niveau, 25 fichiers) et lance, par fichier : `git -C "D:\Game\LifePlay-master 5.8" log --diff-filter=A --format="%h|%ad|%s" --date=iso -- Tools/` (lecture seule). Il écrit `data\commands.csv`, `data\commands_prefixes.csv`, `data\commands_tools.csv`, `data\commands_resume.txt` (noms neufs, aucun écrasement). Sortie complète : `data\commands_resume.txt`. Méthode : un appel = un bloc `tool_use` (identifiant dédoublonné sur l'ensemble des fichiers), horodaté à la ligne de transcription, retenu si dans la fenêtre. Durée = horodatage du `tool_result` (même `tool_use_id`) moins celui du `tool_use`. Acteur = `principale` ou `agentType` du `.meta.json`. Fiche d'un sous-agent = colonne `fiche` de `subagents.csv`, à défaut le premier identifiant `LOT-Tn` de la description du `.meta.json`. Une famille compte au plus une fois par appel. Regex insensibles à la casse (sauf `f.VERROU`), appliquées au champ `command` de Bash et PowerShell (« shell »), sauf mention. Regex par famille (`GIT` = `\bgit(\s+(-C|-c|--git-dir|--work-tree)(=|\s+)("[^"]*"|'[^']*'|\S+))*\s+`) : - (a) `Get-FileHash` ; `\bmd5sum\b` ; `\bsha(1|224|256|384|512)sum\b` ; `certutil(\.exe)?\s+[^\n]*-hashfile` ; info : `hashlib\.(md5|sha\d*)`. - (b) `(Get-CimInstance|Get-WmiObject)[\s\S]{0,200}?Win32_Process` ; `Get-Process\b[^\n]*(unreal|lifeplay)` ; `\btasklist\b` ; info : `\bStop-Process\b|\btaskkill\b`. - (c) `GIT status\b` ; `GIT diff\b[^\n|;&]*--(stat|numstat|name-status)\b` ; `GIT log\b` ; `GIT show\b[^\n|;&]*--name-status` ; `GIT ls-files\b[^\n|;&]*--eol` ; comptes de CR : `tr\s+-d\s+\S*\\r|\$'\\r|\[char\]\s*13|\bb['"]\\r['"]|\.count\(\s*b?['"]\\r|`r\b|0x0d\b|grep\s+-c\S*\s+\S*\\r`. - (d) un motif par fichier de `Tools\` : `(?(?![\w])` (correspondance sur le nom, quel que soit le dossier) ; `UnrealEditor-Cmd|-run=\w+` sans `RunCommandlet\.ps1` dans la même commande ; `\bRunUAT\b|\bBuildCookRun\b` sans `BuildDebug\.ps1`. - (e) shell **et** outil Grep (champs pattern + path + glob) ; motif `Accessed\s+None`, `LogBlueprint`, `LogScript`, `\bError:`, `\bWarning:` ET contexte `\.log\b|[\\/]Logs[\\/]|Saved[\\/]Logs` ; variante « avec compte » : contexte journal + (`grep\s+-[a-z]*c|Measure-Object|\.Count\b|-Count\b|\bwc\s+-l|output_mode.{0,4}count`) + un des cinq motifs. - (f) tous outils texte (shell ; Read / Edit / Write : `file_path` ; Grep : pattern + path ; Glob) : `VERROU` (casse exacte), `NUMEROS\.md`, `REPO-JOURNAL\.md`, info `etat[\\/]+REPO\b` ; shell seul : `(\bmkdir\b|New-Item|\bmd\b|Remove-Item|\brmdir\b)[^\n]*verrou`. - (g) `(Get-ChildItem|\bgci\b|\bdir\b|\bls\b)[\s\S]*?-Recurse[\s\S]*?Measure-Object[\s\S]*?-Sum` ; `(^|[\s;|&])du\s+-[a-zA-Z]*[sh]` ; info : `LifePlay_Build\w*` proche de `Measure-Object|LastWriteTime|du |ls -l`. - (h) `\b(python3?|py)(\.exe)?\b[^\n|;]*?\s-\s*<<` (heredoc) ; `\|\s*(python3?|py)(\.exe)?\b[^\n|]*\s-(\s|$)` (here-string redirigée) ; `python … -c "` ou `'` avec commande > 200 caractères ; outil Write vers `.py|.ps1|.sh|.bat|.cmd` hors `Tools\` ; « lancé après écriture » : commande shell contenant le chemin complet d'un script écrit plus tôt dans la même transcription. - (i) outils `ListAgents` et `SendMessage` (par nom d'outil, pas Bash). - Préfixes : première commande de la commande, après retrait des `cd …`, des affectations `VAR=…` / `$x = …`, des options `-…` ; deux premiers mots en minuscules ; chemin → `` (ou nom du script si extension `ps1|py|sh|bat|cmd|exe|js`), chaîne entre guillemets → ``, variable → ``. Recoupements (deuxième méthode, sk-recount) : script indépendant (parcours `os.walk`, fenêtre comparée en UTC sur chaîne, sous-chaînes sans regex) conservé dans le bac à sable de la session, non versionné ; sorties au § 3. Comptes de `commands_tools.csv` relus par `python -I -X utf8 -c` (somme des appels 1 185 ; 14 scripts à 34 appels ou moins ; 5 à 2 appels ou moins). ## 2. Comptes bruts ### 2.1 Population examinée | Élément | Valeur | |---|---| | Fichiers principaux lus (hors `b339a92a`) / sous-agents | 39 / 361 | | `tool_use` bruts / identifiants en double ignorés / dans la fenêtre | 25 807 / 1 365 / **17 890** (principale 6 897, sous-agents 10 993) | | **Bash + PowerShell examinés** | **7 764** (Bash 6 946, PowerShell 818 ; principale 2 966, sous-agents 4 798 ; P0 395, P1 4 611, P2 2 758) | | Durée mesurée des appels shell | n = 7 763, moyenne 7,3 s, médiane 1,6 s, somme 15,7 h | | Sous-agents absents de `subagents.csv` | 101 fichiers ; fiche reprise de la description : 44 ; **35 agents / 1 838 appels de la fenêtre sans fiche** (lp-cart 1 223, lp-builder 347, lp-validator 152, lp-inventory 60, lp-impl 54, lp-writer 1) | Recoupement : `sessions.csv` donne Bash+PowerShell = 2 966 et tous outils = 6 897 pour les principales (34 sessions, 0 écart par session) ; mesure ici 2 966 et 6 897. Sous-agents : `subagents.csv` somme de `appels_outils` = 11 007 ; mesure ici 10 993 (écart 14, 0,13 %). ### 2.2 Familles (hors scripts `Tools\`, voir 2.3) Colonnes : total | principale | sous-agents | P0 / P1 / P2 | sessions-agents distincts | fiches distinctes | durée moyenne / médiane (s) | coût brut = appels × moyenne (h). Les lignes en gras sont l'union des appels de la famille (un appel multi-motifs compté une fois). | Famille / motif | Total | Princ. | Sous-ag. | P0 / P1 / P2 | Unités | Fiches | Durée moy / méd | Coût (h) | |---|---|---|---|---|---|---|---|---| | **a. empreintes (union)** | 543 | 256 | 287 | 0 / 164 / 379 | 138 | 90 | 5,6 / 2,3 | 0,85 | | a.md5sum | 314 | 137 | 177 | 0 / 86 / 228 | 93 | 62 | 5,1 / 2,2 | 0,45 | | a.Get-FileHash | 196 | 111 | 85 | 0 / 51 / 145 | 48 | 25 | 6,7 / 2,4 | 0,37 | | a.sha*sum | 28 | 10 | 18 | 0 / 19 / 9 | 17 | 12 | 9,1 / 3,5 | 0,07 | | a.certutil -hashfile | 4 | 1 | 3 | 0 / 1 / 3 | 3 | 2 | 3,7 / 3,6 | 0,00 | | a.hashlib (info) | 12 | 4 | 8 | 0 / 11 / 1 | 8 | 6 | 1,8 / 1,5 | 0,01 | | **b. processus (union)** | 455 | 216 | 239 | 9 / 222 / 224 | 75 | 55 | 10,2 / 2,1 | 1,29 | | b.Get-CimInstance Win32_Process | 107 | 49 | 58 | 4 / 20 / 83 | 24 | 15 | 17,8 / 2,0 | 0,53 | | b.Get-Process Unreal/LifePlay | 172 | 80 | 92 | 4 / 97 / 71 | 46 | 31 | 8,1 / 2,1 | 0,39 | | b.tasklist | 173 | 80 | 93 | 1 / 107 / 65 | 41 | 31 | 7,4 / 2,2 | 0,36 | | b.Stop-Process / taskkill (info) | 30 | 21 | 9 | 1 / 13 / 16 | 12 | 6 | 14,8 / 7,6 | 0,12 | | **c. état git, fins de ligne (union)** | 1 794 | 827 | 967 | 33 / 778 / 983 | 248 | 180 | 3,2 / 1,9 | 1,60 | | c.git status | 1 156 | 569 | 587 | 17 / 498 / 641 | 235 | 171 | 3,0 / 2,0 | 0,97 | | c.git log | 610 | 357 | 253 | 15 / 289 / 306 | 176 | 121 | 3,0 / 2,0 | 0,51 | | c.git diff --stat/--numstat/--name-status | 476 | 183 | 293 | 6 / 204 / 266 | 145 | 109 | 2,9 / 1,9 | 0,39 | | c.comptes de CR | 248 | 84 | 164 | 5 / 127 / 116 | 86 | 67 | 3,9 / 1,7 | 0,27 | | c.git ls-files --eol | 109 | 27 | 82 | 0 / 23 / 86 | 53 | 41 | 2,2 / 1,7 | 0,07 | | c.git show --name-status | 70 | 27 | 43 | 0 / 0 / 70 | 36 | 28 | 3,0 / 2,4 | 0,06 | | **d. scripts, union (25 scripts de 2.3 + les deux lignes ci-dessous)** | 996 | 407 | 589 | 9 / 572 / 415 | 155 | 102 | 13,3 / 2,2 | 3,68 | | d.UnrealEditor-Cmd / -run= sans RunCommandlet.ps1 | 68 | 31 | 37 | 0 / 38 / 30 | 22 | 18 | 9,2 / 1,7 | 0,17 | | d.RunUAT / BuildCookRun sans BuildDebug.ps1 | 32 | 9 | 23 | 3 / 20 / 9 | 20 | 14 | 17,8 / 1,6 | 0,16 | | **e. journaux, shell + Grep (union)** | 272 | 83 | 189 | 1 / 160 / 111 | 72 | 43 | 2,0 / 1,5 | 0,15 | | e.Warning: | 124 | 16 | 108 | 1 / 84 / 39 | 47 | 34 | 1,9 / 1,3 | 0,07 | | e.Error: | 101 | 20 | 81 | 0 / 72 / 29 | 50 | 35 | 2,2 / 1,8 | 0,06 | | e.Accessed None | 82 | 39 | 43 | 0 / 41 / 41 | 25 | 8 | 1,9 / 1,4 | 0,04 | | e.LogBlueprint | 32 | 11 | 21 | 0 / 5 / 27 | 18 | 7 | 2,3 / 1,6 | 0,02 | | e.LogScript | 27 | 9 | 18 | 0 / 13 / 14 | 9 | 4 | 2,0 / 2,0 | 0,01 | | e.avec compte (sous-ensemble) | 126 | 53 | 73 | 1 / 76 / 49 | 40 | 27 | 2,7 / 1,9 | 0,09 | | **f. verrou, tickets, tous outils (union)** | 1 085 | 363 | 722 | 0 / 26 / 1 059 | 78 | 65 | 2,2 / 1,6 | 0,68 | | f.dossier etat/REPO (info) | 1 045 | 339 | 706 | 0 / 21 / 1 024 | 77 | 65 | 2,2 / 1,6 | 0,65 | | f.VERROU | 323 | 116 | 207 | 0 / 12 / 311 | 68 | 56 | 2,0 / 1,7 | 0,18 | | f.NUMEROS.md | 292 | 130 | 162 | 0 / 6 / 286 | 51 | 40 | 2,2 / 1,8 | 0,18 | | f.REPO-JOURNAL.md | 285 | 28 | 257 | 0 / 2 / 283 | 58 | 49 | 1,9 / 1,6 | 0,15 | | f.mkdir / New-Item / Remove verrou | 141 | 70 | 71 | 0 / 4 / 137 | 49 | 37 | 2,1 / 1,8 | 0,08 | | **g. taille / date de build (union)** | 252 | 128 | 124 | 8 / 145 / 99 | 74 | 50 | 8,1 / 2,4 | 0,57 | | g.dossier de build + taille/date (info) | 203 | 114 | 89 | 1 / 114 / 88 | 53 | 33 | 6,3 / 2,2 | 0,35 | | g.gci -Recurse … Measure-Object -Sum | 54 | 12 | 42 | 2 / 34 / 18 | 33 | 22 | 4,5 / 3,1 | 0,07 | | g.du | 36 | 21 | 15 | 5 / 21 / 10 | 21 | 12 | 26,1 / 4,8 | 0,26 | | **h. Python, scripts temporaires (union)** | 684 | 311 | 373 | 4 / 443 / 237 | 106 | 75 | 4,1 / 1,6 | 0,78 | | h.python heredoc | 282 | 201 | 81 | 3 / 162 / 117 | 45 | 22 | 4,2 / 1,8 | 0,33 | | h.python -c > 200 car. | 189 | 70 | 119 | 0 / 149 / 40 | 67 | 47 | 2,9 / 1,7 | 0,15 | | h.Write de script (.py/.ps1/.sh/.bat hors Tools) | 135 | 26 | 109 | 0 / 78 / 57 | 45 | 34 | 0,3 / 0,0 | 0,01 | | h.script lancé après écriture (même transcription) | 92 | 17 | 75 | 0 / 67 / 25 | 33 | 26 | 12,1 / 1,9 | 0,31 | | h.here-string redirigée vers python | 1 | 1 | 0 | 1 / 0 / 0 | 1 | 0 | 2,2 / 2,2 | 0,00 | | **i. SendMessage** | 696 | 696 | 0 | 4 / 183 / 509 | 28 | 0 (la principale n'a pas de fiche) | 2,6 / 1,6 | 0,51 | | i.ListAgents | 24 | 24 | 0 | 0 / 12 / 12 | 7 | 0 | 0,5 / 0,0 | 0,00 | Composition par outil, relevée avec le script (sonde de la session, hors dépôt) : f = shell 677 sur 1 085, outils de fichier 408 (pour le seul motif `etat/REPO` : Edit 237, Read 106, Write 47, Grep 11, Glob 1) ; e = shell 186 sur 272, Grep 86. Les autres familles sont du shell seul, sauf h.Write. Acteurs dominants (extrait de `commands_resume.txt`, 4 premiers) : git status : principale 569, lp-gardien 185, lp-validator 129, lp-builder 85 ; git log : principale 357, lp-gardien 70, lp-validator 48, lp-cart 43 ; diff : principale 183, lp-gardien 121, lp-validator 77, lp-impl 34 ; comptes de CR : principale 84, lp-impl 51, lp-gardien 47, lp-validator 19 ; md5sum : principale 137, lp-validator 52, lp-gardien 42, lp-impl 37 ; Get-FileHash : principale 111, lp-builder 62, lp-validator 17, lp-inventory 6 ; processus (CIM) : principale 49, lp-builder 36, lp-validator 11, lp-gardien 5 ; tasklist : principale 80, lp-builder 40, lp-validator 22, lp-impl 14 ; Warning: lp-builder 42, lp-validator 32, lp-cart 18, principale 16 ; Accessed None : principale 39, lp-cart 25, lp-validator 14, lp-inventory 4 ; VERROU : lp-gardien 152, principale 116, lp-writer 53 ; REPO-JOURNAL : lp-gardien 254, principale 28 ; python heredoc : principale 201, lp-cart 31, lp-validator 22, lp-impl 9 ; python -c long : principale 70, lp-cart 37, lp-validator 26, lp-impl 18 ; script écrit puis lancé : lp-builder 23, lp-impl 23, lp-validator 20, principale 17. Lots les plus concernés (shell, d'après la sonde sur `commands.csv` ; lot « - » = principale ou agent sans lot) : c : U8 105, OBB 102, ETAT2 72, STE 59 ; f : OBB 90, STE 57, STF 52, AG 49 ; a : U8 43, ETAT2 25, OBB 23, U7b 23 ; b : U7b 40, U4 27, U8 25, U5 24 ; g : OBB 30, U8 28, U7 22 ; h : U7b 40, U7 35, U1 26, U8 23. Part des appels shell par sous-période (union de la famille ÷ appels shell de la période : P0 395, P1 4 611, P2 2 758) : c 8,4 % → 16,9 % → 35,6 % ; a 0 % → 3,6 % → 13,7 % ; b 2,3 % → 4,8 % → 8,1 %. ### 2.3 Scripts de `Tools\` (premier niveau, 25 fichiers) : usage dans la fenêtre et création git Appels = mention du nom dans la commande shell (exécution ou lecture), pas toujours une exécution. « Accès » = Read / Edit / Write / Grep / Glob dont le texte porte le nom. Création = `git log --diff-filter=A` (le plus ancien commit d'ajout) ; lot = étiquette du sujet du commit. Ordre : appels décroissants. | Fichier | Commit | Création (+0200) | Lot (sujet) | Appels P0 / P1 / P2 | Total | Princ. / Sous-ag. | Accès | Unités | Fiches | |---|---|---|---|---|---|---|---|---|---| | RunCommandlet.ps1 | 9b7e971 | 2026-09-29 01:12 | L1 | 1 / 104 / 75 | 180 | 38 / 142 | 23 | 52 | 33 | | UeState.ps1 | 866e869 | 2026-10-09 16:37 | OUT1 | 0 / 75 / 86 | 161 | 62 / 99 | 2 | 44 | 22 | | Build.ps1 | 8e21f6b | 2026-10-08 17:39 | U3 | 0 / 100 / 25 | 125 | 47 / 78 | 17 | 51 | 32 | | Snapshot.ps1 | 1122e17 | 2026-09-29 00:56 | L0 | 2 / 85 / 34 | 121 | 97 / 24 | 7 | 37 | 10 | | LogStats.ps1 | 39fac16 | 2026-09-29 01:01 | L0 | 1 / 55 / 12 | 68 | 28 / 40 | 13 | 26 | 18 | | Engine.ps1 | 26f2be7 | 2026-10-08 16:37 | U2 | 0 / 51 / 9 | 60 | 20 / 40 | 3 | 27 | 19 | | FileCheck.ps1 | 866e869 | 2026-10-09 16:37 | OUT1 | 0 / 37 / 23 | 60 | 30 / 30 | 2 | 20 | 11 | | BuildDebug.ps1 | b8414af | 2026-10-07 15:49 | Dbg | 1 / 35 / 21 | 57 | 23 / 34 | 10 | 26 | 11 | | EtatDir.ps1 | 1d1d283 | 2026-10-09 15:18 | ETAT2 | 0 / 42 / 8 | 50 | 26 / 24 | 15 | 15 | 6 | | CheckIntegrity.ps1 | 39fac16 | 2026-09-29 01:01 | L0 | 2 / 17 / 28 | 47 | 13 / 34 | 15 | 21 | 15 | | uasset58.py | 2883b80 | 2026-10-10 13:22 | STF | 0 / 0 / 40 | 40 | 14 / 26 | 6 | 9 | 3 | | CheckPackage.ps1 | 6eb1544 | 2026-10-10 11:36 | OBB | 0 / 0 / 34 | 34 | 8 / 26 | 13 | 13 | 10 | | FicheStats.py | 80022ad | 2026-10-09 17:48 | TPL1 | 0 / 20 / 12 | 32 | 22 / 10 | 11 | 10 | 4 | | ReimportCorrectif.ps1 | 9cf045e | 2026-09-29 02:09 | Tools | 0 / 28 / 4 | 32 | 5 / 27 | 13 | 14 | 11 | | uasset.py | 8c6149e | 2026-10-09 16:38 | OUT1 | 0 / 26 / 4 | 30 | 28 / 2 | 1 | 6 | 1 | | Restore.ps1 | 1122e17 | 2026-09-29 00:56 | L0 | 2 / 20 / 5 | 27 | 20 / 7 | 2 | 15 | 7 | | SplitModules.ps1 | 4b8688b | 2026-10-02 20:55 | MODS14 | 0 / 4 / 20 | 24 | 6 / 18 | 8 | 8 | 5 | | AssetHeaders.ps1 | 1122e17 | 2026-09-29 00:56 | L0 | 0 / 18 / 2 | 20 | 2 / 18 | 4 | 9 | 7 | | BuildCollections.py | 2a1eede | 2026-10-02 14:11 | O7d | 1 / 0 / 4 | 5 | 2 / 3 | 2 | 4 | 3 | | CollectDebugArtifacts.ps1 | b8414af | 2026-10-07 15:49 | Dbg | 0 / 3 / 0 | 3 | 0 / 3 | 0 | 1 | 1 | | AuditScriptDeps.py | b6e5871 | 2026-10-02 01:47 | O1 | 1 / 1 / 0 | 2 | 1 / 1 | 0 | 2 | 1 | | DiffRemplacementNoeuds.py | 5d1f9a1 | 2026-09-30 17:05 | L7a | 0 / 2 / 0 | 2 | 0 / 2 | 1 | 1 | 1 | | FixTextureMips.py | 5f6b3fb | 2026-10-02 09:07 | O4 | 1 / 1 / 0 | 2 | 0 / 2 | 0 | 2 | 2 | | SummarizeDebugCsv.ps1 | b8414af | 2026-10-07 15:49 | Dbg | 0 / 2 / 0 | 2 | 0 / 2 | 0 | 1 | 1 | | AuditAssets.py | b4c4886 | 2026-10-02 00:41 | O0 | 1 / 0 / 0 | 1 | 0 / 1 | 0 | 1 | 1 | Somme des colonnes « Total » : 1 185 mentions ; union d.* = 996 appels distincts, parce qu'une commande cite souvent plusieurs scripts. Aucun des 25 fichiers n'a 0 appel. Créés pendant la fenêtre : Engine.ps1 (10-08 16:37, U2), Build.ps1 (10-08 17:39, U3), EtatDir.ps1 (10-09 15:18), UeState.ps1 et FileCheck.ps1 (10-09 16:37, OUT1), uasset.py (10-09 16:38), FicheStats.py (10-09 17:48), CheckPackage.ps1 (10-10 11:36), uasset58.py (10-10 13:22) : neuf scripts, cités 30 à 161 fois chacun. Pour CheckPackage.ps1 et uasset58.py (appels tous en P2), la colonne ne permet pas de dire s'il y a des appels avant la création (non vérifié à la minute près). ### 2.4 Top 40 des préfixes normalisés (Bash + PowerShell ; 1 335 préfixes distincts pour 7 764 appels) Colonnes : appels | sessions-agents | fiches. | # | Préfixe | Appels | Unités | Fiches | # | Préfixe | Appels | Unités | Fiches | |---|---|---|---|---|---|---|---|---|---| | 1 | grep `` | 723 | 117 | 90 | 21 | get-content `` | 76 | 7 | 1 | | 2 | grep `` | 374 | 75 | 51 | 22 | mkdir `` | 75 | 47 | 39 | | 3 | ls `` | 371 | 163 | 124 | 23 | pwsh `` | 75 | 38 | 34 | | 4 | pwsh `` | 311 | 73 | 59 | 24 | mkdir `` | 73 | 56 | 46 | | 5 | python `<` | 62 | 22 | 17 | | 6 | for f | 214 | 97 | 72 | 26 | git show | 58 | 34 | 21 | | 7 | git diff | 197 | 92 | 67 | 27 | git ls-files | 45 | 29 | 16 | | 8 | echo `` | 196 | 72 | 63 | 28 | get-childitem `` | 44 | 11 | 2 | | 9 | cat >> | 177 | 25 | 11 | 29 | awk `` | 44 | 19 | 17 | | 10 | git status | 154 | 67 | 42 | 30 | for r | 42 | 22 | 11 | | 11 | cat `` | 149 | 71 | 49 | 31 | for i | 39 | 19 | 16 | | 12 | sed `` | 138 | 30 | 21 | 32 | git branch | 39 | 31 | 25 | | 13 | cat > | 122 | 53 | 44 | 33 | find `` | 37 | 23 | 13 | | 14 | git log | 112 | 42 | 16 | 34 | python `` | 37 | 17 | 10 | | 15 | for v | 107 | 23 | 19 | 35 | md5sum `` | 36 | 24 | 10 | | 16 | ls | 103 | 74 | 53 | 36 | git rev-parse | 34 | 26 | 16 | | 17 | git `` | 101 | 64 | 48 | 37 | pwsh runcommandlet.ps1 | 32 | 8 | 3 | | 18 | sed `` | 91 | 45 | 29 | 38 | git `` | 31 | 13 | 9 | | 19 | python `` | 89 | 35 | 22 | 39 | printf `` | 30 | 20 | 12 | | 20 | ls `` | 78 | 46 | 35 | 40 | get-content `` | 29 | 8 | 3 | Lecture (établi pour les comptes, interprétation estimée) : les préfixes de recherche ou de lecture `grep` (723 + 374), `ls` (371 + 103 + 78), `cat ` (149), `sed` (138 + 91) et `find` (37) totalisent 2 064 appels, que Grep / Glob / Read couvrent (règle `sk-protocol` § 7 pour les agents lp-*) ; `cat >` et `cat >>` (122 + 177 = 299) sont des écritures de fichier par le shell. `git diff` (197) et `git status` (154) par préfixe sont inférieurs aux comptes de famille (476 et 1 156) parce que le préfixe normalisé range les formes `git -C …` sous `git ` (101) et `git ` (31). ### 2.5 Fichiers de données produits `data\commands.csv` : 1 612 lignes de données (motif, acteur, sous-période, lot, appels, sessions-agents distincts, fiches distinctes, durée somme, nombre de durées) ; `data\commands_prefixes.csv` : 1 335 lignes ; `data\commands_tools.csv` : 25 lignes ; `data\commands_resume.txt` : 236 lignes. Contrôle : `wc -l` sur chaque fichier (en-tête compris : 1 613, 1 336, 26, 236 ; relevé en cours de travail). ## 3. Écarts au compte attendu de la fiche - **Critère d'acceptation** : total Bash+PowerShell 7 764 ; principales recoupées exactement avec `sessions.csv` (2 966 = 2 966, 34 sessions, 0 écart par session) ; sous-agents 10 993 contre 11 007 (écart 14, 0,13 %, cause non recherchée : `subagents.csv` peut compter des appels hors fenêtre ou dédoublonnés autrement). Deuxième méthode indépendante : 17 890 `tool_use` et 7 764 appels shell, identiques à la première ; sous-chaînes (sans regex) : `md5sum` 314 (= 314), `Get-FileHash` 196 (= 196), `tasklist` 173 (= 173), `RunCommandlet.ps1` 180 (= 180), `FicheStats.py` 32 (= 32) ; `Win32_Process` 108 (107 ici : le motif ici exige `Get-CimInstance` / `Get-WmiObject` avant) ; `git status` 810 (1 156 ici : le motif ici accepte `git -C status`) ; `git log` 442 (610, même raison) ; `ls-files --eol` 112 (109 : ici motif ordonné `ls-files … --eol`) ; `VERROU` 351 en minuscules incluses et shell seul (323 ici : casse exacte, tous outils) ; `accessed none` 67 (82 ici : contexte `.log` exigé mais outil Grep ajouté) ; `unrealeditor-cmd` 76 (68 ici : exclusion des commandes citant `RunCommandlet.ps1`). Écarts expliqués par les différences de motif ; aucun inexpliqué hormis les 14 appels de sous-agents. - **Fiches distinctes** : 35 agents (1 838 appels de la fenêtre) restent sans fiche (57 des 101 absents de `subagents.csv` n'ont pas de description exploitable, une partie n'a pas d'appel dans la fenêtre) ; les colonnes « fiches » sont des **minimums**. Pour la principale le champ fiche n'existe pas : 0 (« sessions-agents distincts » donne la mesure). - **Lot** : vide (« - ») pour la principale et les 35 agents sans fiche ; les classements par lot sont partiels (c : 897 appels shell en « - » sur 1 794 au total). - **Durée** : horodatage du bloc `tool_use` à son `tool_result` ; les appels parallèles se chevauchent, les attentes de permission et les appels en arrière-plan faussent. Le coût « brut » = appels × moyenne est une borne indicative de temps machine, pas de temps de modèle ni de tours ; la moyenne est tirée par quelques appels longs (RunCommandlet.ps1 : moyenne 42,6 s, médiane 5,0 s). - **Première version du script corrigée avant ce livrable** : le motif `UnrealEditor` seul comptait 116 appels (corrigé : 68 avec `UnrealEditor-Cmd|-run=`) ; « script lancé après écriture » comptait 196 par nom de fichier (corrigé : 92 par chemin complet) ; le préfixe `` (1 176 appels) venait d'affectations `VAR="…"` non retirées (corrigé). Les chiffres de ce livrable sont ceux de la version finale, rejouable. - `h.Write-script` ne compte que les scripts écrits dans la fenêtre ; l'exécution d'un script écrit dans une session précédente n'apparaît pas dans « lancé après écriture ». ## 4. Établi / estimé / incertain **Établi** (commande du § 1, recoupée au § 3) : population (17 890 / 7 764), comptes par famille et par sous-période, acteurs, unités, dates de création git, nombre d'appels par `Tools\*`. **Estimé** : coût brut en heures (moyenne × appels ; temps machine borné, voir § 3) ; « candidats » ci-dessous (raisonnement : fréquence × répartition entre acteurs × existence d'un script voisin) ; part par sous-période (union ÷ shell de la période ; P0 est courte : 395 appels). **Incertain** : si un motif répété est une redondance ou un contrôle nécessaire différent à chaque fois (essai qui trancherait : lire une dizaine de cas par famille, hors fiche) ; couverture réelle de `FileCheck.ps1` / `UeState.ps1` / `LogStats.ps1` par rapport aux familles a, b, e (scripts non lus) ; origine des 14 appels d'écart sur les sous-agents ; fiches des 35 agents sans fiche. ## Constats Par ordre de coût brut décroissant (appels × durée moyenne, sans le temps de modèle), pour décision de l'orchestrateur : 1. **d. scripts** : RunCommandlet.ps1 (180 appels, ≈ 2,1 h, essentiellement l'exécution d'Unreal et non du redump) ; `UnrealEditor-Cmd` / `-run=` sans RunCommandlet.ps1 : 68 appels (31 principale, 37 sous-agents, 18 fiches) ; RunUAT / BuildCookRun sans BuildDebug.ps1 : 32 appels (lp-builder 15). 2. **c. état git et fins de ligne** : 1 794 appels, 248 sessions-agents, 180 fiches, ≈ 1,6 h machine ; la part passe de 8 % (P0) à 36 % (P2) des appels shell. Candidat : un script « état » (status + diff --name-status + ls-files --eol + comptes de CR) dans `Tools\`. 3. **b. processus** : 455 appels, ≈ 1,3 h, dont 224 en P2, alors que `UeState.ps1` existe depuis le 10-09 16:37 (86 appels en P2). Candidat : imposer `UeState.ps1` aux fiches build / validation (lp-builder : 64 appels `Get-Process` directs). 4. **a. empreintes** : 543 appels, 90 fiches, dont 538 en md5sum / Get-FileHash / sha*sum contre 60 appels de `FileCheck.ps1` (créé le 10-09) ; 379 en P2. Candidat : généraliser `FileCheck.ps1` ou un mode « empreinte avant / après » de `Snapshot.ps1` (couverture à vérifier, incertain). 5. **h. Python** : 282 heredocs (201 de la principale), 189 `python -c` longs, 135 scripts écrits dont 92 relancés ensuite ; ≈ 0,8 h. Candidat : bibliothèque d'analyse (transcriptions, CSV) dans `Tools\` ou un skill ; le shell Bash fait par ailleurs 2 064 appels de recherche / lecture et 299 écritures `cat >` (§ 2.4). 6. **f. verrou, tickets** : 1 085 appels (677 en shell), 1 059 en P2 ; 141 mkdir / New-Item / Remove sur le verrou ; NUMEROS.md 292 appels (principale 130). Candidat : script `Verrou` (prendre, rendre, état) et lecture de NUMEROS.md par script. 7. **g. taille / date de build** : 252 appels (du 36, gci -Recurse 54, dossier de build 203), 128 de la principale. Candidat : option de taille dans `CheckPackage.ps1`. 8. **e. journaux** : 272 appels (Warning: 124, Error: 101, Accessed None 82) ; `LogStats.ps1` existe depuis le 09-29 (68 appels) ; lp-cart et lp-validator interrogent encore les journaux directement (couverture de LogStats à vérifier). 9. **i.** `SendMessage` 696 appels (28 sessions, tous en principale), `ListAgents` 24 (7 sessions) : coordination entre sessions, pas un candidat d'outil. 10. `Tools\` : 14 des 25 scripts ont 34 appels ou moins (5 en ont 2 ou moins) ; 9 scripts ont été créés pendant la fenêtre et sont déjà cités 30 à 161 fois. Fichiers écrits (chemins absolus) : `D:\Game\LifePlay-master 5.8\Docs\Migration\etat\EVAL\scripts\eval_commandes.py` ; `D:\Game\LifePlay-master 5.8\Docs\Migration\etat\EVAL\data\commands.csv` ; `...\data\commands_prefixes.csv` ; `...\data\commands_tools.csv` ; `...\data\commands_resume.txt` ; ce livrable. Fichiers à commiter (le gardien décide ; `.gitignore` retient les `.md` et `.csv` sous `etat\`, le sort des `.py` et `.txt` est à confirmer) : A `Docs/Migration/etat/EVAL/EVAL-T6-INV.md`, A `Docs/Migration/etat/EVAL/data/commands.csv`, A `Docs/Migration/etat/EVAL/data/commands_prefixes.csv`, A `Docs/Migration/etat/EVAL/data/commands_tools.csv`, A `Docs/Migration/etat/EVAL/scripts/eval_commandes.py`, A `Docs/Migration/etat/EVAL/data/commands_resume.txt`. Aucune commande git qui écrit lancée. Tours : 18 / 40