LifePlay-Revival/Docs/Migration/etat/EDIT1/EDIT1-IMPL.md

96 lines
8.3 KiB
Markdown
Raw Normal View History

Fiche EDIT1-T1 — Niveau N3 — Modèle prévu non précisé (session mère) | utilisé claude-opus-5-5 — Agent session fille (Claude Code) — Skills sk-protocol, sk-change-safety, lp-paths, lp-doc
# EDIT1-IMPL : consignes d'édition et de recherche des agents (2026-10-09)
Hors gabarit partiel : section « Preuves » ajoutée avant les sections du gabarit IMPL (le lot n'a pas de SPEC écrite ;
la fiche est le message de la session « Audit des scripts agent répétés »). Emplacement : `etat/EDIT1/`, même niveau
que `etat/OUT1/` (aucune règle `EDIT` dans `Tools/EtatDir.ps1`, aucun autre dossier `EDIT*` dans `etat/`).
## Origine
Audit des transcriptions du 2026-10-09 : 588 éditions de fichiers par script Python ad hoc (58 agents, dont 422 par la
session principale), fonction `edit()` préservant les fins de ligne réécrite 131 fois ; `grep` en Bash ~7 700 fois
contre 394 appels à l'outil Grep. Cause : crainte d'abîmer les CRLF, non fondée (voir Preuves).
## Preuves (établi)
- **Essai Edit** (scratchpad de la session, 2026-10-09), lu par `od -c` avant et après :
- fichier CRLF + BOM UTF-8 (`EF BB BF`, 3 lignes CRLF), Edit qui remplace une ligne et en ajoute une avec `é` :
BOM conservé, 4 lignes toutes en `\r\n`, `é` = `303 251` (UTF-8) ;
- fichier mixte (`\r\n`, `\n`, `\r\n`), Edit sur la 1re ligne : les 3 lignes deviennent `\r\n` (normalisé).
Conclusion : Edit garde CRLF, LF et BOM ; il ne normalise qu'un fichier mixte.
- **Fins de ligne de la copie 5.8** (`git -C 'D:\Game\LifePlay-master 5.8' ls-files --eol`, colonne `i/`) : 99 crlf,
443 lf, **2 mixed** (`.gitignore`, `Docs/Modding/ShortGuides/explanation.lpmod`), 295 `-text`, 12 none. La fiche
annonçait 87 / 426 / 0 : non retrouvé.
- **Chargement** : sous-agent `lp-writer` de test (sans outil) : cite mot pour mot `sk-protocol` § 7 et la commande de
`lp-doc`, « ERR-043 » absent. Il n'a **pas** vu sa nouvelle ligne d'agent : le corps des fichiers
`~/.claude/agents` n'est relu qu'au démarrage d'une session (incertain : non revérifié dans une session neuve).
- **Grep et dossiers ignorés** (CHG-278, signalement de la session du lot 29) : depuis la racine de la copie 5.8,
`Grep McpAutomationBridgeSubsystem` → aucun fichier, `Grep Resolve-LPEtatDir` → 3 fichiers suivis ; avec `path` =
`Plugins/McpAutomationBridge`, `Grep class` → 1 589 occurrences dans 437 fichiers. `git check-ignore -v` :
`.gitignore:41` (`Plugins/McpAutomationBridge/`), `.git/info/exclude:15` (`/Plugins/Marketplace/`, HyperAIStudio).
## 1. Fichiers modifiés
Hors dépôt (aucun dépôt git ne versionne `%USERPROFILE%\.claude\agents` ni `%USERPROFILE%\.claude\skills\sk-*` ;
`git rev-parse` dans `~/.claude` : « not a git repository ») :
| Fichier | Changement EDIT1 |
|---|---|
| `~/.claude/skills/sk-protocol/SKILL.md` | 46 → 55 lignes : § 7 « Fichiers : outils dédiés » (Edit / Write, jamais `python - <<EOF` à `s.replace`, `sed -i`, `-replace … \| Set-Content` ; exception fichier mixte, les 2 de la copie 5.8 nommés ; Grep / Glob / Read au lieu de `grep`, `find`, `head`, `sed -n`, `cat` ; script répété rangé dans `Saved/<lot>/` ou proposé pour `Tools/`). Puis CHG-278 : 59 → 62 lignes (Grep depuis la racine saute les dossiers ignorés par git, chercher par `path`). |
| `~/.claude/skills/sk-windows-shell/SKILL.md` | Interdits : + 3 lignes (pas d'édition ni de recherche par le shell ; `Set-Content` réencode : 5.1 ANSI, 7 UTF-8 sans BOM). |
| `~/.claude/agents/lp-builder.md`, `lp-cart.md`, `lp-validator.md` | + 1 ligne : Read, Grep, Glob ; aucune édition par script ni `sed -i` (renvoi § 7). |
| `~/.claude/agents/lp-inventory.md` | + 2 lignes : idem, Grep `output_mode: count` pour compter, git et `Measure-Object` restent au shell. |
| `~/.claude/agents/lp-writer.md` | + 2 lignes : Edit ou Write, jamais script / `sed -i` / `Set-Content` ; exception fichier mixte. |
| `~/.claude/agents/lp-impl.md`, `lp-impl-max.md`, `opus-xhigh.md`, `opus-max.md`, `fable-top.md` | + 2 lignes : Edit ou Write ; Grep, Glob, Read ; script répété rangé (renvoi § 7). |
Addon, `Tools/claude/skills/` (versionné), contenu identique sur les deux branches
(`git -C D:\Game\LifePlay-Sandbox diff lot/DC3-atelier ue5.8 -- Tools/claude/skills/lp-doc Tools/claude/skills/lp-validate` vide au moment des commits) :
| Fichier | Changement |
|---|---|
| `lp-doc/SKILL.md` | 51 → 57 lignes : règle Edit en tête ; « au 2026-10-08 le dernier est CHG-248 » et « dernier connu ERR-043 » remplacés par deux commandes `Select-String … \| Measure-Object -Maximum` (rejouées : 262 et 56 au moment de l'écriture). |
| `lp-validate/SKILL.md` | § 1 : fichier mixte normalisé par Edit à annoncer ; édition par script = écart (+ 3 lignes). Puis report du passage `FileCheck.ps1` d'OUT1 (CHG-264) sur `lot/DC3-atelier`, à la demande de « Commençons U7 ». |
Jeu 5.8 (`D:\Game\LifePlay-master 5.8`, `ue5.8`) : `Docs/Migration/Journal_Modifications.md` (CHG-267, CHG-278),
`Docs/Migration/21_Sandbox_Addon.md` (pin 5.8 → `aa0c1e5`), `Docs/Migration/README.md` (plage CHG-267 puis CHG-278).
Fins de ligne : tous les fichiers touchés étaient en LF sans BOM et le restent (`tr -cd '\r' < f | wc -c` = 0 avant et
après ; un premier comptage par `grep -c $'\r'` sous Git Bash était faux, piège noté par OUT1 dans `lp-validate`).
### Commits (rien poussé)
| Dépôt | Branche | Commit | Objet |
|---|---|---|---|
| addon `D:\Game\LifePlay-Sandbox` | `lot/DC3-atelier` | `d350761` | EDIT1 : lp-doc, lp-validate (CHG-267) |
| addon | `lot/DC3-atelier` | `496ff2c` | passage `FileCheck.ps1` d'OUT1 dans lp-validate (CHG-264, intégré par EDIT1) |
| addon `D:\Game\LifePlay-Sandbox-5.8` | `ue5.8` | `250aa41` | EDIT1 : lp-doc, lp-validate (CHG-267) |
| addon | `ue5.8` | `aa0c1e5` | passage `FileCheck.ps1` d'OUT1 (pin 5.8) |
| jeu 5.8 | `ue5.8` | `f6df36b` | journal CHG-267, pin doc 21 `aa0c1e5`, README |
| jeu 5.8 | `ue5.8` | `6e8541c` | journal CHG-278, README (seuls fichiers indexés ; `LifePlay.uproject` modifié par une autre session laissé hors commit) |
## 2. Écarts à la SPEC
- Pas de SPEC écrite ; écarts à la fiche : chiffres de fins de ligne différents (99 / 443 / 2 mixtes au lieu de
87 / 426 / 0) ; numéro CHG-263 prévu, pris par STM entre-temps → CHG-267 ; report du passage OUT1 dans lp-validate et
mise à jour du pin (demandés par « Commençons U7 », hors fiche d'origine) ; ajout CHG-278 (Grep, accord utilisateur).
- Test de chargement fait par un sous-agent `lp-writer` (pas `sk-probe-agent`, qui ne précharge pas `sk-protocol`).
- Effet de bord constaté après coup par EDIT2 (CHG-277) : § 7 prescrivait Edit aussi aux agents qui ne l'ont pas
(`lp-builder`, `lp-cart`, `lp-inventory`, `lp-validator`) → 22 appels Edit refusés dans 6 agents après EDIT1.
Corrigé par EDIT2 (règle « agent sans Edit »), pas par EDIT1.
## 3. Instantané
- `D:\Game\LifePlay_Backup_5.5\EDIT1\` : état d'avant EDIT1 des 12 fichiers hors dépôt (`agents/` 10 fichiers,
`skills/sk-protocol/SKILL.md`, `skills/sk-windows-shell/SKILL.md`), `manifest.md5` (MD5 vérifiés, 0 écart).
- `D:\Game\LifePlay_Backup_5.5\EDIT1b\` : `sk-protocol/SKILL.md` avant CHG-278 (après EDIT2), `manifest.md5`.
- Addon et jeu : l'historique git suffit (`git revert` des commits ci-dessus).
- Attention : ces fichiers ont été modifiés depuis par EDIT2 (CHG-277) et d'autres sessions (gabarits TPL1). Recopier
`EDIT1\` effacerait aussi ces changements ; pour annuler EDIT1 seul, retirer les lignes citées en § 1 par Edit.
## 4. Ce qui n'a pas été fait
- Vérification dans une session neuve que les agents chargent leur nouvelle ligne (voir Preuves, incertain).
- `FileCheck.ps1`, cité par lp-validate (servi aux deux jeux par la jonction), n'existe que dans le jeu 5.8 : signalé
à « Commençons U7 », non traité.
- Aucune entrée dans `Docs/Migration/Journal_Modifications.md` du jeu 5.5 (le journal vit dans la copie 5.8).
## 5. Points à confirmer en VAL
- Dans une session neuve, un sous-agent `lp-impl` cite sa ligne « Modifier avec Edit ou Write… ».
- `git -C D:\Game\LifePlay-Sandbox diff lot/DC3-atelier ue5.8 -- Tools/claude/skills/lp-doc Tools/claude/skills/lp-validate` vide.
- `~/.claude/skills/sk-protocol/SKILL.md` § 7 contient les règles Edit, agent sans Edit (EDIT2), Grep/Glob/Read,
dossiers ignorés, script répété.
- Commande de `lp-doc` rejouée → dernier CHG / ERR conformes au journal et au registre.