LifePlay-Revival/Docs/Migration/etat/AG/TRACE1/TRACE1-T2-PROPOSITION.md

161 lines
13 KiB
Markdown
Raw Normal View History

Fiche TRACE1-T2 — 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-paths, lp-doc, sk-change-safety
# TRACE1-T2-PROPOSITION : résumé, index et passage mensuel des traces (2026-10-13, révision 1)
Proposition à soumettre à l'utilisateur par Big Boss. **Rien n'est appliqué** : aucun dossier créé, aucun fichier
déplacé, aucun script écrit, rien de commité. Chiffres : `TRACE1-T1-INV.md`. Règle de départ : mémoire
`traces-logs-archivage` (utilisateur, 2026-10-13).
**Révision 1 (consigne de l'utilisateur dans cette session, 2026-10-13)** : « les traces et log sont vite périssables.
il n'est pas nécessaire de les conserver ad vitam. par contre un court résumé pour situer le contexte et les résultats
est plus important ». Conséquences : plus de dossier d'archive à alimenter ni de recopie ; le **résumé** devient le
livrable durable, écrit par le lot quand il connaît encore le contexte ; le fichier reste où il a été produit jusqu'à
son passage en corbeille ; le vidage de la corbeille à 30 jours n'est plus un risque à traiter.
## 1. Périmètre proposé
| Dans la règle | Hors règle |
|---|---|
| Traces Insights `.utrace` ; profilage (`Saved\Profiling` : CSV, LLM, MemReport, LPDebug, ChaosVD) | Transcriptions des sessions Claude (`%USERPROFILE%\.claude\projects`) : gardées (règle de l'utilisateur) |
| Journaux de commandes : `Build.ps1`, `RunCommandlet.ps1`, `BuildDebug.ps1` (`Saved\Logs\portage`), UAT des cuissons de lot, éditeur sans interface, jeu lancé pour une fiche (`<build>\…\Saved\Logs`) | Livrables `.md` / `.csv` de `etat\` (suivis par git) |
| Dumps et sorties de commandlets (`.txt` de `etat\<projet>\<lot>\` et de `portage`, `*_assets_avant/apres.txt`) | Verrous et tickets du gardien (`etat\REPO\`), scripts et images de preuve de `etat\` |
| Plantages produits pendant une fiche (`Saved\Crashes`, `.dmp`, `.runtime-xml`) | Les builds eux-mêmes (Q5) et les instantanés de `Snapshot.ps1` (`manifest.csv`, Q6) |
| Sorties de `CollectDebugArtifacts.ps1` (`Backup_5.5\Dbg-*`) | Journaux tournants des outils d'Epic dans le profil (UBT, Zen, Launcher, CrashReportClient : Q4) |
## 2. Où vivent les traces : sur place, pas d'archive longue
- Une trace **reste là où elle a été produite** (`Saved\Logs\portage`, `Saved\Profiling` du build, `etat\<projet>\<lot>\`,
`Backup_5.5\Dbg-*`) jusqu'au passage mensuel qui l'envoie à la corbeille. Aucune recopie, aucun dossier
`LifePlay_Traces` (variante de la version initiale, abandonnée : elle conservait des fichiers que l'utilisateur
juge périssables).
- « Archivé proprement » = **résumé et indexé** : l'index dit où est la trace, pourquoi elle a été prise et ce qu'elle a
montré ; c'est cela qui reste.
- Rien de lourd ni aucun chemin `C:\Users\<compte>` n'entre dans git : seul l'index (texte) y va.
## 3. Index : un fichier, une ligne par fiche
**`Docs\Migration\etat\TRACES\TRACES-INDEX.csv`**, suivi par git (les `.csv` d'`etat\` le sont déjà) : le résumé survit
au fichier et à la corbeille. CSV `;`, UTF-8 sans BOM, fins de ligne LF (comme `etat\MAPPING.csv`).
**Une ligne par ensemble de traces d'une même fiche** (le contexte et le résultat sont ceux de la fiche ; une fiche
produit 1 à 10 fichiers : journal de build, journal de jeu, `.utrace`, dumps). Une trace isolée ou très lourde peut
avoir sa ligne. Écart à la demande initiale de Big Boss (« une ligne par trace ») : la liste des fichiers reste
rejouable par la colonne `fichiers` ; à trancher en Q2.
```
date;lot;fiche;types;fichiers;nombre;octets;statut;resume
2026-10-13;STE;STE-J6;utrace, log-jeu;LifePlay_Build_5.8_STE-J6_Development\Windows\LifePlay\Saved\{Profiling\STE-J6.utrace, Logs\LifePlay.log};2;<octets>;en place;Contexte : <…>. Résultat : <…>. Suite : <…>.
```
(exemple ; valeurs entre `<>` non relevées)
| Colonne | Contenu |
|---|---|
| `date` | date de **production** `AAAA-MM-JJ` (la plus récente des traces de la ligne) : horodatage du nom, sinon dernière écriture |
| `lot`, `fiche` | `_sans-lot` / `—` pour l'existant non attribuable |
| `types` | parmi `utrace`, `profil`, `log-build`, `log-commandlet`, `log-uat`, `log-jeu`, `log-editeur`, `dump`, `crash` |
| `fichiers` | dossier relatif à `D:\Game\` et noms (ou motif `<Lot>_*`) ; `%USERPROFILE%\…` pour le profil, jamais le nom du compte |
| `nombre`, `octets` | relevés à l'écriture de la ligne |
| `statut` | `en place`, `corbeille AAAA-MM-JJ`, `déjà absent` |
| `resume` | gabarit du § 4 ; obligatoire avant tout passage en corbeille |
Écriture sans conflit entre sessions : chaque lot écrit **ses** lignes dans `etat\<projet>\<lot>\<LOT>-TRACES.csv` à sa
FIN-LOT ; seul le passage mensuel les reporte dans `TRACES-INDEX.csv` (un rédacteur, pas de jeton à créer).
## 4. Gabarit de résumé (le livrable durable)
Trois phrases courtes, 400 caractères au plus :
```
Contexte : <pourquoi la trace a été prise : question ou hypothèse de la fiche ; conditions : copie ou build, branche, HEAD, machine calme ou non>.
Résultat : <ce qu'elle a montré, chiffré : code de sortie, erreurs / avertissements, durée, défaut trouvé ou non, verdict>.
Suite : <livrable qui l'exploite (`<LOT>-Tn-….md`) ou décision prise ; « non exploitée » sinon>.
```
- Exemple (forme seulement, faits non vérifiés) : `Contexte : vérifier qu'une partie de 8 min sur le build STE-J6 Development ne montre plus le défaut de la
fiche H9, machine calme. Résultat : aucun défaut constaté, trace de 1,5 Go. Suite : STE-J6-TRACE.md, lot STE poursuivi.`
- Des faits et des chiffres, pas de récit ; aucun nom de compte, aucun chemin `C:\Users`, aucun contenu de jeu (noms,
textes, assets) : l'index est dans le dépôt public.
- **Écrit par le lot producteur à sa FIN-LOT**, quand le contexte est frais ; c'est l'étape qui compte. À défaut (existant,
oubli), le passage mensuel le reconstitue au mieux depuis le livrable qui cite la trace (`Grep` du nom dans `etat\`),
`Tools\LogStats.ps1` pour un journal, sinon `Contexte inconnu.` : on ne garde pas un fichier faute de résumé.
## 5. Passage mensuel
- **Qui** : une session de lot `TRACE-AAAA-MM`, ouverte par Big Boss ; orchestrateur Opus, commits par `lp-gardien` sur
ticket. **Quand** : le 1er de chaque mois (ou la première session Big Boss du mois), hors réserve « mesure » ; pas de
`BUILD-GO`, sauf si un fichier visé est sous la copie UE alors qu'un processus Unreal y tourne (`Tools\UeState.ps1`) :
il attend alors le mois suivant.
- **Étapes** :
1. Reporter les `<LOT>-TRACES.csv` dans `TRACES-INDEX.csv` ; rejouer l'inventaire de `TRACE1-T1` pour trouver les
traces non indexées (une ligne par lot ou par dossier, statut `en place`).
2. Sélection : statut `en place` et `date` antérieure au même jour du mois précédent.
3. Compléter les résumés manquants (§ 4).
4. **Ticket au gardien : commit de l'index avant tout envoi à la corbeille** (le résumé est en sûreté avant que le
fichier parte).
5. À blanc : liste, nombre, taille par disque ; garde-fou : **aucun fichier plus gros que la capacité de la corbeille
de son disque** (D: 193 Go, C: 50 Go ; sinon Windows le supprime sans passer par la corbeille) ; écart = arrêt.
6. Accord de l'utilisateur sur la liste chiffrée (une ligne par lot), transmis par Big Boss.
7. Envoi à la corbeille par un script dédié (`Tools\Corbeille.ps1`, phase 2) qui appelle l'API Windows
`Microsoft.VisualBasic.FileIO.FileSystem.DeleteFile(<chemin>, OnlyErrorDialogs, SendToRecycleBin)` ; **jamais**
`rm`, `del` ni `Remove-Item`. Un refus du mode automatique arrête le passage : signalement à l'utilisateur et à Big
Boss, aucun contournement (doc 32 § 15.7).
8. Contrôle : chemin absent, élément présent dans la corbeille (`Shell.Application.Namespace(10)`) ; statut
`corbeille AAAA-MM-JJ` ; second commit de l'index ; registre `TRACE-AAAA-MM-TACHES.md`.
- La corbeille est vidée à 30 jours par l'assistant de stockage de Windows (`TRACE1-T1-INV.md` § 2.5) : cohérent avec
des traces périssables ; un fichier reste récupérable ≈ 30 jours après le passage.
## 6. Texte de la règle
### 6.1 Doc 32, nouveau § 15.12 « Traces et journaux des sessions »
> Règle de l'utilisateur (2026-10-13), mise en place par le lot TRACE1. Les traces (Insights `.utrace`, profilage,
> dumps, sorties de commandlets, plantages d'une fiche) et les journaux de commandes (compilation, UAT, cuisson,
> commandlets, jeu, éditeur) sont périssables : on ne les conserve pas, on en garde **un court résumé (contexte,
> résultat, suite)**. Chaque lot écrit à sa FIN-LOT `etat\<projet>\<lot>\<LOT>-TRACES.csv`, une ligne par fiche qui a
> produit des traces ; les fichiers restent où ils ont été produits. Le passage mensuel (session `TRACE-AAAA-MM`, le 1er
> du mois) reporte ces lignes dans `Docs\Migration\etat\TRACES\TRACES-INDEX.csv`, complète les résumés manquants,
> commite l'index, puis envoie à la corbeille de Windows, sur accord de l'utilisateur, les traces de plus d'1 mois ;
> jamais `rm`, `del` ni `Remove-Item` ; un refus d'autorisation arrête le passage sans contournement (§ 15.7). Hors
> règle : transcriptions des sessions Claude, livrables `.md` / `.csv`, builds, instantanés de `Snapshot.ps1`. Aucune
> trace ni aucun chemin `C:\Users\<compte>` dans un fichier commité.
### 6.2 `lp-lot` (SKILL.md, après « Livrables et registres »)
> **Traces et journaux (TRACE1, règle de l'utilisateur du 2026-10-13).** Les traces sont périssables ; ce qui compte est
> leur résumé. À la FIN-LOT, avant la PASSATION, écrire `etat\<projet>\<lot>\<LOT>-TRACES.csv` (colonnes de
> `TRACES-INDEX.csv`) : une ligne par fiche qui a produit des traces (journaux `Saved\Logs\portage\<Lot>_*`, `Saved\Logs`
> et `Saved\Profiling` de ses builds, `.txt` d'`etat\`, sorties de `CollectDebugArtifacts.ps1`), avec un résumé en trois
> phrases : `Contexte : … Résultat : … Suite : …`. Ne rien déplacer, ne rien envoyer soi-même à la corbeille : c'est le
> passage mensuel, sur accord de l'utilisateur. Jamais de nom de compte ni de chemin `C:\Users` dans le CSV.
Conséquences à verser avec la règle : `lp-paths` (ligne « Index des traces »), exception à « sauvegardes jamais
supprimées » pour les traces de `Backup_5.5` (si Q6 = oui), `lp-doc/gabarits.md` § TRACE (renvoi au gabarit de résumé),
mémoire `traces-logs-archivage`.
## 7. Questions pour l'utilisateur (liste fermée)
| # | Question | Recommandation |
|---|---|---|
| Q1 | Pas d'archive longue : les traces restent sur place jusqu'à la corbeille, seul le résumé est gardé ? | oui (consigne de révision 1) |
| Q2 | Index dans git (`etat\TRACES\TRACES-INDEX.csv`), **une ligne par fiche** (au lieu d'une par fichier), alimenté par un `<LOT>-TRACES.csv` par lot ? | oui |
| Q3 | « 1 mois » compté depuis la date de production (horodatage du nom, sinon dernière écriture) ? | oui |
| Q4 | Journaux tournants du profil (UBT, Zen, Launcher, CrashReportClient) hors règle, sauf plantages du jeu et UAT des cuissons de lot ? | oui |
| Q5 | Dossiers de build (36, ≈ 81,7 Go) hors règle ; leurs traces dedans ? | oui ; rangement des builds = autre lot |
| Q6 | Traces de `Backup_5.5` (`Dbg-*`, `builds_supprimees`, `*-VAL`, `ARCH427\…\Crashes`) dans la règle, par exception à « jamais supprimées » ; instantanés `manifest.csv` exclus ? | oui |
| Q7 | 3 CSV de dumps déjà suivis par git (`portage55`, 3,3 Mo) laissés tels quels ? | oui |
| Q8 | Doublons (≈ 7,3 Go de `.utrace`, `TRACE1-T1-INV.md` § 2.4) : copie de `Backup_5.5` à la corbeille au premier passage, sans attendre 1 mois ? | oui |
| Q9 | Copie 5.5 (`Saved\Logs\portage` 1,4 Go, `etat\` figé) traitée comme le reste ? | oui |
| Q10 | 69 fichiers suivis par git sur `ue5.8` contiennent le nom du compte (`TRACE1-T1-INV.md` § 2.6) : lot de nettoyage à part, avant tout push de `ue5.8` ? | oui, hors TRACE1 |
## 8. Suite après accord (phase 2, fiches à ouvrir au GO)
| Fiche | Objet | Niveau |
|---|---|---|
| TRACE1-T3 | SPEC : textes exacts, `Tools\Traces.ps1` (inventaire rejouable, sélection > 1 mois, à blanc) et `Tools\Corbeille.ps1`, critères de VAL | N2 |
| TRACE1-T4 | IMPL des deux scripts (sans envoi réel) | N3 |
| TRACE1-T5 | essai sur un fichier témoin : corbeille, puis restauration manuelle par l'utilisateur ; refus du mode auto = arrêt | N1 |
| TRACE1-T6 | `TRACES-INDEX.csv` initial : une ligne par lot ou par fiche pour l'existant (≈ 3 460 fichiers), résumés reconstitués depuis les livrables | N1 |
| TRACE1-T7 | premier passage : 122 fichiers / ≈ 62 Mo de plus d'1 mois, plus les doublons (Q8), sur accord | N1 |
| TRACE1-T8 | DOC : doc 32 § 15.12, `lp-lot`, `lp-paths`, gabarits, CHG, mémoire ; puis tickets au gardien | N1 |
Tours : 2 / 40 (fiche tenue par la session principale)