193 lines
21 KiB
Markdown
193 lines
21 KiB
Markdown
# ETAT-INVENTAIRE-PROPOSITION — réorganisation de `Docs\Migration\etat\` par projet / lot
|
||
|
||
Fiche ETAT-T1 — Niveau N1 — Modèle prévu lp-inventory | utilisé Sonnet 5.5 (identifiant `claude-sonnet-5-5`, non vérifiable depuis l'agent) — Agent lp-inventory — Skills lp-paths, lp-doc, sk-protocol (+ sk-recount)
|
||
|
||
Date : 2026-10-09. Lecture seule partout sauf ce livrable. Aucun déplacement, renommage, suppression, commande git. Lot U7 ouvert : `etat/U58/U7/` exclu de tout plan.
|
||
Racine de travail : `R5 = D:\Game\LifePlay-master 5.5\Docs\Migration\etat` ; copie 5.8 : `R8 = D:\Game\LifePlay-master 5.8\Docs\Migration\etat`.
|
||
Preuve : « établi » = sortie de commande rejouable (commande donnée) ; « estimé » = déduit (raisonnement donné) ; « incertain » = à trancher.
|
||
|
||
## 1. Comptes (établi)
|
||
|
||
Commandes (Git Bash, depuis `R5`) et sorties brutes :
|
||
|
||
| Quoi | Commande | Résultat |
|
||
|---|---|---|
|
||
| Fichiers à la racine | `find . -maxdepth 1 -type f \| wc -l` | **288** |
|
||
| Dossiers à la racine | `find . -maxdepth 1 -mindepth 1 -type d \| wc -l` | **9** |
|
||
| Fichiers, tout l'arbre | `find . -type f \| wc -l` | **537** |
|
||
| Dossiers sous la racine (récursif) | `find . -mindepth 1 -type d \| wc -l` | **59** (60 avec la racine) |
|
||
| Taille | `du -sh etat` | 76 Mo |
|
||
| Suivi git | `git ls-files Docs/Migration/etat \| wc -l` ; `git check-ignore -v` | **0** suivi ; ignoré par `.gitignore:74 /Docs/Migration/etat/` |
|
||
| Copie de secours | `ls D:\Game\LifePlay_Backup_5.5\etat` | existe (mentionnée README ; contenu non comparé, incertain) |
|
||
|
||
Par dossier de premier niveau (`for d in */; do find $d -type f \| wc -l; done`) : `sandbox` 70, `U58` 122, `VQ` 12, `PUB2` 11, `L4-CX-B02_essai1_rejete` 10, `PROP` 9, `SK` 6, `commit_plan` 5, `PUB1` 4 = 249. Contrôle : 288 + 249 = 537 (confirmé).
|
||
Détail : `sandbox` = DC0 3, DC1 5, DC2 6, DC3 6, DC4 10, S0 2, S1 4, S2 3, S3 5, S4 3, S5 3, S6 1, S7 4, S8 1, SB0 1, SB1 4, SB2 6, SB4 3 (somme 70). `U58` = UA 8, U0 7, U1 8, U2 7, U3 8, U4 23, U5 9, U6 16, U7 36 (somme 122). `VQ` = VQ0..VQ5 (2+3+3+2+1+1 = 12).
|
||
Types à la racine : 273 `.txt`, 14 `.csv`, 1 `.md` (`find . -maxdepth 1 -type f ! -name '*.txt'` liste 15 non-txt : 14 csv + `COMMIT-CART.md`).
|
||
|
||
Copie 5.8 (`R8`) : 316 fichiers à la racine, 455 au total, 40 sous-dossiers (`find`, mêmes commandes). Mêmes 9 dossiers ; `R8\U58` = 12 fichiers (contre 122 en 5.5) ; `sandbox` 70, etc. Différence de racine (`diff <(ls R5) <(ls R8)`) : 4 fichiers seulement en 5.5 (AP7 ×2 du 08/10 soir, U1 ×2) ; 32 seulement en 5.8 (AP7 ×3 du 08/10, `U2`..`U7` : `*_Build_*`, `*_BuildLog_*`, `*_LPTestStringCompat_*`, `U5_*`, dont 7 `U7_*` écrits par `Tools\Build.ps1` pendant U7). 316 = 288 − 4 + 32 (confirmé). **Proposition : ne pas fusionner `R8` avec `R5`**, ne pas le déplacer tant que U7 est ouvert.
|
||
|
||
## 2. Classement et projets proposés
|
||
|
||
Noms de projet (justification) :
|
||
- `portage55/` : lots L0–L7 du portage 4.27 → 5.5 ; docs 04 (lots L0..L7), 05 (CX-B/CX-C), 07 (architecture), journal. Nom cohérent avec l'exemple de la demande.
|
||
- `anim/` : AP1–AP7, doc 20 « Chaîne d'animations » (la demande donne `etat/anim/AP5/`).
|
||
- `sandbox/` : existant, S0–S8, SB0–SB4, DC0–DC4 ; docs 21, 22, 23, 24. Y ajouter PairCol (doc 21 le cite) ; DOC-MOD relève du doc 23 → `sandbox/DOC-MOD` (ou `modding/`, à décider).
|
||
- `U58/` : existant ; docs 27, 28.
|
||
- `VQ/` : existant ; docs 25, 26.
|
||
- `SK/` : existant ; doc 28 § 5 (lot SK).
|
||
- `publication/` (nouveau) : PUB1, PUB2, commit_plan, COMMIT-CART ; doc 27 (règles PUB1/PUB2, ligne 67), mémoire `lifeplay-github-publication`. Aucun CHG propre (commits git `6f7155a`, `2cf416c`, `bfc6c3a`, `32fe84f`).
|
||
- `post-v1/` (nouveau) : correctifs isolés hors portage initial sans doc NN dédié : PawnGlobal, PawnDyn, PROP, STUDIO-EST. Estimé : à défaut de doc, rattachement via Journal ; `Docs/Migration/correctifs/` existe déjà (patchs P01–P06), donc éviter ce nom.
|
||
|
||
### Tableau projet → lot → doc NN → CHG → dossier cible → nb fichiers
|
||
|
||
Doc « J » = Journal seul. CHG = colonne « Lot » de `Journal_Modifications.md` (commande : `awk -F'|' '/^\| CHG-/{print $2,$4}' Journal_Modifications.md`). « racine » = fichiers à déplacer depuis la racine de `R5`.
|
||
|
||
| Projet | Lot (préfixe) | Doc NN | CHG | Dossier cible | Fichiers |
|
||
|---|---|---|---|---|---|
|
||
| portage55 | L0 | 02, 03, 04 | 001–006 | `portage55/L0/` | 8 (7 csv `L0_*` + `L0_ref427.csv` ; voir § 4) |
|
||
| portage55 | L1 | 04, 05 | 007–010 | `portage55/L1/` | 2 |
|
||
| portage55 | L2 | 04, 05 | 011–013 | `portage55/L2/` | 1 |
|
||
| portage55 | L4-CX-B01 | 04, 05 | 018 | `portage55/L4-CX-B01/` | 7 |
|
||
| portage55 | L4-CX-B02 essai 1 (dossier existant) | 05 | 019–020 | `portage/L4-CX-B02/essai1_rejete/` (renommer en `portage55/L4-CX-B02/essai1_rejete/`) | 10 (dossier) |
|
||
| portage55 | L4-CX-B02b | 05 | 022 | `portage55/L4-CX-B02b/` | 10 |
|
||
| portage55 | L4-CX-B03 | 05 | 023 | `portage55/L4-CX-B03/` | 5 |
|
||
| portage55 | L4-CX-B04 | 05 | 024 | `portage55/L4-CX-B04/` | 10 |
|
||
| portage55 | L4-CX-B07 | 05 | 035 | `portage55/L4-CX-B07/` | 12 |
|
||
| portage55 | L4-CX-B08 | 05 | 029 | `portage55/L4-CX-B08/` | 4 |
|
||
| portage55 | L5-diag | 04, 05 | 027–030 (lot L5) | `portage55/L5-diag/` | 21 |
|
||
| portage55 | L6e (+ L6e-CX-B09, B09b, B09c) | 04 | 032, 033 | `portage55/L6e/` (sous-préfixes conservés dans les noms) | 17 (2 + 11 + 3 + 1) |
|
||
| portage55 | L6f | 04 | 034 | `portage55/L6f/` | 13 |
|
||
| portage55 | L7a | 04, 05, 07 | 036 | `portage55/L7a/` | 8 |
|
||
| portage55 | L7b | 04, 05 | 037–039 | `portage55/L7b/` | 6 |
|
||
| portage55 | L7d | 04, 07 | 050 | `portage55/L7d/` | 9 |
|
||
| portage55 | L7h | 04, 07 | 044 | `portage55/L7h/` | 8 |
|
||
| portage55 | L7i (+ `L7i_CX-B12_assets.txt`) | 04, 05, 07 | 040–043 | `portage55/L7i/` | 19 |
|
||
| portage55 | L7j | 04, 05, 07 | 052–054 | `portage55/L7j/` | 4 |
|
||
| portage55 | L7l | 04, 05, 07 | 053–057 | `portage55/L7l/` | 2 |
|
||
| anim | AP2 | 20 | 206 | `anim/AP2/` | 2 |
|
||
| anim | AP3 | 20 | 207 | `anim/AP3/` | 5 |
|
||
| anim | AP4 | 20 | 208 | `anim/AP4/` | 7 |
|
||
| anim | AP5 (+ `AP5_Room_Dailies_CDO.txt`) | 20 | 209 | `anim/AP5/` | 18 |
|
||
| anim | AP6 | 20 | 210–211 | `anim/AP6/` | 5 |
|
||
| anim | AP7 | 20 (23, 28 le citent) | 221–224 | `anim/AP7/` | 50 |
|
||
| sandbox | DC2 (racine) | 24 | 235 | `sandbox/DC2/` (dossier existant, 6 fichiers) | +4 |
|
||
| sandbox | DC3 (racine) | 24 | 236 | `sandbox/DC3/` (existant, 6) | +1 |
|
||
| sandbox | PairCol | 21 (§ lots S4, `LPPairCollisionTest`) | 122–139 | `sandbox/PairCol/` | 10 |
|
||
| sandbox | DOC-MOD | 23 | 225–227 | `sandbox/DOC-MOD/` (ou `modding/DOC-MOD/`) | 4 |
|
||
| sandbox | S0–S8, SB0–SB4, DC0–DC4 (déjà rangés) | 21, 22, 24 | 212–220 ; 228–232 ; 233–236, 245 | inchangé `sandbox/<lot>/` | 70 (existants) |
|
||
| post-v1 | PawnGlobal | J seul | 144 | `post-v1/PawnGlobal/` | 3 |
|
||
| post-v1 | PawnDyn | J seul | 145 | `post-v1/PawnDyn/` | 4 |
|
||
| post-v1 | PROP (dossier existant) | J, Registre (ERR-043) | 244 | `post-v1/PROP/` (ou inchangé : 5 citations Docs) | 9 (dossier) |
|
||
| post-v1 | STUDIO-EST | aucun (voir § 3) | aucun | `post-v1/STUDIO-EST/` | 6 |
|
||
| publication | PUB1 (dossier existant) | 27 (l. 67) | aucun | `publication/PUB1/` | 4 (dossier) |
|
||
| publication | PUB2 (dossier existant) | 27 (l. 67) | aucun | `publication/PUB2/` | 11 (dossier) |
|
||
| publication | commit_plan (dossier) + COMMIT-CART.md | aucun | aucun | `publication/commit_plan/` | 5 + 1 |
|
||
| U58 | UA, U0–U6 (existants) | 27, 28 | 248 ; 249–250 ; 251 (U1) | inchangé `U58/<lot>/` | 86 |
|
||
| U58 | **U7 (EN COURS)** | 27, 28 | — | **ne pas toucher** `U58/U7/` | 36 |
|
||
| U58 | U1 (racine : `U1_LPAuditBlueprintCalls_*`) | 27, 28 | 251 | `U58/U1/` (dossier existant, 8) | +2 |
|
||
| VQ | VQ0–VQ5 (existants) | 25, 26 | 237–240, 241–242 (VQ-fix) ; VQ1/VQ2 : pas de ligne propre dans la colonne Lot | inchangé `VQ/<lot>/` | 12 |
|
||
| SK | SK-ARBRE, SK-T1.. (existant) | 28 § 5 | aucun libellé « SK » dans la colonne Lot (249 cite les fiches `etat/`) | inchangé `SK/` | 6 |
|
||
|
||
Contrôle de somme des fichiers racine à déplacer : portage55 (8+2+1+7+10+5+10+12+4+21+17+13+8+6+9+8+19+4+2 = 166) ; anim (2+5+7+18+5+50 = 87) ; sandbox racine (4+1+10+4 = 19) ; post-v1 (3+4+6 = 13) ; publication (COMMIT-CART 1) ; U58 (2). Total 166 + 87 + 19 + 13 + 1 + 2 = **288** (égal au compte racine, confirmé). Dossiers existants à ne pas éclater : 9, dont 1 (`L4-CX-B02_essai1_rejete`) à rattacher à `portage55/L4-CX-B02/`.
|
||
|
||
Commande de classement rejouable (compte par lot, racine) :
|
||
`find . -maxdepth 1 -type f | sed 's|./||' | sed -E 's/^(L[0-9][a-z]?(-CX-B[0-9]+[a-z]?|-diag)?|L6e-CX-B09[bc]?|AP[0-9]|DC[0-9]|DOC-MOD|PairCol|PawnDyn|PawnGlobal|STUDIO-EST|U1|COMMIT-CART)[_.-].*/\1/; s/^L7i_CX-B12.*/L7i/' | sort | uniq -c`
|
||
Sortie (lot=n) : AP2=2 AP3=5 AP4=7 AP5=18 AP6=5 AP7=50 COMMIT-CART=1 DC2=4 DC3=1 DOC-MOD=4 L0=8 L1=2 L2=1 L4-CX-B01=7 L4-CX-B02b=10 L4-CX-B03=5 L4-CX-B04=10 L4-CX-B07=12 L4-CX-B08=4 L5-diag=21 L6e=2 L6e-CX-B09=11 L6e-CX-B09b=3 L6e-CX-B09c=1 L6f=13 L7a=8 L7b=6 L7d=9 L7h=8 L7i=19 L7j=4 L7l=2 PairCol=10 PawnDyn=4 PawnGlobal=3 STUDIO-EST=6 U1=2 (somme 288).
|
||
|
||
Remarques : les préfixes cités dans la fiche (DATA, UI, SKIN, O7, ERR, H1–H3, L3, L6a, L7c/e/g/k, AP1) n'ont **aucun** fichier à la racine (`ls \| grep -cE '^(DATA\|UI\|SKIN\|O7\|ERR\|H[123]\|L3\|L6a\|L7c\|L7e\|L7g\|L7k\|AP1)'` → 0). Les « résumés `*_Build_*` » ne sont présents à la racine de `R5` que sous forme `AP5/AP6/AP7_Build_*` (13) ; ceux de U2–U7 sont dans `R8`.
|
||
|
||
## 3. Orphelins et inconnus
|
||
|
||
Aucun fichier de la racine ni de sous-dossier n'est sans rattachement (288/288 classés). Éléments au rattachement fragile :
|
||
|
||
| Élément | Fichiers | Problème | Rattachement proposé (estimé) |
|
||
|---|---|---|---|
|
||
| `STUDIO-EST_LPDumpFunction_20261007-0925..0930*` | 6 | ni CHG ni doc NN (`grep STUDIO` dans `Docs\Migration\*.md` : 0 ligne propre) ; dumps `CharGen` du 2026-10-07 09:26, lot STUDIO-EST | `post-v1/STUDIO-EST/` ; à confirmer par l'utilisateur (entre doc 07 « studio » et 20) |
|
||
| `COMMIT-CART.md`, `commit_plan/` (5) | 6 | fiches CP-T1/T3 du 2026-10-07 ; aucune citation dans les docs NN ni le Journal | `publication/` (estimé : plan de commits par phase avant PUB1/PUB2) |
|
||
| `PUB1/`, `PUB2/` | 15 | sans CHG ; une seule citation (doc 27, l. 67) | `publication/` |
|
||
| `PawnGlobal_*`, `PawnDyn_*` | 7 | CHG-144/145 seulement, aucun doc NN | `post-v1/` |
|
||
| `AP5_Room_Dailies_CDO.txt` | 1 | seul fichier AP sans horodatage | `anim/AP5/` |
|
||
| `L4-CX-B02_essai1_rejete/` | 10 | essai annulé (CHG-019 « annulé par Restore ») ; nom de dossier cité 1 fois (Journal) | `portage55/L4-CX-B02/essai1_rejete/` |
|
||
| Journal vs. U2–U6 | — | README dit « `CHG-001` à `CHG-251` » ; U2–U6 clos selon la mémoire, mais aucune CHG > 251 dans le Journal du dépôt 5.5 (dernière : U1, 251) | à vérifier : CHG U2–U6 peut-être seulement dans la copie 5.8 (`R8`/Journal 5.8 : 66 citations `etat/` contre 65, signe d'une entrée de plus). Incertain. |
|
||
|
||
## 4. Références cassables (établi, chiffrées)
|
||
|
||
Motif : `etat[/\\]+[A-Za-z0-9_.<>$%{}()*-]+` (`grep -rhoE`, ici `P`). Chaque cellule = nombre d'occurrences ; « sous-dossier » = cible déjà dans un dossier (`sandbox`, `VQ`, `U58`, `PROP`, `PUB1/2`, `SK`, `commit_plan`) ; « racine » = cible fichier ou motif à la racine ou gabarit `<lot>`.
|
||
|
||
| Corpus | Fichiers citant | Occurrences | sous-dossier | racine |
|
||
|---|---|---|---|---|
|
||
| `R5\..\*.md` Docs 5.5 (hors `etat`) | 13 | 140 (112 lignes) | 90 | 50 |
|
||
| Docs 5.8 (hors `etat`) | 13 | 141 | 91 | 50 |
|
||
| Mémoire `...\memory\` | 6 | 9 | 7 | 2 (gabarits `etat\<Lot>_...`, `etat/<projet>`) |
|
||
| Skills addon `LifePlay-Sandbox\Tools\claude\skills` | 9 | 23 | 14 | 9 (gabarits) |
|
||
| Skills `%USERPROFILE%\.claude\skills` | 0 | 0 | 0 | 0 |
|
||
| `Tools\*.ps1` 5.5 | 4 | 5 | 0 | 5 |
|
||
| `Tools\*.ps1` 5.8 | 4 | 7 | 0 | 7 |
|
||
| Addon `Tools` (`*.ps1`, `*.py`, hors skills) | 0 | 0 | — | — (seul `etat.json` d'`AnimPipeline.ps1`, sans rapport) |
|
||
| Code 5.5 (`Source`, `Plugins\*.h/.cpp`, `Config`) | 4 | 4 | 3 (VQ ×2, sandbox/S5) | 1 (`Source\LifePlay\LPModDailies.h:5` cite `etat/L6f_dump_Person.txt`) |
|
||
| Addon (`Plugins\*.h/.cpp` 12, `Docs` 7, `README.md` 1) | — | 20 | 20 (`sandbox/SB1`, `SB2`, `S1`, `S3`) | 0 |
|
||
|
||
Commandes : `grep -rcE "$P" <chemin> [--exclude-dir=etat]` (par fichier) et `grep -rhoE "$P" ... \| wc -l` (occurrences) ; partage sous-dossier/racine : `sed -E 's/etat[\/\\]+//' | awk` sur le premier segment. Écart non élucidé : le détail par fichier Docs racine donne 51 (02:1, 03:2, 04:1, 09:1, Journal:46) contre 50 par le partage par segment ; la différence d'une unité tient au traitement d'un jeton, à retrancher en rejouant (`incertain`, impact nul sur la décision).
|
||
|
||
Citations par **nom exact** d'un fichier de la racine (sans préfixe `etat/`) : `grep -rhoFf rootfiles.txt Docs\Migration (hors etat) Source ...` → 53 occurrences, **51 noms distincts** : lots L4 19, L7i 4, L7b 4, L7a 3, L7d 3, L6f 3 (dont `LPModDailies.h`), AP5 5, AP6 2, AP7 2 (dont `28_Synthese...md:185`), L1 2, L5 2, L6e 2, L0 1. Elles se superposent aux 50 citations « racine » du tableau (Journal en grande majorité : 46 lignes).
|
||
|
||
Ce qu'un déplacement des 288 fichiers casserait, par nature :
|
||
1. **Journal (46 occurrences racine, 65 au total) et docs 02/03/04/09** : chemins historiques (preuves de CHG). Ne pas réécrire (le Journal est une trace) : parade = table de correspondance.
|
||
2. **Scripts à chemin dur (cassent à l'exécution)** : `Tools\CheckIntegrity.ps1:25` lit `Docs\Migration\etat\L0_ref427.csv` (5.5 seulement ; 5.8 sans CheckIntegrity dans la liste citante). Rupture immédiate de `-Ref427`.
|
||
3. **Scripts qui écrivent à la racine par défaut** (créeraient de nouveau le désordre) : `RunCommandlet.ps1` (5.5 :28, 5.8 :36 : `Docs\Migration\etat\$name.txt`) ; `Build.ps1` 5.8 (:52 `${Lot}_BuildLog_`, :61 `${Lot}_Build_` ; **5.5 n'a pas de `Build.ps1`**, `ls Tools`) ; `ReimportCorrectif.ps1` (5.5 :34 `$etat`, écritures :48 `_dump_`, :62 `_dryrun`, :70 `_application`, :80 `_diff`) ; exemple d'aide `AssetHeaders.ps1:13` (`etat\headers_BPs.csv`, doc seulement).
|
||
4. **`ReimportCorrectif.ps1` : `Remove-Item (Join-Path $etat "${Id}_<Commandlet>_*.txt")` (5.5 :50, :64, :71)** : nettoyage par motif à la racine ; si le script écrit ailleurs sans adapter ces motifs, les résumés de commandlet s'accumuleraient (risque, pas rupture).
|
||
5. **Skills et mémoire (gabarits, 11 occurrences / 9 fichiers)** : `lp-build:31`, `lp-commandlets:22`, `lp-validate:50` (nom de sortie `etat\<lot>_...`), `lp-doc` (2), `lp-lot` (2 dont :48), `lp-paths:33,43`, `memory\lifeplay-build-pitfalls.md:15`, `modele-sequencage.md:123`. `lp-paths` et `lp-lot` disent déjà `etat\<projet>\<lot>\` pour les livrables ; seuls les résumés auto de commandlet (`<Lot>_<Commandlet>_<horodatage>.txt`) restent annoncés à la racine.
|
||
6. **Code** : un seul commentaire cassé (`LPModDailies.h:5`). Les 19 commentaires `sandbox/`/`VQ/` ne bougent pas si ces dossiers restent en place (recommandé).
|
||
7. **Copie 5.8** : mêmes docs (141) ; `R8` continue d'être alimentée par `Build.ps1` à la racine pendant U7.
|
||
|
||
### Parade proposée
|
||
|
||
1. **Table de correspondance** `etat/MAPPING.csv` (ancien → nouveau, une ligne par fichier + une ligne par motif `L5-diag_dump55_*`), et la même table résumée par préfixe dans le document d'inventaire (§ 5). Le Journal et les docs restent intacts ; le lecteur applique la table. Alternative non retenue : réécrire 46 lignes du Journal (perte de traçabilité).
|
||
2. **Mise à jour des scripts (hors portée de cette fiche)** : `CheckIntegrity.ps1:25` → `etat\portage55\L0\L0_ref427.csv` ; `RunCommandlet.ps1`, `Build.ps1`, `ReimportCorrectif.ps1` : ajouter une fonction commune qui déduit le dossier du préfixe de lot (`^AP\d` → `anim\<lot>`, `^L\d` → `portage55\<lot>`, `^U\d` → `U58\<lot>`, etc.) ou un paramètre `-EtatSub`, créée si absente ; adapter les `Remove-Item` aux nouveaux chemins. À faire en lot propre (deux copies, **5.8 en dernier, après U7**), avec test à blanc (`-DryRun` si présent, sinon commandlet de test sur un lot jetable).
|
||
3. **Skills/mémoire** : remplacer dans 7 skills et 2 mémoires les gabarits `etat\<Lot>_<Commandlet>_...` par `etat\<projet>\<lot>\...` ; skills dans l'addon (commit addon puis pin, comme pour `lp-*`).
|
||
4. **Code** : corriger le seul commentaire `LPModDailies.h:5` dans un lot de code, ou le laisser (commentaire).
|
||
5. **Pas de jonctions/liens** individuels (288) : refusés, fragiles sous Windows et hors git.
|
||
|
||
## 5. Plan de déplacement proposé (étapes ; rien n'est exécuté)
|
||
|
||
Contrainte de mémoire : `mv` seulement vers `LifePlay_Backup_5.5\<lot>` avec chemin rapporté, `rm` interdit. En conséquence, **copier** vers la nouvelle structure puis **déplacer les originaux** vers `D:\Game\LifePlay_Backup_5.5\etat_reorg_<date>\` (équivaut à un déplacement tout en respectant la règle) ; décision utilisateur requise sur ce mode (ou autorisation d'un `Move-Item` interne).
|
||
|
||
0. **Décisions utilisateur** : noms de projets (§ 2), sort de `PROP`/`PUB1`/`PUB2` (rangés à plat ou sous `post-v1`/`publication`), nom du document d'inventaire, mode copie+archive.
|
||
1. **Instantané** : `robocopy`/copie de `R5` vers `D:\Game\LifePlay_Backup_5.5\etat_reorg_<date>\avant\` ; manifeste `manifest.csv` (chemin, taille, SHA256 : `Get-ChildItem -Recurse -File | Get-FileHash`) ; attendu 537 lignes. Même chose pour `R8` (316 + 139 = 455), **U7 exclu des déplacements mais inclus dans l'instantané**.
|
||
2. **Ouvrir un lot** (`lp-lot`) avec entrée CHG dans le Journal (retour arrière = restauration du manifeste).
|
||
3. **Générer `MAPPING.csv` à blanc** (script en lecture seule) : ancien chemin → nouveau chemin ; contrôles : 288 lignes racine, aucun doublon de cible, aucune cible dans `U58\U7\`.
|
||
4. **Copier** par projet, dans l'ordre de risque croissant : `anim` (87), `publication` (16 dont les dossiers PUB), `post-v1` (13), `sandbox` racine (19), `portage55` (166 + 10 de l'essai 1), `U58\U1` (2). Après chaque projet : recompte (`find <cible> -type f \| wc -l`) et hachage contre le manifeste.
|
||
5. **Adapter les scripts** (parade 2) et les 7 skills / 2 mémoires (parade 3), tester sur un lot jetable ; **ne pas toucher à `U58\U7\`** ni aux `U7_*` de la racine 5.8.
|
||
6. **Recompter** : 537 fichiers au total en 5.5, racine vide de fichiers (hors `README`/`MAPPING`/inventaire), 0 fichier hors manifeste, `grep` des chemins cassés (§ 4) : le compte « racine » des citations doit être couvert par `MAPPING.csv` à 100 %.
|
||
7. **Archiver** les originaux (mouvement vers `etat_reorg_<date>\avant\` déjà copié, jamais de suppression) ; mettre à jour `README.md` (ligne `etat/`), `lp-paths`, `lp-lot`.
|
||
8. **Après clôture de U7** (porte G-U7) : refaire les étapes 1–7 pour `U58\U7` (36 fichiers) et pour `R8` (316 racine), avec le même `MAPPING`, ou laisser `R8` telle quelle (alimentée par `Build.ps1`) ; décision utilisateur. Ne pas fusionner `R8` dans `R5`.
|
||
|
||
## 6. Squelette du futur document d'inventaire (`etat/README.md` ou `etat/INVENTAIRE.md` : choix de l'utilisateur)
|
||
|
||
Recommandation (estimée) : `etat/INVENTAIRE.md`, car `etat/` est hors git et `README.md` est ambigu avec `Docs\Migration\README.md`.
|
||
|
||
```
|
||
# INVENTAIRE — etat/ (preuves locales, hors dépôt)
|
||
Fiche <Id> — Niveau — Modèle prévu | utilisé — Agent — Skills (en-tête sk-protocol)
|
||
Date de relevé : <date> ; commande de dénombrement : <find ...> ; compte brut : <n fichiers, m dossiers>
|
||
Règle : etat/<projet>/<lot>/ ; fichiers nommés <lot>_<sujet>[_<horodatage>].<ext> ; rien à la racine.
|
||
## 1. Projets (un par ligne)
|
||
| Projet | Dossier | Doc NN | Journal (CHG) | Registre (ERR) | Statut du lot | Fichiers |
|
||
## 2. Lots
|
||
| Projet | Lot | Dossier | Doc NN § | CHG | Date | Fichiers | Sauvegarde (Backup_5.5\<lot>) |
|
||
## 3. Table de correspondance ancien → nouveau (préfixe → dossier ; détail : MAPPING.csv)
|
||
| Ancien motif (racine) | Nouveau dossier | Citations connues (Docs/Journal/skills/scripts) |
|
||
## 4. Conventions des scripts (RunCommandlet, Build, ReimportCorrectif) : dossier par défaut, paramètre -EtatSub
|
||
## 5. Orphelins et rattachements à confirmer
|
||
## 6. Copies : R8 (5.8) — politique (non fusionnée), copie de secours LifePlay_Backup_5.5\etat
|
||
## 7. Historique des réorganisations (date, CHG, manifeste, SHA du manifeste)
|
||
```
|
||
|
||
## Compte rendu sk-protocol / sk-recount
|
||
|
||
- Recomptes croisés : (1) 537 = 288 + 249 (racine + somme des dossiers) ; (2) 288 = somme des préfixes (`uniq -c`) = somme du tableau § 2 (166 + 87 + 19 + 13 + 1 + 2) ; (3) `R8` 316 = 288 − 4 + 32 ; (4) `sandbox` 70 et `U58` 122 recomptés par sous-dossier.
|
||
- Un écart d'une unité non élucidé : 50 contre 51 citations racine dans les docs 5.5 (méthodes différentes), sans effet sur la parade.
|
||
- Incertitudes : contenu exact de la copie `LifePlay_Backup_5.5\etat` non comparé ; CHG des lots U2–U6 non trouvées dans le Journal 5.5 ; rattachement de STUDIO-EST, COMMIT-CART/commit_plan, PawnDyn/PawnGlobal estimé faute de doc NN ; modèle utilisé non vérifiable.
|
||
- Écarts à la fiche : aucun interdit franchi ; fichier écrit : ce livrable seul. Fichiers temporaires dans le dossier scratchpad de la session (`rootfiles.txt`), hors projet.
|
||
|
||
Suite : l'orchestrateur doit trancher les décisions de l'étape 0 (noms de projets, mode copie+archive, nom du document d'inventaire), puis ouvrir un lot ETAT-T2 (script de génération de `MAPPING.csv` à blanc, lecture seule), état : inventaire et proposition livrés, rien déplacé.
|