11 KiB
Fiche OUTIL1-I1b — 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
OUTIL1-I1b-INV : inventaire des scripts dispersés sous etat\ (2026-10-14)
Périmètre : .py, .ps1, .jsonl sous D:\Game\LifePlay-master 5.8\Docs\Migration\etat\, hors __pycache__, EVAL\scripts\ et EVAL2\scripts\. Tableau complet (12 colonnes) : OUTIL1-I1b.csv (même dossier). Aucun script n'a été exécuté.
1. Commandes exactes
- Recensement (PowerShell, lecture seule) :
pwsh -NoProfile -Command '$f = Get-ChildItem -LiteralPath "D:\Game\LifePlay-master 5.8\Docs\Migration\etat" -Recurse -File -Include *.py,*.ps1,*.jsonl | Where-Object { $_.FullName -notlike "*__pycache__*" -and $_.FullName -notlike "*\EVAL\scripts\*" -and $_.FullName -notlike "*\EVAL2\scripts\*" } | Sort-Object FullName; $f | ForEach-Object { $_.FullName.Substring(48) + "|" + $_.Length + "|" + $_.LastWriteTime.ToString("yyyy-MM-dd") }; "TOTAL_PERIMETRE=" + ($f | Measure-Object).Count' - Compte brut sans exclusion : même commande sans les deux
-notlike "*\EVAL...*"(TOTAL_BRUT). - Liste croisée : Glob
**/*.{py,ps1,jsonl}sousetat\. - Doublons d'octets :
Get-FileHash -Algorithm MD5surAG\P7\hooks\ecriture-gardien.py,EVAL2\AMEL1\R2\ecriture-gardien-v2.py, la copie du profil (%USERPROFILE%\.claude\hooks\ecriture-gardien.py), puislp-mcp-garde-lecture.py(brouillon et copie du profil). - Dernier usage : Grep du nom de chaque script dans
etat\**\*.md(un Grep par script ou groupe). Cas de la batterie : Grep^\{en mode count surcas-v2.jsonl. - Outils de
Tools\: GlobTools\*puis lecture des en-têtes de Traces, Corbeille, TracesRacines, PubCheck, CopieEtat, LogStats, FicheStats, Indicateurs, EssaiJournal, uasset, uasset58, FileCheck, UeState, Snapshot, Verrou. - Contrôle du CSV : Grep
^([^;]*;){11}[^;]*$en mode count sur le CSV.
2. Comptes bruts
TOTAL_PERIMETRE=35
TOTAL_BRUT=68 (dont EVAL\scripts = 17 et EVAL2\scripts = 16, hors périmètre : 68 - 33 = 35)
Grep ^\{ cas-v2.jsonl : 417
Grep ^([^;]*;){11}[^;]*$ OUTIL1-I1b.csv : 36 (1 en-tête + 35 lignes, 12 champs chacune)
MD5 E03D4332D46392A44D5FA66A8FC0B57D : AG\P7\hooks\ecriture-gardien.py = EVAL2\AMEL1\R2\ecriture-gardien-v2.py = copie du profil
MD5 F787D205D4102A16109606F4A357E9E5 : lp-mcp-garde-lecture.py du brouillon = copie du profil
Répartition par dossier (recompte à la main de la liste du Glob) : AG\TRACE1 12, ST\STE 6, EVAL2\AMEL1\R2 4, U58\U7b 2, OUT1 2, AG\PUB3 2, AG\P7 2, U58\U3 1, ARCH427 1, AG\brouillons 1, AG\VERR1 1, AG\ORGA1 1 = 35.
Totaux par classe : (a) 8, (b) 22, (c) 3, (d) 2 = 35.
| Classe | Fichiers |
|---|---|
(a) intégrer à Tools\ (8) |
ecriture-gardien-v2.py, test_crochet.py, cas-v2.jsonl, lp-mcp-garde-lecture.py, ARCH427_manifest.py, cmp_pie.py, TRACE1-T4b-essai.ps1, TRACE1-T4cv-essais.ps1 |
| (d) fusionner (2) | logstats.py (STE) vers LogStats.ps1 ; TRACE1-T4cv-essais3.ps1 vers le futur test des traces |
| (c) obsolète, corbeille sur accord (3) | t6_essai1.ps1 (remplacé par t6_a2.ps1), TRACE1-T4c-essais.ps1 (remplacé par T4cv-essais), TRACE1-T4cv-attente.ps1 |
| (b) laisser en trace (22) | les 22 autres (voir CSV) |
3. Écarts au compte attendu de la fiche
- Attendu ≈ 35 : obtenu 35. Les décomptes de la fiche concordent : TRACE1 12, STE 6, AMEL1 4, U7b 2, OUT1 2, PUB3 2, P7 2, un chacun pour U3, ARCH427, brouillons, VERR1, ORGA1.
OUT1_uasset_rejeu_brut.py(18 888 octets) est la pièce citée parOUT1-UASSET.md:41-42;Tools\uasset.pyen contient le corps (en-tête deTools\uasset.py). Doublon de contenu, gardé (b).AG\P7\hooks\ecriture-gardien.pyn'est pas un script de lot de plus : c'est la même chose que le crochet v2 et que la copie installée (3 MD5 égaux).- Aucun de ces 35 fichiers n'est suivi par git (
etat\ignoré hors.mdet.csv,.gitignore:75cité parTRACE1-T4b-IMPL.md). Les.pyet.ps1n'existent donc que sur le disque. - Tests exécutés sur aucun script (consigne). Les sorties attendues viennent des livrables cités ; elles n'ont pas été rejouées.
4. Établi / estimé / incertain
Établi (lu à la source ou commande rejouée) : les 35 chemins, tailles et dates ; les en-têtes et le corps des 35 scripts (lus en entier ou sur leurs 20 à 70 premières lignes pour les plus longs, voir ci-dessous) ; les trois MD5 égaux du crochet ; le MD5 égal de lp-mcp-garde-lecture.py brouillon et profil ; 417 lignes dans cas-v2.jsonl ; l'absence de F5/DESTROY/hitch dans LogStats.ps1 (Grep : 3 lignes SPAWN seulement) ; la ligne conformes : 417 / 417 d'AMEL1-R2-IMPL.md:171.
Estimé : classement b/c (par jugement sur la dépendance à des données du jour, aux scratchpads de sessions disparues ou à des inventaires figés). Les scripts longs n'ont pas été lus en entier : ecriture-gardien-v2.py (40 premières lignes, 117 Ko), construire_cas.py (60 lignes), TRACE1-T4a/T4c/T4cv/T4v-* (15 à 30 lignes), p1_analyse.py, p3_complements.py, p4_tree.py, p5_rh.py, logstats.py (30 à 40 lignes), OUT1_uasset_rejeu_brut.py (60 lignes). Les entrées et sorties de ces fichiers viennent donc de leurs en-têtes et des livrables.
Incertain : (1) les journaux de build archivés de logstats.py (J6, H9) ont pu être mis à la corbeille par la règle TRACE1 : l'essai de non-régression serait alors à refaire sur un journal témoin figé. (2) Les journaux PIE 5.5 de cmp_pie.py (08/10) : idem. (3) Le contenu du PUB3-T4 sorti (TOTAL : ...) n'a pas été retrouvé par Grep dans PUB3-T4*.md. Essai qui trancherait : Grep "TOTAL" PUB3-T6b-VAL.md puis relecture. (4) cas-v2.jsonl n'a pas été passé à PubCheck (hors des deux fichiers de la fiche) : il contient des commandes issues de transcriptions, avec des marques de profil.
Réponses aux cas particuliers
- Crochet v2 et sa batterie : le crochet (
ecriture-gardien-v2.py) est installé dans le profil, MD5 égal. Oui,test_crochet.py+cas-v2.jsonldoivent devenir un outil de test du crochet dansTools\hooks\TestCrochet.py: il rejoue 417 cas (conformes : 417 / 417, code 0), a un témoin négatif (246 / 417, code 1 sur l'ancien crochet,AMEL1-R2-IMPL.md:122) et ne lit que le crochet passé en argument.construire_cas.pyreste en trace (b) : il lit des transcriptions et des sauvegardes voués à l'archivage. La source du crochet doit être unique :Tools\hooks\ecriture-gardien.py, le profil en recevant une copie (politique d'installation à décider). - Scripts P7 :
P7-T7-codeturion.ps1etAG\P7\hooks\ecriture-gardien.pyclassés (b), lot P7, selon la fiche. Pas d'évidence contraire, sauf que le second est un doublon exact de la source (a) ci-dessus.
Détail des (a) et (d) : cible, normalisation, non-régression
| Source | Cible proposée | Normalisation | Cas d'origine (commande, sortie attendue citée) |
|---|---|---|---|
EVAL2\AMEL1\R2\ecriture-gardien-v2.py |
Tools\hooks\ecriture-gardien.py |
codes 0/2 imposés par le protocole des crochets ; aucun chemin d'entrée | python -I -X utf8 test_crochet.py ecriture-gardien-v2.py -> conformes : 417 / 417, code 0 (AMEL1-R2-IMPL.md:121, :171) |
EVAL2\AMEL1\R2\test_crochet.py |
Tools\hooks\TestCrochet.py |
--cwd au lieu de la constante en dur ; usage 64 -> 2 ; cas par défaut à côté du script ; crochet absent = 2 |
même commande ; témoin négatif sur l'ancien crochet : conformes : 246 / 417, code 1 (AMEL1-R2-IMPL.md:122) |
EVAL2\AMEL1\R2\cas-v2.jsonl |
Tools\hooks\cas-v2.jsonl |
marques de profil conservées ; PubCheck avant tout dépôt | groupes a 36/36, b 40/40, c 245/245, t 93/93, r 3/3 (AMEL1-R2-IMPL.md:160-171) |
AG\brouillons\agents\lp-mcp-garde-lecture.py |
Tools\hooks\lp-mcp-garde-lecture.py |
codes 0/2 du protocole ; cas à extraire en jsonl | python -I lp-mcp-garde-lecture.py sur stdin : 10 cas sur 10 conformes (MCPA-T1-ESSAI.md:61) |
ARCH427\ARCH427_manifest.py |
Tools\Manifeste.py |
0/1/2 aussi pour scan (racine absente, erreur d'écriture) ; sortie sous Saved\ ou etat\ ; --hash-ext |
scan D:\Game\LifePlay-master -> 2 770 fichiers, 126 377 871 octets, 861 hachés, 205 dossiers (ARCH427-T3-AVANT.md:31, arbre vivant : à refaire sur un témoin figé) ; compare 0 si #TOTAL égaux (ARCH427-T5-VAL.md:9) |
U58\U3\cmp_pie.py |
Tools\CmpPie.py (ou LogStats.ps1 -Compare -Signatures) |
--ref / --cible au lieu de -- ; 0 aucune nouveauté, 1 nouveautés, 2 usage |
4 journaux PIE 5.5 contre 5.8 : 5.8 = 47 signatures, 5.5 = 101, 3 seulement en 5.8 (U3-T4-EDITEUR.md:16-17) |
AG\TRACE1\TRACE1-T4b-essai.ps1 |
Tools\Tests\Corbeille.essais.ps1 |
racine par $PSScriptRoot\.. ; listes en fixtures ; -Sortie ; 0/1/2 |
cas 1 à 5 REFUS <motif> code 2, cas 6 code 0, liste témoin refuses=5, ETAT IDENTIQUE=True, corbeille avant = après (TRACE1-T4b-IMPL.md:98) |
AG\TRACE1\TRACE1-T4cv-essais.ps1 (+ T4cv-essais3 en (d)) |
Tools\Tests\TracesCorbeille.essais.ps1 |
chemins par $PSScriptRoot\.. ; -Sauvegardes et -Sortie ; 0/1/2 ; étapes sans inventaire figé |
R1, R2, E11 levés, critères 1 à 7 sans régression, corbeille avant = après (TRACE1-T4cv-VAL.md:164) |
ST\STE\STE-J6-TRACE\logstats.py (d) |
Tools\LogStats.ps1 (compteurs F5, DESTROY, hitch) |
interface -Log conservée ; 0/1/2 |
python -I -X utf8 logstats.py J6 <journal> H9 <archive> (STE-J6-TRACE.md:30) -> J6 : lignes=9937, No SkeletalMesh=3343, F5 LogSkinnedMeshComp=3338, DESTROY=31, index SPAWN=36 (:191-197) |
Points à confirmer par l'utilisateur
- Emplacement :
Tools\est ignoré par le dépôt public depuis072a6c8; les outils intégrés y seraient versionnés où (addon privé, ou aucun dépôt) ? Les sous-dossiersTools\hooks\etTools\Tests\n'existent pas encore. - Politique du crochet : source unique
Tools\hooks\ecriture-gardien.pyet copie dans le profil, ou lien. - Corbeille des (c) :
t6_essai1.ps1,TRACE1-T4c-essais.ps1,TRACE1-T4cv-attente.ps1, après accord et selonTools\Corbeille.ps1. - Amendement des skills : quels skills citent ces scripts par leur chemin sous
etat\? Non recherché ici (hors fiche I1b).
Tours : 17 / 40
Constats
- 22 scripts sur 35 portent des chemins en dur de scratchpads de sessions, d'inventaires figés ou de transcriptions : ils ne sont pas rejouables tels quels, ce qui justifie de ne pas les intégrer.
- Aucun script du périmètre n'a de code de sortie 0/1/2 complet aujourd'hui ; trois seulement ont des codes (
ARCH427_manifest.py0/1/2,PUB3-T4-remplacer.ps10/2,run_pass.ps10/2/3/4).