LifePlay-Revival/Docs/Migration/etat/AG/TRACE1/TRACE1-T3-SPEC.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

11 KiB

Fiche TRACE1-T3 — Niveau N2 — Modèle prévu opus | utilisé opus-5-5 (claude-opus-5-5, déclaré par l'environnement) — Agent orchestrateur TRACE1 (session principale) — Skills lp-lot, lp-doc, sk-change-safety, sk-windows-shell

TRACE1-T3-SPEC : scripts, index, textes exacts et critères de VAL (2026-10-13)

Base : TRACE1-T2-PROPOSITION.md (révision 1), approuvée par l'utilisateur dans la session TRACE1 (« approuvé, la correction du profile se fera via un autre lot ») ; Q1 à Q9 retenues comme recommandées ; Q10 (nom du compte dans 69 fichiers suivis) confiée à un autre lot. SPEC écrite sur papier : rien n'est appliqué avant le GO de Big Boss.

1. Décisions appliquées

# Décision
Q1 Pas d'archive longue : une trace reste là où elle a été produite jusqu'à son envoi à la corbeille ; seul le résumé est gardé
Q2 Index Docs\Migration\etat\TRACES\TRACES-INDEX.csv, suivi par git, une ligne par fiche ; chaque lot écrit <LOT>-TRACES.csv à sa FIN-LOT
Q3 « 1 mois » depuis la date de production (horodatage du nom, sinon dernière écriture)
Q4 Journaux tournants du profil (UBT, Zen, Launcher, CrashReportClient) hors règle ; plantages du jeu et UAT des cuissons de lot dans la règle
Q5 Dossiers de build hors règle ; les traces qu'ils contiennent dans la règle
Q6 Traces de Backup_5.5 (Dbg-*, builds_supprimees\…\Saved\{Logs,Profiling,Crashes}, *-VAL, ARCH427\…\Crashes) dans la règle, par exception à « sauvegardes jamais supprimées » ; instantanés (manifest.csv et fichiers qu'il décrit) exclus
Q7 3 CSV de dumps suivis par git (portage55) laissés tels quels
Q8 Doublons : la copie de Backup_5.5 part à la corbeille au premier passage, sans attendre 1 mois, si son MD5 égale celui de l'original
Q9 Copie 5.5 traitée comme le reste

2. Fichiers du lot

Fichier Dépôt Action Instantané
Tools\Traces.ps1 jeu création (T4) Existed=False
Tools\Corbeille.ps1 jeu création (T4) Existed=False
Docs\Migration\etat\TRACES\TRACES-INDEX.csv jeu création (T6) Existed=False
Docs\32_Organisation_Agents.md jeu ajout du § 15.12 (T8) oui
Tools\claude\skills\lp-lot\SKILL.md addon 5.8 et addon 5.5 ajout d'un paragraphe (T8) oui (-ProjectRoot)
Tools\claude\skills\lp-paths\SKILL.md addons une ligne au tableau « Dossiers clés » (T8) oui
Tools\claude\skills\lp-doc\gabarits.md addons une ligne au § TRACE (T8) oui
Docs\Journal_Modifications.md, Docs\README.md jeu CHG sous jeton (T8) —
mémoire traces-logs-archivage hors git mise à jour (T8) —

Instantané avant toute écriture : .\Tools\Snapshot.ps1 -Lot TRACE1 -Path Tools\Traces.ps1, Tools\Corbeille.ps1, Docs\Migration\etat\TRACES, Docs\32_Organisation_Agents.md, puis la même commande avec -ProjectRoot D:\Game\LifePlay-Sandbox-5.8 et -ProjectRoot D:\Game\LifePlay-Sandbox pour les trois skills. Écrire un skill : le mode automatique peut refuser (« Self-Modification », VERR1) ; refus = arrêt, signalement, aucun contournement. Ordre des commits : addon 5.8 → addon 5.5 → pin au doc 21 → jeu (lp-repo).

GO de Big Boss (2026-10-13) : couvre T3, T4 (scripts écrits, essais à blanc seulement, aucun envoi réel) et T5 ; GO séparé pour T7 (premier envoi, avec l'accord de l'utilisateur sur la liste chiffrée) ; T8 : DÉCLARATION (doc 32, lp-lot, lp-paths, lp-doc/gabarits.md) avant toute écriture, puis JOURNAL-DEMANDE (STE passe avant) ; addon cible des skills (la jonction 5.8\.claude\skills pointe sur l'addon 5.5) arbitré par Big Boss sur la liste de T8.

3. Tools\Traces.ps1 (lecture seule, ne déplace rien)

Style des scripts Tools\ : en-tête <# .SYNOPSIS .DESCRIPTION .PARAMETER .EXAMPLE #> sans accents, pwsh 7, $ErrorActionPreference = 'Stop', codes de sortie documentés.

  • -Inventaire : rejoue l'inventaire de TRACE1-T1 (racines, motifs et filtre de TRACE1-T1-INV.md § 1, sans les journaux tournants exclus par Q4, sans les verrous etat\REPO\, sans .py, .png, .jpg, .json d'etat\, sans les instantanés : fichiers listés par un manifest.csv de Backup_5.5). Une ligne par fichier : Cat, Chemin (absolu ; %USERPROFILE% à la place du profil), Octets, DateProduction, SourceDate (nom | ecriture).
  • Date de production : premier motif trouvé dans le nom, dans l'ordre _(\d{8})-(\d{6}), backup-(\d{4})\.(\d{2})\.(\d{2}), _(\d{8})(?!\d) ; sinon LastWriteTime. Un dossier de plantage (Crashes\<dossier>) compte comme une seule entrée (date : la plus récente de ses fichiers).
  • -Avant <AAAA-MM-JJ> (défaut : même jour du mois précédent) : ne garde que les entrées antérieures.
  • -Index <csv> (défaut Docs\Migration\etat\TRACES\TRACES-INDEX.csv) : marque chaque entrée couverte si un résumé non vide de l'index la désigne (colonne fichiers : dossier, puis noms séparés par , ou motif avec *, accolades {a, b} permises), sans-resume sinon.
  • -Doublons : parmi les entrées, groupes de même nom et même taille ; MD5 calculé dans chaque groupe ; sortie des groupes à MD5 égal, l'original étant l'entrée hors Backup_5.5.
  • -Sortie <fichier> : écrit la liste (TSV UTF-8 sans BOM) ; sinon console. -Json : objet JSON seul.
  • Garde-fou corbeille : pour chaque entrée, capacité de la corbeille de son volume (Win32_Volume.DeviceID ↔ HKCU:\…\BitBucket\Volume\{guid}\MaxCapacity, Mo) ; entrée plus grosse que la capacité → trop-gros.
  • Ligne de compte finale : TRACES entrees=<n> octets=<o> couvertes=<c> sans-resume=<s> trop-gros=<t>.
  • Codes : 0 ; 1 au moins une entrée sans-resume ou trop-gros ; 2 erreur.

4. Tools\Corbeille.ps1 (seul script qui envoie à la corbeille)

  • -Liste <fichier> : un chemin absolu par ligne (colonne Chemin de Traces.ps1 -Sortie), %USERPROFILE% développé. Sans -Envoyer : à blanc, rien ne bouge. Avec -Envoyer : envoi.
  • Refus, avant tout envoi, de toute la liste si une seule ligne : n'existe pas ; est suivie par git (git -C <dossier> ls-files --error-unmatch <nom> réussit, dans le dépôt qui la contient) ; est sous %USERPROFILE%\.claude ; est hors des racines de Traces.ps1 ; est plus grosse que la capacité de la corbeille de son volume ; est une racine de copie, de build, de dépôt ou de Backup_5.5\<lot> entière ; décrite par un manifest.csv. Sortie REFUS <motif> <chemin>, code 2, rien envoyé.
  • Envoi : Add-Type -AssemblyName Microsoft.VisualBasic puis [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile($p, 'OnlyErrorDialogs', 'SendToRecycleBin') (fichier) ou DeleteDirectory($p, 'OnlyErrorDialogs', 'SendToRecycleBin') (dossier de plantage). Jamais Remove-Item, rm, del, [IO.File]::Delete. Arrêt au premier échec.
  • Contrôle après chaque envoi : Test-Path -LiteralPath $p faux, et un élément de Shell.Application.Namespace(10) dont l'emplacement d'origine (GetDetailsOf(item, 1)) plus le nom égalent $p. Sortie ENVOYE <octets> <chemin>.
  • Ligne de compte finale : CORBEILLE envoyes=<n> octets=<o> refuses=<r> echecs=<e>. Codes : 0 tout envoyé (ou à blanc sans refus) ; 2 refus, échec ou contrôle en échec.

5. Index et fichiers de lot

TRACES-INDEX.csv et <LOT>-TRACES.csv : CSV ;, UTF-8 sans BOM, LF, en-tête :

date;lot;fiche;types;fichiers;nombre;octets;statut;resume

Colonnes et valeurs : TRACE1-T2-PROPOSITION.md § 3. statut : en place, corbeille AAAA-MM-JJ, déjà absent. resume : Contexte : … Résultat : … Suite : …, 400 caractères au plus, sans ; (remplacé par ,), sans nom de compte, sans C:\Users, sans contenu de jeu.

6. Textes exacts (T8)

  • Doc 32, § 15.12 (après le § 15.11, titre ### 15.12 Traces et journaux des sessions) : texte de TRACE1-T2-PROPOSITION.md § 6.1, sans les guillemets de citation, complété à la fin de : Le vidage automatique de la corbeille par l'assistant de stockage de Windows (30 jours sur ce poste) reste au choix de l'utilisateur ; aucune session ne touche ce réglage. puis de : Sources : TRACE1-T1-INV.md, TRACE1-T2-PROPOSITION.md (révision 1, approuvée par l'utilisateur le 2026-10-13) ; scripts Tools\Traces.ps1 et Tools\Corbeille.ps1.
  • lp-lot (nouvelle puce de « Livrables et registres ») : texte de la proposition § 6.2, complété de : Passage mensuel : Tools\Traces.ps1 -Inventaire -Index … puis Tools\Corbeille.ps1 -Liste … (à blanc, puis -Envoyer sur accord de l'utilisateur).
  • lp-paths, tableau « Dossiers clés », ligne ajoutée après « Journaux de commandlets » : | Traces et journaux (règle TRACE1) | sur place jusqu'à la corbeille ; résumés : Docs\Migration\etat\TRACES\TRACES-INDEX.csv et etat\<projet>\<lot>\<LOT>-TRACES.csv ; Tools\Traces.ps1, Tools\Corbeille.ps1 | et, à la ligne « Sauvegardes et instantanés », après « jamais supprimées » : (sauf les traces, règle TRACE1).
  • lp-doc/gabarits.md, § TRACE, ligne ajoutée à la fin : Résumé d'index (règle TRACE1) : Contexte : … Résultat : … Suite : …, une ligne par fiche dans <LOT>-TRACES.csv à la FIN-LOT ; la note TRACE ci-dessus en fournit la matière.

7. Critères de VAL (T4v, agent distinct de l'IMPL)

  1. Traces.ps1 -Inventaire : entrées dans ± 2 % du compte de T1 après exclusions Q4, etat\REPO, instantanés (écart expliqué) ; 0 occurrence du nom du compte dans la sortie.
  2. Date de production : 6 noms types (U5_Build_20261008-170000.log, LifePlay-backup-2026.09.30-21.23.52.log, L7i_partie1_20260930.log, STE-J6.utrace, dossier Crashes\UECC-…, fichier sans date) donnent la date attendue.
  3. -Index sur un CSV témoin de 3 lignes (nom exact, motif *, accolades) : couvertures attendues ; ligne à résumé vide = sans-resume.
  4. -Doublons retrouve SessionA.utrace (original LifePlay_Build_5.5_DebugGame, copie Backup_5.5\Dbg-I4) ; MD5 égaux.
  5. Corbeille.ps1 à blanc : refus prouvés pour un chemin absent, un fichier suivi par git, un chemin sous %USERPROFILE%\.claude, une racine de build, une ligne de manifest.csv ; code 2, rien envoyé (MD5 et existence relus).
  6. Lecture du code : aucune des chaînes Remove-Item, rm , del , Delete( hors des deux appels FileSystem::DeleteFile / DeleteDirectory avec SendToRecycleBin ; aucun -Force sur un envoi.
  7. Fins de ligne et encodage comme les autres Tools\*.ps1 ; pwsh -NoProfile -Command "& { . .\Tools\Traces.ps1 -? }" sans erreur d'analyse.

8. Essai réel (T5) et premier passage (T7)

  • T5 : un fichier témoin Docs\Migration\etat\AG\TRACE1\TRACE1-T5-temoin.txt (ignoré par git, sur D:) ; Corbeille.ps1 à blanc, puis -Envoyer ; contrôle § 4 ; l'utilisateur le restaure depuis la corbeille et confirme. Refus du mode automatique = arrêt, signalement, pas d'autre méthode.
  • T6 : TRACES-INDEX.csv initial, une ligne par lot (ou par fiche quand un livrable la cite), résumés reconstitués depuis les livrables d'etat\ ; Contexte inconnu. permis pour l'existant non attribuable.
  • T7 : Traces.ps1 -Avant 2026-09-13 (attendu ≈ 122 fichiers, ≈ 62 Mo, TRACE1-T1-INV.md) plus -Doublons (Q8) ; liste chiffrée à Big Boss pour l'accord de l'utilisateur ; commit de l'index ; Corbeille.ps1 -Envoyer ; statuts corbeille 2026-MM-JJ ; second commit.

Tours : 3 / 40 (fiche tenue par la session principale)