9.5 KiB
Fiche AMEL1-I2 — Niveau N1 — Modèle prévu non précisé par la fiche | utilisé claude-sonnet-5-5 — Agent lp-inventory — Skills sk-protocol, sk-recount, lp-paths
AMEL1-I2-INV : règle .gitignore pour suivre les scripts de etat/ et effet mesuré (2026-10-14)
Abandonnée, décision de l'utilisateur du 2026-10-14 : « Restent ignorés » pour les scripts de
etat/;Tools/ignoré à son tour (« on gitignore Tools. c'est un dossier pour Agent IA », CHG-357). Les 3 lignes ci-dessous ne sont pas appliquées ; ce document reste comme trace. Le nettoyage des chemins de profil des 10 scripts (instantanéAMEL1-I2) est conservé.
Lecture seule. .gitignore n'est pas modifié. Seuls écrits : ce livrable et %TEMP%\claude\amel1-i2\ (mesure.py, repo\, liste-pubcheck.txt).
1. Commandes exactes
Read D:\Game\LifePlay-master 5.8\.gitignore (91 lignes)
Glob **/*.py | **/*.ps1 | **/*.jsonl path=...\Docs\Migration\etat
python -I -X utf8 "%TEMP%\claude\amel1-i2\mesure.py"
pwsh -NoProfile -Command '& "D:\Game\LifePlay-master 5.8\Tools\PubCheck.ps1" -Fichiers @(Get-Content -LiteralPath "$env:TEMP\claude\amel1-i2\liste-pubcheck.txt" | Select-Object -First 50); "EXIT=" + $LASTEXITCODE'
pwsh ... Select-Object -Skip 50 ... (2e lot, 18 fichiers)
mesure.py (Write, dans %TEMP%\claude\amel1-i2\) fait : os.walk de etat/ ; git -C "D:\Game\LifePlay-master 5.8" check-ignore --no-index -v -n -z --stdin (avant, dépôt réel) ; git init d'un dépôt jetable %TEMP%\claude\amel1-i2\repo, fichiers vides aux mêmes chemins, .gitignore réel copié octet pour octet, puis le même check-ignore ; puis le .gitignore avec les 3 lignes insérées, et le même check-ignore (après) ; git ls-files -z -- Docs/Migration/etat.
Méthode choisie : dépôt temporaire avec le vrai moteur git (pas fnmatch, qui ne rend ni l'ordre « dernière règle gagnante » ni le ré-inclusion de répertoires). Validation de la méthode : écart entre « avant » du dépôt réel et « avant » du dépôt temporaire = 0 sur 68 scripts + 1135 témoins (methode: ecarts ... : 0 []). --no-index sert à juger la règle seule, que le fichier soit déjà suivi ou non. Un motif !... rapporté par -v est une ré-inclusion : compté « suivi », pas « ignoré » (première version du script l'avait compté ignoré : corrigée, réexécutée).
2. Lecture du .gitignore actuel (établi, .gitignore:ligne)
| Ligne | Règle | Effet sous etat/ |
|---|---|---|
| 53 | /Docs/Migration/etat/**/*.txt |
ignore les .txt (redondante depuis 75) |
| 66 | __pycache__/ |
ignore ces répertoires (mais voir 76) |
| 75 | /Docs/Migration/etat/** |
ignore tout fichier et répertoire sous etat/ |
| 76 | !/Docs/Migration/etat/**/ |
ré-inclut les répertoires (sinon git ne descend pas, les exceptions fichier seraient sans effet) ; vient après 66, donc __pycache__/ est de nouveau parcouru |
| 77 | !/Docs/Migration/etat/**/*.md |
ré-inclut .md |
| 78 | !/Docs/Migration/etat/**/*.csv |
ré-inclut .csv |
| 80 | /Docs/Migration/etat/sandbox/DC2/DC2-BUILD.md |
après 77 : ré-ignore ce .md (adresse e-mail) |
Git applique la dernière règle qui correspond. .md et .csv : 75 ignore, 77/78 ré-incluent, donc suivis. .py, .ps1, .jsonl, .txt, .pyc : seule 75 correspond (ou 53 pour .txt), donc ignorés. Preuve (sortie du script, « avant ») : les 68 scripts répondent tous 75:/Docs/Migration/etat/**.
3. Texte exact proposé
À insérer après la ligne 78 (avant le commentaire « donnee personnelle », ligne 79 actuelle, qui devient 82) ; elles doivent rester après 75 et 76, et avant 80 sans importance (80 vise un .md) :
!/Docs/Migration/etat/**/*.py
!/Docs/Migration/etat/**/*.ps1
!/Docs/Migration/etat/**/*.jsonl
Commentaire facultatif à mettre en ligne 74 ou avant : # AMEL1-I2 : scripts de lot suivis aussi (.py, .ps1, .jsonl) ; .txt, .pyc, __pycache__ restent locaux.
Numéros observés dans le dépôt temporaire (sans commentaire) : 79 .py, 80 .ps1, 81 .jsonl.
Témoins (dépôt temporaire, « après », chemins fictifs) :
| Chemin | Avant | Après | Règle après |
|---|---|---|---|
etat/ZZ/L1/b.py / etat/ZZ/b.ps1 / etat/b.jsonl |
ignoré | suivi | 79 / 80 / 81 |
etat/ZZ/L1/a.txt |
ignoré | ignoré | 75 |
etat/ZZ/L1/a.pyc |
ignoré | ignoré | 75 |
etat/ZZ/L1/__pycache__/a.cpython-312.pyc |
ignoré | ignoré | 75 |
etat/ZZ/L1/n.json, n.psm1, n.ps1.txt |
ignoré | ignoré | 75 |
etat/ZZ/L1/n.md, n.csv |
suivi | suivi | 77 / 78 |
etat/ZZ/L1/__pycache__/c.py (hypothétique) |
ignoré | suivi | 79 |
Tools/x.py |
suivi | suivi | aucune |
Réserve : un .py placé dans un __pycache__/ serait suivi (cas non réel : Python n'y met que des .pyc). Aucun fichier de ce type n'existe (1135 témoins réels .txt/.pyc/__pycache__ : 1135 ignorés avant, 1135 après).
4. Comptes bruts (sortie de mesure.py)
INVENTAIRE py/ps1/jsonl (os.walk): 68
temoins negatifs reels (txt/pyc/__pycache__): 1135
deja suivis (ls-files) parmi les scripts: 4 [EVAL2/AMEL1/R2/cas-v2.jsonl, construire_cas.py, ecriture-gardien-v2.py, test_crochet.py]
methode: ecarts temp-avant vs reel-avant (ignore oui/non): 0 []
TOTAL devenus suivis: 68 fichiers, 1075449 octets
motifs avant (scripts): {'75:/Docs/Migration/etat/**': 68}
motifs apres (scripts): {'79:...*.py': 48, '80:...*.ps1': 19, '81:...*.jsonl': 1}
Recompte par Glob (autre méthode) : 48 .py (47 + les 4 relatifs ecriture-gardien-v2.py, construire_cas.py, test_crochet.py, cas-v2.jsonl à part : 45 chemins absolus + 3 relatifs .py), 19 .ps1, 1 .jsonl = 68. Concorde.
| Extension | Total | Ignorés avant | Ignorés après | Passent à suivi | Octets |
|---|---|---|---|---|---|
.py |
48 | 48 | 0 | 48 | 771 239 |
.ps1 |
19 | 19 | 0 | 19 | 128 433 |
.jsonl |
1 | 1 | 0 | 1 | 175 777 |
| Total | 68 | 68 | 0 | 68 | 1 075 449 (≈ 1,03 Mio) |
Nuance : 4 de ces 68 (dossier EVAL2/AMEL1/R2) sont déjà suivis (ajoutés de force, ls-files). Les nouveaux suivis réels sont donc 64 ; la règle les rend simplement cohérents (plus d'ajout forcé nécessaire).
Lot (etat/<projet>/<lot>) |
Fichiers | Octets |
|---|---|---|
| AG/ORGA1 | 1 | 7 484 |
| AG/P7 (hooks/ecriture-gardien.py, essais/…ps1) | 2 | 119 610 |
| AG/PUB3 | 2 | 8 049 |
| AG/TRACE1 | 12 | 108 104 |
| AG/VERR1 | 1 | 839 |
| AG/brouillons | 1 | 2 113 |
| ARCH427 | 1 | 3 233 |
| EVAL/scripts | 17 | 193 785 |
| EVAL2/AMEL1 (R2, 4 déjà suivis) | 4 | 320 913 |
| EVAL2/scripts | 16 | 236 490 |
| OUT1 | 2 | 20 825 |
| ST/STE | 6 | 46 599 |
| U58/U3 | 1 | 1 662 |
| U58/U7b | 2 | 5 743 |
| Total | 68 | 1 075 449 |
Liste complète des 68 chemins et tailles : sortie du script (section LISTE), reproductible par la commande ci-dessus ; liste absolue dans %TEMP%\claude\amel1-i2\liste-pubcheck.txt.
5. PubCheck sur les 68 fichiers (2 lots : 50 + 18)
Sorties brutes : lot 1 PubCheck : 16 constat(s), EXIT=1 ; lot 2 PubCheck : 4 constat(s), EXIT=1. Total 20 constats, 10 fichiers, chaque fichier avec deux constats sur la même ligne, PROFIL et NOM (chemin de profil utilisateur contenant le nom du compte ; le nom n'est pas recopié ici). 58 fichiers sans constat, dont les 4 de R2.
Fichier (sous etat/) |
Ligne | Constats |
|---|---|---|
| EVAL/scripts/eval_boss.py | 15 | PROFIL, NOM |
| EVAL/scripts/eval_commandes.py | 13 | PROFIL, NOM |
| EVAL/scripts/eval_load.py | 7 | PROFIL, NOM |
| EVAL/scripts/eval_probe.py | 6 | PROFIL, NOM |
| EVAL/scripts/eval_probe2.py | 4 | PROFIL, NOM |
| EVAL/scripts/eval_probe3.py | 6 | PROFIL, NOM |
| EVAL/scripts/eval_probe4.py | 4 | PROFIL, NOM |
| EVAL/scripts/eval_probe8.py | 4 | PROFIL, NOM |
| OUT1/OUT1_uasset_rejeu.py | 2 | PROFIL, NOM |
| ST/STE/STE-J6-TRACE/run_pass.ps1 | 9 | PROFIL, NOM |
À corriger AVANT que la règle entre : ces 10 lignes (chemin absolu du profil écrit en dur) deviendraient publiables avec le compte. Correction proposée à l'orchestrateur (non faite ici) : remplacer par %USERPROFILE% / os.path.expanduser("~") ou <compte>. Alternative : ne pas suivre ces 10 fichiers (règle plus étroite par lot) tant qu'ils ne sont pas nettoyés.
6. Écarts, établi / estimé / incertain
- Écart au compte attendu : la fiche n'en donnait pas ; 68 trouvés (48/19/1).
- Établi : lecture des règles (
.gitignore:53,66,75-80) ; effet des 3 lignes sur les 68 scripts et 1135 témoins, par le moteur git sur dépôt jetable validé (0 écart « avant ») ; taille ; constats PubCheck. - Estimé :
.gitignoreréel a des fins de ligne mixtes (4 CRLF vers les l. 87-90 d'aprèssk-protocol§ 7, non revérifié ici) ; Edit le ramènerait en LF : décision de l'orchestrateur sur la méthode d'écriture. L'écart du numéro de ligne (79-81) est établi seulement pour une insertion après la ligne 78. - Incertain / non mesuré : contenu des 58 fichiers sans constat relu seulement par PubCheck (ses motifs, pas une relecture humaine) ; autres dépôts (addon, modules) non concernés par cette règle, non mesurés ; scripts futurs ;
ecriture-gardien.py(P7/hooks) etecriture-gardien-v2.py(R2) font la même taille, 117 116 octets (non comparés au contenu) ; fichiers.pyhorsetat/non concernés.
Fichiers à commiter
Aucun par cet agent hors le présent livrable (D:\Game\LifePlay-master 5.8\Docs\Migration\etat\EVAL2\AMEL1\AMEL1-I2-GITIGNORE.md, A, .md donc déjà suivi). .gitignore : non touché.
Tours : 7 / 40