213 lines
22 KiB
Markdown
213 lines
22 KiB
Markdown
|
|
Fiche EVAL2-T6b — Niveau N1 — Modèle prévu sonnet | utilisé Sonnet 5.5 (claude-sonnet-5-5) — Agent lp-inventory — Skills sk-protocol, sk-recount, lp-paths
|
|||
|
|
# EVAL2-T6-INV : commandes et refus du crochet pendant P3 (2026-10-14, reprise T6b)
|
|||
|
|
|
|||
|
|
Reprise T6b d'un livrable T6 arrêté au premier refus du crochet (voir § 5). Réécriture complète (un Write), § 2.1 corrigé, règle de classement révisée, titres de session remplis.
|
|||
|
|
|
|||
|
|
## 1. Commandes exactes
|
|||
|
|
- Copie : `etat\EVAL2\scripts\eval2_commandes.py` (Write, d'après `etat\EVAL\scripts\eval_commandes.py` lu avec Read, original intact). Complément : `etat\EVAL2\scripts\eval2_refus.py` (exécute le premier en silence par `runpy`, puis ajoute titres, règle v2, échantillon, cas STE) ; le premier script n'a pas pu être modifié (agent sans Edit), d'où ce second fichier.
|
|||
|
|
- Mesure : `cd "D:/Game/LifePlay-master 5.8/Docs/Migration/etat/EVAL2/scripts" && python -I -X utf8 eval2_commandes.py` (défauts : début 2026-10-11 05:30:00, fin 2026-10-14 18:25:41, coupure P3a/P3b 2026-10-13 10:00, UTC+2) puis `… && python -I -X utf8 eval2_refus.py` (réécrit `data/refus.csv`, 135 lignes).
|
|||
|
|
- Sources : `%USERPROFILE%\.claude\projects\` dossiers `D--Game-LifePlay-master-5-8`, `…-5-8-Docs-Migration-etat-AG-P7`, `…-5-5`, `D--Game-LifePlay-Backup-5-5-P7-jetable-copie`. Exclus : `be193763`, `b339a92a` et leurs sous-agents.
|
|||
|
|
- Titres de session : `local_*.json` (champs `title`, `cliSessionId`). L'application est installée en MSIX : le chemin `%USERPROFILE%\AppData\Roaming\Claude\claude-code-sessions` donne 0 fichier pour Python ; le dossier réel est `%USERPROFILE%\AppData\Local\Packages\Claude_*\LocalCache\Roaming\Claude\claude-code-sessions` (sortie : « fichiers local_*.json : 67 ; sessions avec titre : 65 »).
|
|||
|
|
- Crochet : `%USERPROFILE%\.claude\hooks\ecriture-gardien.py` lu (Read) ; rejoué en lecture par `importlib`.
|
|||
|
|
- Détection d'un refus : résultat d'outil en erreur d'un appel Bash/PowerShell contenant `hook error` et `Refus du crochet ecriture-gardien` (exclut les lectures de documents). Résultats dédoublonnés par identifiant d'appel.
|
|||
|
|
- Contrôles : Grep `Refus du crochet ecriture-gardien` (count, tout `projects\`) → 195 occurrences dans 80 fichiers (toutes dates, lectures de documents et copies comprises : contrôle de non-nullité seulement) ; Grep `mv -n Saved/Autosaves` dans les transcriptions de la session STE ; Grep `crochet|refus|contourn|autosave` dans `etat\ST\STE\STE-ORG4c-*.md`.
|
|||
|
|
|
|||
|
|
## 2. Comptes bruts (sortie des scripts)
|
|||
|
|
```
|
|||
|
|
fichiers principaux lus : 100 ; sous-agents : 613 ; tool_use bruts : 42345 ; doublons ignores : 2366 ; tool_use dans la fenetre : 15898
|
|||
|
|
Bash+PowerShell : 5910 (Bash 5438, PowerShell 472) ; P3a 2163 P3b 3747
|
|||
|
|
total crochet-refus : 82 ; P3a 19 ; P3b 63 ; agent du message != agentType : 0
|
|||
|
|
```
|
|||
|
|
### 2.1 Refus par catégorie et période
|
|||
|
|
| Catégorie | P3a | P3b | Total |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| crochet-refus (`ecriture-gardien`) | 19 | 63 | 82 |
|
|||
|
|
| crochet-casse (fichier du crochet `Tools/claude/hooks/ecriture-gardien.py` absent, python code 2 ; 4 de la session principale) | 1 | 3 | 4 |
|
|||
|
|
| mode auto (classifieur) | 29 | 5 | 34 |
|
|||
|
|
| refus utilisateur (« The user doesn't want to proceed » ; lp-inventory 6, principale 1) | 6 | 1 | 7 |
|
|||
|
|
| sécurité intégrée (rm, chemin non résolu) | 1 | 1 | 2 |
|
|||
|
|
| PubCheck (sortie non nulle d'un appel de `PubCheck.ps1`, principale) | 0 | 3 | 3 |
|
|||
|
|
| pre-push (lp-gardien 2, principale 1) | 0 | 3 | 3 |
|
|||
|
|
|
|||
|
|
Mode auto, sortie brute du script (total 34 = 1+2+1+1+3+6+20) :
|
|||
|
|
```
|
|||
|
|
mode-auto ? P3a 1
|
|||
|
|
mode-auto Auto-Mode Bypass P3a 2
|
|||
|
|
mode-auto Credential Materialization P3a 1
|
|||
|
|
mode-auto Instruction Poisoning P3a 1
|
|||
|
|
mode-auto Interfere With Workloads P3a 2 ; P3b 1
|
|||
|
|
mode-auto Modify Shared Resources P3a 6
|
|||
|
|
mode-auto Self-Modification P3a 16 ; P3b 4
|
|||
|
|
```
|
|||
|
|
Par acteur : Self-Modification principale 13, lp-writer 7 ; Modify Shared Resources lp-gardien 3, lp-mcp-bp 2, lp-writer 1 ; Auto-Mode Bypass principale 2 ; Interfere With Workloads principale 2, lp-builder 1 ; Credential Materialization principale 1 ; Instruction Poisoning lp-writer 1 ; raison non lue (« ? ») principale 1.
|
|||
|
|
|
|||
|
|
### 2.2 Refus du crochet : motif (premier motif de l'« Ecriture »), période
|
|||
|
|
| Motif | P3a | P3b | Total |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| `>` (« chevron ») | 8 | 41 | 49 |
|
|||
|
|
| `->` (« tiret-chevron ») | 0 | 4 | 4 |
|
|||
|
|
| `tee` | 0 | 2 | 2 |
|
|||
|
|
| `python -c` | 1 | 9 | 10 |
|
|||
|
|
| autre : `mkdir` 5 (1+4), `pwsh -Command` 3 (2+1), python heredoc 2 (P3a), `sed -i` 2 (P3a), `set-content` 2 (1+1), `new-item` 1, `cp` 1, `copy-item` 1 | 9 | 8 | 17 |
|
|||
|
|
| Total | 19 | 63 | 82 |
|
|||
|
|
|
|||
|
|
Occurrences, tous motifs d'une même commande : chevron 51, python -c 11, tiret-chevron 5, mkdir 5, pwsh -Command 3, set-content 3, python heredoc 3, tee 2, copy-item 2, sed -i 2, move-item 1, rm 1, new-item 1, cp 1. Le nom d'agent du message égale le `agentType` dans 82 cas sur 82.
|
|||
|
|
|
|||
|
|
### 2.3 Par agent, par session (avec titre), par lot
|
|||
|
|
| Agent (message du crochet) | Refus |
|
|||
|
|
|---|---|
|
|||
|
|
| lp-validator | 55 |
|
|||
|
|
| lp-mcp-bp | 12 |
|
|||
|
|
| lp-cart | 5 |
|
|||
|
|
| essai-bash (agent d'essai du crochet) | 4 |
|
|||
|
|
| lp-builder | 3 |
|
|||
|
|
| essai-pwsh (agent d'essai du crochet) | 2 |
|
|||
|
|
| lp-inventory | 1 |
|
|||
|
|
|
|||
|
|
Les 6 refus des agents d'essai sont des tests du crochet : 76 refus opérationnels. Tableau par session (refus opérationnels du crochet, classement v2 de § 2.4, puis tous les autres refus de § 2.1) :
|
|||
|
|
|
|||
|
|
| Session | Titre (application) | Crochet | à tort | utile | Autres refus |
|
|||
|
|
|---|---|---|---|---|---|
|
|||
|
|
| `8d9744a8` | STG : chevauchement et enfoncement des p… | 28 | 11 | 17 | 0 |
|
|||
|
|
| `e4f91a9c` | CAM | 17 | 12 | 5 | 1 |
|
|||
|
|
| `36e41eab` | STE | 12 | 6 | 6 | 1 |
|
|||
|
|
| `c3654992` | (sans titre) | 7 | 3 | 4 | 6 |
|
|||
|
|
| `f3df474e` | (sans titre) | 4 | 3 | 1 | 3 |
|
|||
|
|
| `09f8dd29` | (sans titre) | 3 | 0 | 3 | 0 |
|
|||
|
|
| `f0bc1ed9` | REL : dossier de sauvegarde LifePlay-Rev… | 2 | 1 | 1 | 0 |
|
|||
|
|
| `8acd287c` | STE (remplacée, ne plus utiliser) | 1 | 0 | 1 | 8 |
|
|||
|
|
| `7d408374` | REG1 | 1 | 0 | 1 | 6 |
|
|||
|
|
| `ee6fdcd1` | (sans titre) | 1 | 0 | 1 | 0 |
|
|||
|
|
| `92a3927f` | (sans titre dans l'application ; Big Boss selon l'orchestrateur) | 0 | 0 | 0 | 8 |
|
|||
|
|
| `dd295daa` | VERR1 | 0 | 0 | 0 | 8 |
|
|||
|
|
| `4f688665` | (sans titre) | 0 | 0 | 0 | 7 |
|
|||
|
|
| `37530d8d` | LOT STE | 0 | 0 | 0 | 3 |
|
|||
|
|
| `ebc15012` | Big Boss | 0 | 0 | 0 | 1 |
|
|||
|
|
| `90154b30` | (sans titre) | 0 | 0 | 0 | 1 |
|
|||
|
|
|
|||
|
|
Total crochet 76 (28+17+12+7+4+3+2+1+1+1). Par lot de fiche du sous-agent (v2) : sans identifiant de fiche 55 (à tort 28, utile 27), STG 7 (3/4), STE 5 (1/4), P7 4 (3/1), TRACE1 3 (0/3), REG1 1 (0/1), CAM 1 (1/0). Unités à 3 refus ou plus : cinq lp-validator (`c3654992/add5ac01` 4, `09f8dd29/aa75c29b` 3, `8d9744a8/a23b4b49` 3, `c3654992/aff13c81` 3, `f3df474e/afa804d7` 3). Une session « principale » n'a jamais de refus du crochet (pas de `agent_type`) : tous viennent de sous-agents.
|
|||
|
|
|
|||
|
|
### 2.4 Règles de classement
|
|||
|
|
- Règle v1 (script `eval2_commandes.py`) : le motif est « utile » s'il subsiste après retrait des textes entre guillemets et des heredocs ; pour Python, « utile » seulement si le code contient une écriture.
|
|||
|
|
- Règle v2 (décision de l'orchestrateur, `eval2_refus.py`, fonction `classe2`) : « utile/conforme » si le refus vise un motif interdit par sk-protocol § 7 tel qu'écrit : toute écriture réelle hors texte cité, tout `python -c`, tout heredoc ou entrée standard Python (même sans écriture), tout `tee`, `pwsh -Command` avec cmdlet d'écriture ; « à tort » si le motif n'apparaît que dans un texte cité (guillemets, heredoc : chevron d'un motif de recherche ou de `awk`, tiret-chevron d'un `echo`).
|
|||
|
|
- Résultat v1 (opérationnels 76) : à tort 48, utile 28. Résultat v2 (opérationnels 76) : **à tort 36, utile 40** ; sur les 82 (essais compris) : à tort 36, utile 46. Seules 12 lignes changent de v1 à v2 : 10 `python -c` et 2 heredocs Python, de « à tort » à « utile ».
|
|||
|
|
- v2 par motif (opérationnels) : `->` à tort 4 ; `>` à tort 30, utile 19 ; autre à tort 2, utile 9 ; `python -c` utile 10 ; `tee` utile 2. Par période : P3a à tort 3, utile 10 ; P3b à tort 33, utile 30.
|
|||
|
|
- Sous-classe de « utile » (chevron, `tee`, `mkdir`) dont la cible est désignée par une variable (`$S`, `$TEMP`, `$L`) : **18 sur 40** utiles opérationnels. Le crochet ne peut pas rapprocher `"$S/x"` du dossier temporaire ou du scratchpad, qui sont des chemins libres. Ces refus sont conformes à la lettre de la règle mais bénins quant à l'effet (écriture sous le dossier temporaire).
|
|||
|
|
|
|||
|
|
Relecture à la main, 15 lignes (`random.Random(20261014).sample` sur les 76 refus opérationnels ; commande complète lue pour 7, partielle pour 8) :
|
|||
|
|
| N° | Agent | Motif | Verdict v2 | Relecture |
|
|||
|
|
|---|---|---|---|---|
|
|||
|
|
| 1 | lp-builder | python -c (lecture de zips) | utile | accord (interdit tel qu'écrit) |
|
|||
|
|
| 2 | lp-validator | mkdir `"$TEMP/v"` | utile | accord à la lettre ; écriture dans le dossier temporaire, cible par variable |
|
|||
|
|
| 3 | lp-validator | chevron vers `"$S/real.patch"` | utile | accord à la lettre ; scratchpad par variable |
|
|||
|
|
| 4 | lp-mcp-bp | chevron | à tort | accord : le chevron est dans `sed "s/ $USERNAME / <compte> /"` |
|
|||
|
|
| 5 | lp-validator | tiret-chevron | à tort | accord : `echo "== $1 -> $2 cpp"` |
|
|||
|
|
| 6 | lp-validator | python -c (comptage de CR) | utile | accord (python -c interdit, aucune écriture) |
|
|||
|
|
| 7 | lp-validator | chevron vers `"$S/arbre.txt"` | utile | accord à la lettre ; scratchpad par variable |
|
|||
|
|
| 8 | lp-mcp-bp | chevron | à tort | accord : le chevron est dans un motif `grep "ECollisionTraceFlag> …"` |
|
|||
|
|
| 9 | lp-validator | chevron vers `$S/d2.diff` | utile | accord à la lettre ; scratchpad par variable |
|
|||
|
|
| 10 | lp-builder | python heredoc (`print(1)`) | utile | accord (heredoc Python interdit) |
|
|||
|
|
| 11 | lp-validator | chevron | à tort | accord : `grep -c '^>'` |
|
|||
|
|
| 12 | lp-validator | chevron vers `v1b.ps1` | utile | accord à la lettre ; fichier relatif, après `cd` dans le scratchpad |
|
|||
|
|
| 13 | lp-validator | chevron | à tort | accord : `grep -c "^>"` |
|
|||
|
|
| 14 | lp-validator | chevron | à tort | accord : `awk '… (s>115) …'` entre apostrophes |
|
|||
|
|
| 15 | lp-validator | chevron | à tort | accord : `awk 'NR>=9700 && …'` entre apostrophes |
|
|||
|
|
|
|||
|
|
**Accord règle v2 / relecture : 15 sur 15.** Parmi les 8 « utile » de l'échantillon, 5 (nos 2, 3, 7, 9, 12) écrivent dans le dossier temporaire ou le scratchpad, donc des écritures autorisées par la politique mais invisibles pour le crochet : la règle v2 les compte « utile » ; en lecture « écriture hors chemin libre », le total « utile » baisserait (estimé : jusqu'à 18 lignes sur 40). Limite : un échantillon de 15 sur 76 (20 %), dont 8 commandes lues tronquées à 420 caractères (nos 1, 5, 6, 8, 10, 13, 14, 15).
|
|||
|
|
|
|||
|
|
### 2.5 Suite donnée au refus du crochet (règle : premier appel de l'agent après le refus, plus les 3 suivants pour les moyens d'écriture)
|
|||
|
|
| Suite | Refus (82) |
|
|||
|
|
|---|---|
|
|||
|
|
| poursuite sans retenter (lecture) | 22 |
|
|||
|
|
| reformulation (même outil, autre commande) | 22 |
|
|||
|
|
| contournement : autre moyen d'écriture (script, Set-Content, Out-File, python, copie) | 13 |
|
|||
|
|
| Write du livrable sous `etat/` (conforme au message du crochet) | 9 |
|
|||
|
|
| contournement : Write/Edit hors `etat/` | 8 |
|
|||
|
|
| arrêt de l'agent (aucun appel ensuite) | 7 |
|
|||
|
|
| changement d'outil (Bash ↔ PowerShell) | 1 |
|
|||
|
|
| reformulation puis nouveau refus | 0 |
|
|||
|
|
|
|||
|
|
Après un refus du mode auto (34) : poursuite sans retenter 13, Write/Edit hors `etat/` 12, changement d'outil 4, Write sous `etat/` 3, autre moyen d'écriture 2. Après un refus utilisateur (7) : poursuite 5, changement d'outil 1, arrêt 1. Après la sécurité intégrée (2) : Write sous `etat/` 1, Write hors `etat/` 1. « Contournement » est une étiquette heuristique, pas un jugement d'intention ; les trois appels suivants figurent dans la colonne `suite_detail` de `refus.csv`.
|
|||
|
|
|
|||
|
|
### 2.6 Cas STE-ORG (sessions STE `36e41eab` et `8acd287c`)
|
|||
|
|
- Refus du crochet dans ces deux sessions : 13 (36e41eab 12 ; 8acd287c 1), plus 9 autres refus (mode auto 8 dans 8acd287c, un dans 36e41eab). Dans la session `36e41eab` : lp-mcp-bp 4, lp-cart 5, lp-validator 3 selon la liste du script (corrigé par l'orchestrateur, recompté sur `data\refus.csv`) ; six « à tort » (v2) et six « utile ».
|
|||
|
|
- **STE-ORG4c, 2026-10-14 10:33:49 (sous-agent lp-mcp-bp, unité `36e41eab/a25364bd`)** : commande `cd … && md5sum Saved/Autosaves/Game/BPs/GI_Auto1.uasset && ls -la …/STE-ORG4c && mkdir -p …/LifePlay_Backup_5.5/STE-ORG4c/autosave && mv -n Saved/Autosaves/Game/BPs/GI_Auto1.uasset …` ; motif relevé par le crochet : `mkdir` (écriture réelle hors chemins libres) ; classement **utile** (le déplacement d'un fichier est une écriture). Le fichier de l'éditeur (52 684 303 octets, écrit à 10:32) devait être mis à l'écart.
|
|||
|
|
- **Suite** : arrêt de l'agent (la fiche, rubrique 5, prescrit « au premier refus, arrêt »), après Write de son livrable `STE-ORG4c-IMPL.md` (l. 32 et 113 : « refusé par le crochet, commande non exécutée » ; « son MD5 n'a pas été mesuré »).
|
|||
|
|
- **Contournement** : par l'orchestrateur (session principale, sans `agent_type`, donc hors du crochet) : « déplacée par l'orchestrateur vers `D:\Game\LifePlay_Backup_5.5\STE-ORG4c\autosave\` ; `find Saved/Autosaves -name 'GI_Auto*'` → aucun résultat » (`STE-ORG4c-IMPL.md:120`, `fiches/STE-ORG4c-v.md:4`).
|
|||
|
|
- **Effet** : un retard et une fiche de plus (le déplacement revient à l'orchestrateur), le MD5 de l'autosauvegarde jamais mesuré, la VAL `STE-ORG4c-VAL.md:13` passe en PASS avec le fichier déplacé. L'heure du déplacement par l'orchestrateur n'a pas été relevée. Le livrable note que le crochet refuse ce déplacement à `lp-mcp-bp` (l. 140) et propose que l'orchestrateur le prévoie ou coupe l'autosauvegarde (piste non vérifiée).
|
|||
|
|
- Même sous-lot, 2026-10-13 23:14 à 23:45, agent lp-cart (audit `STE-ORG-AUDIT.md`) : 4 refus (tiret-chevron dans un `printf`, deux chevrons dans une commande de recherche, un `python -c` de lecture binaire) ; trois « à tort », un « utile » ; l'agent a poursuivi par reformulation ou par Write du livrable.
|
|||
|
|
- Le chiffre « 60 » que donnait un premier sondage de la commande `mkdir` STE-ORG4c venait de copies de transcriptions ; dans la fenêtre il y a 1 refus.
|
|||
|
|
|
|||
|
|
### 2.7 Refus dus à la consigne (motif interdit par sk-protocol § 7 et par les fiches)
|
|||
|
|
| Ensemble | Refus | Détail |
|
|||
|
|
|---|---|---|
|
|||
|
|
| Dans la fenêtre P3, agents opérationnels : `python -c`, heredoc ou entrée standard Python, `tee` | 14 (P3a 3, P3b 11) | python -c/heredoc/stdin 12 ; tee 2 ; par agent : lp-validator 7 (python -c 6, tee 1), lp-mcp-bp 3 (python -c 2, tee 1), lp-cart 2 (python heredoc 1, python -c 1), lp-builder 2 (python -c 1, python heredoc 1) |
|
|||
|
|
| Hors fenêtre (session EVAL exclue, après 18:25:41 le 2026-10-14) : 3 refus de lp-inventory | 3 | 18:42:58 EVAL2-T1a (`python -I -c`) ; 18:47:00 EVAL2-T6 (heredoc Python, première tentative de cet agent) ; 18:48:29 EVAL2-T4 (`python -I -X utf8 -c "print(1)"`). Les trois sont conformes (le motif est interdit tel qu'écrit). L'orchestrateur en annonçait deux (T1a, T6) ; le troisième est T4. |
|
|||
|
|
|
|||
|
|
« Dues à leur propre consigne » est estimé : j'ai tenu `python -c`, heredoc, entrée standard Python et `tee` pour interdits dans toute fiche (rappel de la fiche STE-ORG4c-v, rubrique 5, et de sk-protocol § 7) sans relire chaque fiche.
|
|||
|
|
|
|||
|
|
### 2.8 Familles de commandes (mêmes familles que l'EVAL ; total | principale | sous-agents | P3a P3b | unités | fiches)
|
|||
|
|
```
|
|||
|
|
a.* union 927 | 511 | 416 | 234 693 | 200 | 60 a.md5sum 730 | 395 | 335 | 169 561 ; a.Get-FileHash 168 ; a.certutil 16 ; a.sha-sum 9 ; a.hashlib 4
|
|||
|
|
b.* union 240 | 159 | 81 | 122 118 | 42 | 13 b.tasklist 119 ; b.Stop-Process/taskkill 48 ; b.Get-CimInstance 44 ; b.Get-Process 42
|
|||
|
|
c.* union 1168 | 550 | 618 | 574 594 | 209 | 76 c.git-status 662 | 257 | 405 | 350 312 ; c.git-diff-stat 332 ; c.git-log 310 ; c.git-ls-files-eol 150 ; c.comptes-CR 133 ; c.git-show-name-status 75
|
|||
|
|
d.* union 1132 | 562 | 570 | 368 764 | 148 | 39
|
|||
|
|
e.* union 238 | 75 | 163 | 54 184 | 54 | 14 e.Warning: 109 ; e.Accessed None 98 ; e.Error: 66 ; e.LogScript 56 ; e.LogBlueprint 36 ; e.avec-compte 72
|
|||
|
|
f.* union 879 | 303 | 576 | 636 243 | 76 | 33 f.dossier-etat/REPO 814 ; f.REPO-JOURNAL.md 250 ; f.NUMEROS.md 249 ; f.VERROU 203 ; f.mkdir-verrou 121
|
|||
|
|
g.* union 138 | 95 | 43 | 24 114 | 37 | 9 g.dossier-build+taille/date 123 ; g.gci-Recurse+Measure 22 ; g.du 6
|
|||
|
|
h.* union 957 | 540 | 417 | 392 565 | 87 | 30 h.python-heredoc 335 (principale 322) ; h.lance-un-script-ecrit-avant 255 ; h.Write-script hors Tools 234 ; h.python-c(>200 car.) 152
|
|||
|
|
```
|
|||
|
|
Les appels `h.python-heredoc` (322 de la session principale) et `h.python-c` ne sont pas soumis au crochet (pas de `agent_type`).
|
|||
|
|
|
|||
|
|
### 2.9 Appels des outils `Tools\*` et date de création (`git log --diff-filter=A`)
|
|||
|
|
| Fichier | Commit | Création | Appels shell P3 | Accès Read/Grep/… | Unités | dont P3a (P3b = total − P3a) |
|
|||
|
|
|---|---|---|---|---|---|---|
|
|||
|
|
| UeState.ps1 | 866e869 | 2026-10-09 16:37 | 370 | 9 | 78 | 55 |
|
|||
|
|
| FileCheck.ps1 | 866e869 | 2026-10-09 16:37 | 111 | 8 | 37 | 44 |
|
|||
|
|
| Verrou.ps1 | f4ac257 | 2026-10-12 22:37 | 110 | 13 | 33 | 73 |
|
|||
|
|
| Numero.ps1 | f4ac257 | 2026-10-12 22:37 | 77 | 5 | 21 | 55 |
|
|||
|
|
| CopieEtat.ps1 | f4ac257 | 2026-10-12 22:37 | 43 | 10 | 8 | 43 |
|
|||
|
|
| GitEtat.ps1 | f4ac257 | 2026-10-12 22:37 | 23 | 8 | 5 | 23 |
|
|||
|
|
| PubCheck.ps1 | 1ae1575 | 2026-10-13 10:20 | 101 | 26 | 19 | 25 |
|
|||
|
|
| Traces.ps1 | 3967e9d | 2026-10-13 10:22 | 57 | 25 | 9 | 35 |
|
|||
|
|
| Corbeille.ps1 | 3967e9d | 2026-10-13 10:22 | 38 | 19 | 9 | 23 |
|
|||
|
|
| TracesRacines.ps1 | 3967e9d | 2026-10-13 10:22 | 21 | 3 | 6 | 4 |
|
|||
|
|
| Build.ps1 | 8e21f6b | 2026-10-08 17:39 | 45 | 3 | 33 | 13 |
|
|||
|
|
| Snapshot.ps1 | 1122e17 | 2026-09-29 00:56 | 119 | 8 | 21 | 32 |
|
|||
|
|
| RunCommandlet.ps1 | 9b7e971 | 2026-09-29 01:12 | 83 | 4 | 31 | 21 |
|
|||
|
|
| EtatDir.ps1 / FicheStats.py | 1d1d283 / 80022ad | 2026-10-09 | 35 / 30 | 11 / 5 | 10 / 9 | 35 / 30 |
|
|||
|
|
|
|||
|
|
Autres : BuildDebug 24, CheckPackage 20, LogStats 29, Engine 11, Restore 10, SplitModules 6, CollectDebugArtifacts 3, DiffRemplacementNoeuds 3, ReimportCorrectif 1 ; 9 fichiers à 0 appel ni accès (AssetHeaders, AuditAssets, AuditScriptDeps, BuildCollections, CheckIntegrity, FixTextureMips, SummarizeDebugCsv, uasset.py, uasset58.py). Liste complète : `data/commandes.csv` (type `outil`).
|
|||
|
|
Lecture comparée : état git `c.git-status` 662 appels (312 en P3b) contre `GitEtat.ps1` 23 appels, tous en P3a ; empreintes `a.*` 927 contre `FileCheck.ps1` 111 ; verrou : `f.mkdir-verrou` 121 (102 en P3a) puis `Verrou.ps1` 110 et `Numero.ps1` 77 ; `CopieEtat.ps1` 43 appels, tous en P3a ; processus `b.*` 240 contre `UeState.ps1` 370 ; tailles de build `g.*` 138 sans outil dédié.
|
|||
|
|
|
|||
|
|
### 2.10 Erreurs de shell
|
|||
|
|
Appels shell 5910 ; erreurs classées 51.
|
|||
|
|
| Type | Total | P3a | P3b | Bash | PowerShell |
|
|||
|
|
|---|---|---|---|---|---|
|
|||
|
|
| guillemets / échappement | 26 | 4 | 22 | 26 | 0 |
|
|||
|
|
| chemin introuvable | 21 | 5 | 16 | 21 | 0 |
|
|||
|
|
| redirection | 1 | 1 | 0 | 1 | 0 |
|
|||
|
|
| commande Unix sous PowerShell | 1 | 1 | 0 | 0 | 1 |
|
|||
|
|
| arguments d'un script pwsh | 1 | 1 | 0 | 0 | 1 |
|
|||
|
|
| commande inconnue autre | 1 | 0 | 1 | 0 | 1 |
|
|||
|
|
|
|||
|
|
Exemples types : (1) Bash, `cat … <<'PYEOF'` d'un script Python long, session `8d9744a8` → « unexpected EOF while looking for matching » (apostrophe). (2) Bash, `printf '%s\n' '| 2026-10-13 | STE …'` avec apostrophe dans le texte, session `92a3927f` → même message. (3) Bash, `for d . ; do :; done`, session `c3654992` → « syntax error near unexpected token ». (4) PowerShell avec `grep` dans `% { … }`, session `7e1d28c3` → « Le terme « grep » n'est pas reconnu comme nom d'applet de commande ». (5) `pwsh -NoProfile -File Tools\UeState.ps1 …` lancé hors de la racine, session `7e1d28c3` → code 64, « n'est pas reconnu comme nom d'un fichier de script ».
|
|||
|
|
Réserves : « chemin introuvable » est bruité (le motif apparaît aussi dans la sortie de commandes qui citent une autre erreur) ; « redirection » (1) est un faux positif (le mot figure dans un document lu). Les types guillemets et PowerShell-vs-Bash sont fiables.
|
|||
|
|
|
|||
|
|
## 3. Écarts au compte attendu de la fiche
|
|||
|
|
- La fiche n'attend pas de nombre. Écarts de méthode : PubCheck et pre-push comptés par heuristique de texte (3 + 3 cas, messages non relus) ; la règle v1 du script de base reste dans la colonne `classement`, la règle v2 est dans `classement_v2` ; 4 appels « crochet cassé » (fichier absent, `D` dans le `git status` de départ) : leur blocage est déduit du code 2 de Python.
|
|||
|
|
- Ajouts : colonnes P3a/P3b, catégories `crochet-casse` et `securite-integree`, colonnes `classement_v2`, `regle_v2`, `agent_essai`, `cible_par_variable` dans `refus.csv`.
|
|||
|
|
|
|||
|
|
## 4. Établi / estimé / incertain
|
|||
|
|
- Établi (sorties des scripts, § 1) : comptes des § 2.1 à § 2.10 aux définitions près ; § 2.6, l. de `STE-ORG4c-IMPL.md` citées ; la relecture de 15 lignes.
|
|||
|
|
- Estimé : le classement (le crochet rejoué est celui d'aujourd'hui, l'historique de ses versions n'est pas connu) ; « contournement » (heuristique) ; « dues à leur propre consigne » (§ 2.7) ; 18 « cibles par variable » (détection par le caractère `$` dans la cible) ; la nature des sessions de `…P7-jetable-copie` (essais du crochet, non vérifié).
|
|||
|
|
- Incertain : l'heure du déplacement de l'autosauvegarde par l'orchestrateur ; l'attribution d'un appel commun à des transcriptions copiées (dédoublonnage par identifiant, première transcription lue) ; l'usage de `CopieEtat.ps1` et `GitEtat.ps1` en P3b sous un autre libellé que `<nom>.ps1` ; les titres des sessions `c3654992`, `f3df474e`, `09f8dd29`, `4f688665`, `90154b30`, `ee6fdcd1` (absents de l'application). Le recompte indépendant (sk-recount) n'a pas été fait par un second agent ; les totaux des tableaux ont été recoupés entre eux (82 = 19 + 63 = 49 + 4 + 2 + 10 + 17 ; 76 = somme des sessions ; 36 + 40 = 76 ; 34 = somme du mode auto).
|
|||
|
|
|
|||
|
|
## 5. Refus subi par cet agent (traçabilité)
|
|||
|
|
Pendant la première tentative, cet agent a lancé une commande Bash avec heredoc Python pour lire les `local_*.json` ; le crochet l'a refusée (Agent lp-inventory, motif « python avec code en argument ou heredoc »). Conforme (heredoc interdit par la fiche), hors fenêtre, hors des comptes ; compté en § 2.7. Arrêt, compte rendu, puis reprise T6b sur ordre de l'orchestrateur ; aucun autre refus depuis (les scripts sont écrits par Write et lancés par `python -I -X utf8 fichier.py`).
|
|||
|
|
|
|||
|
|
Tours : 21 / 40 (reprise T6b ; 11 pour la première tentative)
|
|||
|
|
|
|||
|
|
## Fichiers à commiter
|
|||
|
|
- A `Docs/Migration/etat/EVAL2/EVAL2-T6-INV.md`, `Docs/Migration/etat/EVAL2/data/commandes.csv`, `Docs/Migration/etat/EVAL2/data/refus.csv`, `Docs/Migration/etat/EVAL2/scripts/eval2_commandes.py`, `Docs/Migration/etat/EVAL2/scripts/eval2_refus.py` (dépôt du jeu ; `etat/` suit les `.md` et `.csv` ; les `.py` à vérifier selon `.gitignore`).
|