LifePlay-Revival/Docs/Migration/etat/EVAL/EVAL-T6-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

195 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 `<session>\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/<f>` (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.\-])<nom exact>(?![\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 → `<chemin>` (ou nom du script si extension `ps1|py|sh|bat|cmd|exe|js`), chaîne entre guillemets → `<chaîne>`, variable → `<var>`.
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 `<chaîne>` | 723 | 117 | 90 | 21 | get-content `<chemin>` | 76 | 7 | 1 |
| 2 | grep `<chemin>` | 374 | 75 | 51 | 22 | mkdir `<var>` | 75 | 47 | 39 |
| 3 | ls `<chemin>` | 371 | 163 | 124 | 23 | pwsh `<chemin>` | 75 | 38 | 34 |
| 4 | pwsh `<chaîne>` | 311 | 73 | 59 | 24 | mkdir `<chemin>` | 73 | 56 | 46 |
| 5 | python `<<heredoc` | 226 | 42 | 19 | 25 | pwsh `<var>` | 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 `<chaîne>` | 196 | 72 | 63 | 28 | get-childitem `<chemin>` | 44 | 11 | 2 |
| 9 | cat >> | 177 | 25 | 11 | 29 | awk `<chaîne>` | 44 | 19 | 17 |
| 10 | git status | 154 | 67 | 42 | 30 | for r | 42 | 22 | 11 |
| 11 | cat `<chemin>` | 149 | 71 | 49 | 31 | for i | 39 | 19 | 16 |
| 12 | sed `<chaîne>` | 138 | 30 | 21 | 32 | git branch | 39 | 31 | 25 |
| 13 | cat > | 122 | 53 | 44 | 33 | find `<chemin>` | 37 | 23 | 13 |
| 14 | git log | 112 | 42 | 16 | 34 | python `<var>` | 37 | 17 | 10 |
| 15 | for v | 107 | 23 | 19 | 35 | md5sum `<chemin>` | 36 | 24 | 10 |
| 16 | ls | 103 | 74 | 53 | 36 | git rev-parse | 34 | 26 | 16 |
| 17 | git `<chemin>` | 101 | 64 | 48 | 37 | pwsh runcommandlet.ps1 | 32 | 8 | 3 |
| 18 | sed `<chemin>` | 91 | 45 | 29 | 38 | git `<var>` | 31 | 13 | 9 |
| 19 | python `<chaîne>` | 89 | 35 | 22 | 39 | printf `<chemin>` | 30 | 20 | 12 |
| 20 | ls `<var>` | 78 | 46 | 35 | 40 | get-content `<var>` | 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 <chemin>` (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 <chemin> …` sous `git <chemin>` (101) et `git <var>` (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 <chemin> 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 `<chemin>` (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