diff --git a/Docs/Migration/etat/COMMIT-CART.md b/Docs/Migration/etat/COMMIT-CART.md new file mode 100644 index 0000000..c012a06 --- /dev/null +++ b/Docs/Migration/etat/COMMIT-CART.md @@ -0,0 +1,432 @@ +# Carte des commits par phase (COMMIT-CART) + +**Fiche CP-T1 — Modèle prévu sonnet | utilisé sonnet** + +Date de la carte : 2026-10-07 (état du dépôt lu vers 15:00 ; `.gitignore` et index modifiés à 14:54). Lecture seule : aucune commande git d'écriture, aucun fichier du dépôt modifié hors ce livrable. Dépôt `D:\Game\LifePlay-master 5.5`, branche `main`, HEAD `fba19bc` (2026-10-06 21:10). + +## 0. Constats qui conditionnent le plan (à lire en premier) + +1. **L'état de l'index n'est pas vierge.** 163 suppressions sont déjà indexées (`D ` en colonne 1) : 162 fichiers `Docs/Migration/etat/**/*.txt` (dont 10 de `L4-CX-B02_essai1_rejete/`, 35 179 451 o au total, tous encore présents sur disque) et `Content/Characters/Textures/NormalMap.uasset` (8 259 429 o, présent sur disque). `.gitignore` est modifié (2 blocs : `/Docs/Migration/etat/**/*.txt` et `/Content/Characters/`). Index et `.gitignore` datent du 07/10 14:54, soit **après** SB4 (14:44) : ce n'est donc la production d'aucune des phases AP7..SB4 et aucune CHG ne le décrit (hygiène préparée par l'utilisateur ou la session parente). **Tout `git commit` sans précaution l'embarquerait** : il faut soit un commit d'hygiène en premier, soit retirer ces suppressions de l'index avant le commit AP7. +2. **`fba19bc` ne contient pas toute la chaîne AP1–AP6.** Il contient les commandlets C++ (`LPAnimEval`, `LPAnimTwist`, `LPAnimChecks`, `LPAnimCatalog`), les docs, `BuildMod.ps1`. Restent **non suivis** : `Tools/anim/profiles/ue4_mannequin.json` et `genesis8.json` (AP1), `Tools/anim/DeliverAnims.*` (AP5 puis AP6), `Tools/anim/Catalogue.py` et `AnimSources/quaternius/pack.json` (AP6), `Tools/anim/RapportControles.py` (AP4), `LPModDailies.*`, `LPPatchDailiesCommandlet.*` et `Content/BPs/Person.uasset` modifié (AP5), `ModSources/lpr_anim_quaternius/` (AP5/AP6). L'état de `Tools/anim/` avant AP7 n'est donc dans aucun commit. +3. **Des phases antérieures hors liste sont aussi non commitées** (Dbg, G6a/G6b, PawnGlobal/PawnDyn, Proximité, Réglages/Clavier, AnimToGenesis/Sandbox : CHG-114 à CHG-186). Elles apparaissent ci-dessous et sont à traiter (commit de rattrapage, fusion dans un autre commit, ou abandon) : décision de l'utilisateur, section 4. +4. **Intégrité des instantanés vérifiée** : pour les lots AP1 à SB4 (15 manifestes, 639 entrées `Existed=True`), toutes les copies existent et leur MD5 égale celui du manifeste (0 écart). Pour tous les fichiers suivis du lot AP7, l'instantané AP7 est identique au blob HEAD (donc : « avant AP7 » = HEAD). Les manifestes sont des états **avant** modification : l'état « fin de la phase P » d'un fichier est la copie de l'instantané de la phase suivante qui l'a touché. +5. Quatre fichiers sont des erreurs de chemin (vides ou extraits) : à ne pas commiter (section 4). + +## 1. Tableau principal : entrée, phase, certitude, motif + +Statut git : `M` modifié, `??` non suivi, `D` suppression déjà indexée (état de l'index avant ma lecture). Les dates sont celles de dernière modification sur disque (2026). « HEAD » = `fba19bc`. + +### 1a. Entrées individuelles + +| Entrée | St | Taille (o) | Modifié | Phase | Certitude | Motif | +|---|---|---:|---|---|---|---| +| `Tools/anim/profiles/genesis8.json` | ?? | 2245 | 10-06 12:11 | AP1 | sûre | CHG-205 ; manifeste AP1 (Tools\anim nouveau) ; 06/10 12:11 ; resté hors fba19bc | +| `Tools/anim/profiles/ue4_mannequin.json` | ?? | 1478 | 10-06 12:11 | AP1 | sûre | CHG-205 ; manifeste AP1 (Tools\anim nouveau) ; 06/10 12:11 ; resté hors fba19bc | +| `Tools/anim/RapportControles.py` | ?? | 16103 | 10-06 22:35 | AP4,AP7 | probable | CHG-208 (AP4) le cite ; absent des manifestes AP4 et AP6 (seul AP7 le snapshotte, existant) ; modifié 06/10 22:35 (AP7) | +| `Content/BPs/Person.uasset` | M | 20616335 | 10-06 14:32 | AP5 | sûre | CHG-209 (animate() / Dailies) ; 06/10 14:32 ; snapshot AP5 == HEAD ; 20 613 073 -> 20 616 335 o ; non inclus dans fba19bc | +| `ModSources/lpr_anim_quaternius/lpr_anim_quaternius.uplugin` | ?? | 453 | 10-06 14:34 | AP5 | sûre | création du mod (manifeste AP5), 06/10 14:34 ; re-snapshotés par AP7 (inchangés) | +| `ModSources/lpr_anim_quaternius/Module/CREDITS.txt` | ?? | 312 | 10-06 14:34 | AP5 | sûre | création du mod (manifeste AP5), 06/10 14:34 ; re-snapshotés par AP7 (inchangés) | +| `ModSources/lpr_anim_quaternius/Module/lpr_anim_quaternius.lpmod` | ?? | 512 | 10-06 14:34 | AP5 | sûre | création du mod (manifeste AP5), 06/10 14:34 ; re-snapshotés par AP7 (inchangés) | +| `Source/LifePlay/LPModDailies.cpp` | ?? | 5525 | 10-06 14:41 | AP5 | sûre | CHG-209 ; manifeste AP5 (nouveau) ; 06/10 14:26-14:41 ; non inclus dans fba19bc | +| `Source/LifePlay/LPModDailies.h` | ?? | 2272 | 10-06 14:26 | AP5 | sûre | CHG-209 ; manifeste AP5 (nouveau) ; 06/10 14:26-14:41 ; non inclus dans fba19bc | +| `Source/LifePlayEditorTools/LPPatchDailiesCommandlet.cpp` | ?? | 9379 | 10-06 14:27 | AP5 | sûre | CHG-209 ; manifeste AP5 (nouveau) ; non inclus dans fba19bc | +| `Source/LifePlayEditorTools/LPPatchDailiesCommandlet.h` | ?? | 1451 | 10-06 14:27 | AP5 | sûre | CHG-209 ; manifeste AP5 (nouveau) ; non inclus dans fba19bc | +| `Tools/anim/DeliverAnims.ps1` | ?? | 12783 | 10-07 00:46 | AP5,AP6,AP7 | sûre | création AP5 (nouveau), modifs AP6 et AP7 (CHG-224 pour .py) ; voir section 2 | +| `Tools/anim/DeliverAnims.py` | ?? | 5823 | 10-07 02:37 | AP5,AP6,AP7 | sûre | création AP5 (nouveau), modifs AP6 et AP7 (CHG-224 pour .py) ; voir section 2 | +| `AnimSources/quaternius/pack.json` | ?? | 19664 | 10-06 22:35 | AP6,AP7 | sûre | création AP6 (CHG-210), modif AP7 (22:35) | +| `ModSources/lpr_anim_quaternius/Module/Animations/catalogue.html` | ?? | 72644 | 10-07 00:33 | AP6,AP7 | sûre | création AP6 (CHG-210), régénérés AP7 (00:33) | +| `ModSources/lpr_anim_quaternius/Module/Animations/catalogue.json` | ?? | 88342 | 10-07 00:33 | AP6,AP7 | sûre | création AP6 (CHG-210), régénérés AP7 (00:33) | +| `Tools/anim/Catalogue.py` | ?? | 24354 | 10-06 22:35 | AP6,AP7 | sûre | création AP6 (nouveau), modif AP7 (22:35) | +| `AnimSources/freeanims/pack.json` | ?? | 6448 | 10-06 23:10 | AP7 | sûre | manifeste AP7 (nouveau) ; 23:10 | +| `Config/DefaultGame.ini` | M | 3083 | 10-07 02:23 | AP7 | sûre | CHG-224 ; diff = ProjectVersion 2026.10.1.6 + 4 DirectoriesToNeverCook ; snapshot AP7 == HEAD ; 07/10 02:23 | +| `Docs/Migration/20_Chaine_Animations.md` | M | 19539 | 10-07 03:09 | AP7 | sûre | CHG-221..224 (AP7 ✔, méthodes, pilote) ; snapshot AP7 == HEAD ; 07/10 03:09 | +| `ModSources/lpr_anim_freeanims/lpr_anim_freeanims.uplugin` | ?? | 512 | 10-07 00:45 | AP7 | sûre | CHG-223/224 ; manifeste AP7 (nouveau) ; planches jpg = binaires (section 3) | +| `ModSources/lpr_anim_freeanims/Module/Animations/catalogue.html` | ?? | 24333 | 10-07 02:38 | AP7 | sûre | CHG-223/224 ; manifeste AP7 (nouveau) ; planches jpg = binaires (section 3) | +| `ModSources/lpr_anim_freeanims/Module/Animations/catalogue.json` | ?? | 21988 | 10-07 02:38 | AP7 | sûre | CHG-223/224 ; manifeste AP7 (nouveau) ; planches jpg = binaires (section 3) | +| `ModSources/lpr_anim_freeanims/Module/CREDITS.txt` | ?? | 464 | 10-07 00:46 | AP7 | sûre | CHG-223/224 ; manifeste AP7 (nouveau) ; planches jpg = binaires (section 3) | +| `ModSources/lpr_anim_freeanims/Module/lpr_anim_freeanims.lpmod` | ?? | 576 | 10-07 00:45 | AP7 | sûre | CHG-223/224 ; manifeste AP7 (nouveau) ; planches jpg = binaires (section 3) | +| `Source/LifePlayEditorTools/LPAnimEvalCommandlet.cpp` | M | 23264 | 10-06 22:12 | AP7 | sûre | diff post-commit ; snapshot AP7 == HEAD ; 06/10 22:08-22:12 ; manifeste AP7 | +| `Source/LifePlayEditorTools/LPAnimEvalCommandlet.h` | M | 2057 | 10-06 22:12 | AP7 | probable | absent du manifeste AP7 mais même heure (22:08-22:12) que le .cpp associé ; HEAD = base | +| `Source/LifePlayEditorTools/LPAnimIdentifyCommandlet.cpp` | ?? | 7803 | 10-06 21:51 | AP7 | sûre | CHG-221 ; manifeste AP7 (nouveau) | +| `Source/LifePlayEditorTools/LPAnimIdentifyCommandlet.h` | ?? | 1241 | 10-06 21:25 | AP7 | sûre | CHG-221 ; manifeste AP7 (nouveau) | +| `Source/LifePlayEditorTools/LPAnimMethodSelect.h` | ?? | 1715 | 10-06 21:51 | AP7 | probable | créé 21:51 avec LPAnimIdentify ; absent du manifeste AP7 et des CHG ; en-tête auxiliaire des méthodes (CHG-221) | +| `Source/LifePlayEditorTools/LPAnimTwistCommandlet.cpp` | M | 14971 | 10-06 22:08 | AP7 | sûre | diff post-commit ; snapshot AP7 == HEAD ; 06/10 22:08-22:12 ; manifeste AP7 | +| `Source/LifePlayEditorTools/LPAnimTwistCommandlet.h` | M | 1711 | 10-06 22:08 | AP7 | probable | absent du manifeste AP7 mais même heure (22:08-22:12) que le .cpp associé ; HEAD = base | +| `Tools/anim/AnimPipeline.ps1` | ?? | 34465 | 10-07 00:13 | AP7 | sûre | CHG-222/223 ; manifeste AP7 (nouveau) | +| `Tools/anim/methodes/genesis_direct.json` | ?? | 401 | 10-06 21:50 | AP7 | sûre | CHG-221 ; manifeste AP7 (nouveau) | +| `Tools/anim/methodes/ue4.json` | ?? | 428 | 10-06 21:50 | AP7 | sûre | CHG-221 ; manifeste AP7 (nouveau) | +| `Tools/anim/methodes/ue5.json` | ?? | 417 | 10-06 21:50 | AP7 | sûre | CHG-221 ; manifeste AP7 (nouveau) | +| `Tools/anim/profiles/ue5_mannequin.json` | ?? | 3060 | 10-06 21:52 | AP7 | sûre | CHG-221 ; manifeste AP7 (nouveau) | +| `Tools/anim/RetargetPack.py` | ?? | 20279 | 10-06 22:17 | AP7 | sûre | CHG-222/223 ; manifeste AP7 (nouveau) | +| `Tools/BuildMod.ps1` | M | 19886 | 10-06 23:44 | AP7 | sûre | CHG-222/223 (-Anim, guillemets de chemin) ; snapshot AP7 == HEAD ; 06/10 23:44 | +| `Docs/Migration/Journal_Modifications.md` | M | 405813 | 10-07 14:44 | AP7,DOC-MOD,DOC-MOD-2,DOC-MOD-3,SB0,SB1,SB2,SB2-O1,SB4 | sûre | multi-phases (+1 CHG par phase, 221..232), voir section 2 | +| `Docs/Migration/21_Sandbox_Addon.md` | M | 20742 | 10-07 14:44 | AP7,SB0,SB1,SB2,SB2-O1,SB4 | sûre | multi-phases, voir section 2 | +| `LifePlay.uproject` | M | 3255 | 10-06 22:45 | AP7? | inconnue | 06/10 22:45 (après le commit 21:10 et après le snapshot AP7-addon 22:27) ; diff = LPSandbox SupportedTargetPlatforms Win64 + AdditionalPluginDirectories déplacé en fin de fichier ; aucun manifeste, aucune CHG (CHG-219/S7 ne cite que Optional) | +| `Tools/__pycache__/RetargetQuaternius.cpython-314.pyc` | ?? | 30901 | 10-05 20:49 | aucune | sûre | bytecode Python généré (05/10 20:49) ; ne jamais commiter | +| `Source/LifePlay/LPKeyboardSubsystem.cpp` | ?? | 27785 | 10-05 13:00 | Clavier(+Réglages) | sûre | CHG-156, 162, 164 ; 05/10 13:00 | +| `Source/LifePlay/LPKeyboardSubsystem.h` | ?? | 2369 | 10-05 13:00 | Clavier(+Réglages) | sûre | CHG-156, 162, 164 ; 05/10 13:00 | +| `.cursor/skills/lifeplay-debug-build/reference.md` | ?? | 3408 | 10-04 12:30 | Dbg | probable | CHG-117 cite le skill lifeplay-debug-build ; 04/10 12:30-15:13 | +| `.cursor/skills/lifeplay-debug-build/SKILL.md` | ?? | 5114 | 10-04 15:13 | Dbg | probable | CHG-117 cite le skill lifeplay-debug-build ; 04/10 12:30-15:13 | +| `Docs/Migration/18_Build_Debug.md` | ?? | 17677 | 10-04 15:51 | Dbg | sûre | 18 : CHG-114 ; 19 : plan du lot Dbg (README : gates I0-I6, décision G6 vs O10) ; 04/10 13:28 et 15:51 | +| `Docs/Migration/19_Plan_Outillage_Debug.md` | ?? | 11363 | 10-04 13:28 | Dbg | sûre | 18 : CHG-114 ; 19 : plan du lot Dbg (README : gates I0-I6, décision G6 vs O10) ; 04/10 13:28 et 15:51 | +| `Plugins/ModdingExtra/Source/ModdingExtra/Private/LPDataCache.cpp` | M | 8945 | 10-04 12:28 | Dbg | sûre | CHG-114 (événements LoadTxt / LPDataCache, TRACE_CPUPROFILER) ; 04/10 12:28 | +| `Plugins/ModdingExtra/Source/ModdingExtra/Private/ModdingExtraBPLibrary.cpp` | M | 11994 | 10-04 12:28 | Dbg | sûre | CHG-114 (événements LoadTxt / LPDataCache, TRACE_CPUPROFILER) ; 04/10 12:28 | +| `Source/LifePlay/LPDebugSubsystem.cpp` | ?? | 16164 | 10-04 15:14 | Dbg | sûre | CHG-114/117 | +| `Source/LifePlay/LPDebugSubsystem.h` | ?? | 1714 | 10-04 15:12 | Dbg | sûre | CHG-114/117 | +| `Source/LifePlay/LPModSettingsLibrary.cpp` | M | 1610 | 10-04 12:31 | Dbg | sûre | CHG-114 (renommage SettingsModEnabledsName, build unity) ; 04/10 12:31 | +| `Tools/BuildDebug.ps1` | ?? | 3107 | 10-04 15:34 | Dbg | sûre | CHG-114/117/118 ; 04/10 12:28-15:34 | +| `Tools/CollectDebugArtifacts.ps1` | ?? | 3318 | 10-04 12:39 | Dbg | sûre | CHG-114/117/118 ; 04/10 12:28-15:34 | +| `Tools/debug/LifePlay_debug_bugs.bat` | ?? | 182 | 10-04 12:28 | Dbg | sûre | CHG-114/117/118 ; 04/10 12:28-15:34 | +| `Tools/debug/LifePlay_debug_collision.bat` | ?? | 276 | 10-04 15:13 | Dbg | sûre | CHG-114/117/118 ; 04/10 12:28-15:34 | +| `Tools/debug/LifePlay_debug_gpu.bat` | ?? | 220 | 10-04 12:28 | Dbg | sûre | CHG-114/117/118 ; 04/10 12:28-15:34 | +| `Tools/debug/LifePlay_debug_sessionA_insights.bat` | ?? | 395 | 10-04 12:28 | Dbg | sûre | CHG-114/117/118 ; 04/10 12:28-15:34 | +| `Tools/debug/LifePlay_debug_sessionB_mem.bat` | ?? | 363 | 10-04 15:13 | Dbg | sûre | CHG-114/117/118 ; 04/10 12:28-15:34 | +| `Tools/debug/LifePlay_debug_sessionC_profil.bat` | ?? | 308 | 10-04 12:28 | Dbg | sûre | CHG-114/117/118 ; 04/10 12:28-15:34 | +| `Tools/debug/LifePlay_debug_ui.bat` | ?? | 199 | 10-04 15:33 | Dbg | sûre | CHG-114/117/118 ; 04/10 12:28-15:34 | +| `Tools/debug/LifePlay_debug_ui.ps1` | ?? | 11104 | 10-04 15:33 | Dbg | sûre | CHG-114/117/118 ; 04/10 12:28-15:34 | +| `Tools/SummarizeDebugCsv.ps1` | ?? | 2574 | 10-04 13:21 | Dbg | sûre | CHG-114/117/118 ; 04/10 12:28-15:34 | +| `Docs/Migration/08_Guide_Developpeur.md` | M | 14383 | 10-04 12:30 | Dbg (+O2) | probable | diff : renvois BuildDebug/18_Build_Debug (Dbg, 04/10 12:30) et paragraphe IoStore « depuis le lot O2 » ; aucun snapshot ni CHG ne cite ce fichier à cette date | +| `Docs/Migration/README.md` | M | 5377 | 10-07 08:19 | Dbg(2 lignes)+DOC-MOD(1 ligne) | sûre | +18, +19 (Dbg, CHG-114 ; déjà présentes dans le snapshot DOC-MOD) et +23 (CHG-225) ; voir section 2 | +| `Source/LifePlay/LPModInfoSubsystem.cpp` | M | 6958 | 10-04 14:14 | Dbg+G6b | sûre | CHG-114 (renommage ModInfoCheckInterval) + CHG-116 (appel PreloadCityPackages) ; 04/10 14:14 | +| `Docs/Migration/23_Cycle_De_Vie_Mod.md` | ?? | 40923 | 10-07 14:43 | DOC-MOD,DOC-MOD-2,DOC-MOD-3,SB4 | sûre | création DOC-MOD (CHG-225), puis 226, 227, 232 (§ 7) ; voir section 2 | +| `Content/BPs/GI.uasset` | M | 51917561 | 10-04 14:19 | G6a | sûre | CHG-115 (4 appels FindCenterOfPolygon rebranchés) ; 04/10 14:19 ; snapshot G6a == HEAD ; 51 917 033 -> 51 917 561 o | +| `Source/LifePlayEditorTools/LPFixFindCenterCommandlet.cpp` | ?? | 7705 | 10-04 14:16 | G6a | sûre | CHG-115 ; 04/10 14:14-14:16 | +| `Source/LifePlayEditorTools/LPFixFindCenterCommandlet.h` | ?? | 592 | 10-04 14:14 | G6a | sûre | CHG-115 ; 04/10 14:14-14:16 | +| `Source/LifePlay/LPDataCompat.cpp` | M | 9446 | 10-04 14:14 | G6a+G6b | sûre | CHG-115 (FindCenterOfPolygon) et CHG-116 (PreloadCityPackages) ; 2 hunks par fichier | +| `Source/LifePlay/LPDataCompat.h` | M | 2523 | 10-04 14:14 | G6a+G6b | sûre | CHG-115 (FindCenterOfPolygon) et CHG-116 (PreloadCityPackages) ; 2 hunks par fichier | +| `.gitignore` | M | 1468 | 10-07 14:54 | HYG | sûre | index et .gitignore touchés le 07/10 14:54, après SB4 (14:44), aucune CHG ; 2 blocs : ignore des etat/**/*.txt, ignore de Content/Characters/ | +| `Source/LifePlayEditorTools/LPFixPawnResponseCommandlet.cpp` | ?? | 5369 | 10-04 22:32 | PawnGlobal | sûre | CHG-144 ; 04/10 22:32 | +| `Source/LifePlayEditorTools/LPFixPawnResponseCommandlet.h` | ?? | 700 | 10-04 22:33 | PawnGlobal | sûre | CHG-144 ; 04/10 22:32 | +| `Content/BPs/Room.uasset` | M | 5712854 | 10-04 22:35 | PawnGlobal+PawnDyn | sûre | CHG-144 puis CHG-145 ; 04/10 22:35 ; snapshot PawnGlobal == HEAD ; 5 713 084 -> 5 712 854 o (étape intermédiaire = snapshot PawnDyn, 5 713 081 o) | +| `.cursor/plans/controles_et_interaction_bd9e495b.plan.md` | ?? | 6515 | 10-05 09:31 | Proximité | probable | plan « contrôles et interaction » 05/10 09:31, minute proche de CHG-157 (09:26-09:27) ; non cité | +| `Config/DefaultInput.ini` | M | 17382 | 10-05 09:26 | Proximité | sûre | CHG-157 (ZQSD/WASD, Interact=E) ; 05/10 09:26 ; seul le lot L0 le snapshotte ; hors liste AP7+ | +| `Content/Modules/vin_Base/Proximity/furniture.lpnear` | ?? | 199 | 10-05 09:27 | Proximité | sûre | CHG-157 (index des .lpnear) ; 05/10 09:27 | +| `Source/LifePlay/LPDirectControlSubsystem.cpp` | ?? | 32787 | 10-05 20:23 | Proximité+AnimToGenesis | sûre | CHG-157 (création) ; manifeste AnimToGenesis (modif 05/10 20:23, état intermédiaire = copie du snapshot) | +| `Source/LifePlay/LPDirectControlSubsystem.h` | ?? | 2440 | 10-05 20:23 | Proximité+AnimToGenesis | sûre | CHG-157 (création) ; manifeste AnimToGenesis (modif 05/10 20:23, état intermédiaire = copie du snapshot) | +| `Source/LifePlay/LPColorGradeSubsystem.cpp` | ?? | 12464 | 10-05 12:14 | Réglages | sûre | CHG-161 ; 05/10 12:13 | +| `Source/LifePlay/LPColorGradeSubsystem.h` | ?? | 2153 | 10-05 12:13 | Réglages | sûre | CHG-161 ; 05/10 12:13 | +| `Source/LifePlay/LPSettingsSubsystem.cpp` | ?? | 19472 | 10-05 11:34 | Réglages | sûre | CHG-158..160 ; 05/10 11:10-11:34 | +| `Source/LifePlay/LPSettingsSubsystem.h` | ?? | 1758 | 10-05 11:10 | Réglages | sûre | CHG-158..160 ; 05/10 11:10-11:34 | +| `Tools/ImportQuaternius.py` | ?? | 1717 | 10-05 16:19 | Sandbox (CHG-176) | probable | 05/10 16:19 ; aucune CHG ne le cite ; import de Content/Quaternius (CHG-176) | +| `Tools/DiagnosePose.py` | ?? | 4647 | 10-05 20:42 | Sandbox/AnimToGenesis (CHG-176..186) | probable | 05/10 20:42 ; aucune CHG ne le cite ; diagnostic de pose, même plage horaire que le lot AnimToGenesis (20:23) | +| `Docs/Migration/etat/sandbox/SB0/SB0-VAL.md` | ?? | 1737 | 10-07 11:00 | SB0 | sûre | CHG-228 | +| `Docs/Migration/etat/sandbox/S3/S3-INT.md` | M | 3058 | 10-07 14:44 | SB0,SB1,SB2,SB2-O1,SB4 | sûre | pins successifs ; voir section 2 | +| `Docs/Migration/etat/sandbox/SB1/SB1-BUILD.md` | ?? | 1689 | 10-07 11:34 | SB1 | sûre | CHG-229 | +| `Docs/Migration/etat/sandbox/SB1/SB1-IMPL.md` | ?? | 2359 | 10-07 11:31 | SB1 | sûre | CHG-229 | +| `Docs/Migration/etat/sandbox/SB1/SB1-SPEC.md` | ?? | 14758 | 10-07 11:05 | SB1 | sûre | CHG-229 | +| `Docs/Migration/etat/sandbox/SB1/SB1-VAL.md` | ?? | 8282 | 10-07 12:04 | SB1 | sûre | CHG-229 | +| `Tools/anim/21_Sandbox_Addon.md` | ?? | 0 | 10-07 12:04 | SB1 (erreur de chemin) | probable | créé 07/10 12:04 au mauvais chemin (0 o pour le premier ; 1 087 o = extrait de SB1-VAL.md pour le second) ; à ne pas commiter, suppression par l'utilisateur | +| `Tools/anim/Journal_Modifications.md` | ?? | 1087 | 10-07 12:04 | SB1 (erreur de chemin) | probable | créé 07/10 12:04 au mauvais chemin (0 o pour le premier ; 1 087 o = extrait de SB1-VAL.md pour le second) ; à ne pas commiter, suppression par l'utilisateur | +| `Docs/Migration/etat/sandbox/SB2/SB2-BUILD.md` | ?? | 1558 | 10-07 12:42 | SB2 | sûre | CHG-230 | +| `Docs/Migration/etat/sandbox/SB2/SB2-CART.md` | ?? | 14477 | 10-07 12:13 | SB2 | sûre | CHG-230 | +| `Docs/Migration/etat/sandbox/SB2/SB2-IMPL.md` | ?? | 2899 | 10-07 12:25 | SB2 | sûre | CHG-230 | +| `Docs/Migration/etat/sandbox/SB2/SB2-REF.md` | ?? | 9804 | 10-07 12:40 | SB2 | sûre | CHG-230 | +| `Docs/Migration/etat/sandbox/SB2/SB2-VAL.md` | ?? | 11838 | 10-07 13:44 | SB2 | sûre | CHG-230 | +| `LPSandboxMeasure.cpp` | ?? | 0 | 10-07 12:23 | SB2 (erreur de chemin) | probable | fichier vide (0 o) à la racine, 07/10 12:23 = écriture au mauvais chemin pendant SB2-IMPL ; à ne pas commiter | +| `LPSandboxMeasureTour.cpp` | ?? | 0 | 10-07 12:23 | SB2 (erreur de chemin) | probable | fichier vide (0 o) à la racine, 07/10 12:23 = écriture au mauvais chemin pendant SB2-IMPL ; à ne pas commiter | +| `Docs/Migration/etat/sandbox/SB2/SB2-O1-BUILD.md` | ?? | 2468 | 10-07 14:06 | SB2-O1 | sûre | CHG-231 | +| `Docs/Migration/etat/sandbox/SB4/SB4-BUILD.md` | ?? | 1850 | 10-07 14:10 | SB4 | sûre | CHG-232 | +| `Docs/Migration/etat/sandbox/SB4/SB4-EVAL.md` | ?? | 4168 | 10-07 14:43 | SB4 | sûre | CHG-232 | +| `Docs/Migration/etat/sandbox/SB4/SB4-VAL.md` | ?? | 7028 | 10-07 14:44 | SB4 | sûre | CHG-232 | + +### 1b. Groupes (dossiers volumineux et lots de fichiers) + +| Groupe | Fichiers | Taille | Modifié (plage) | Phase | Certitude | Motif | +|---|---:|---:|---|---|---|---| +| `Docs/Migration/etat/**/*.txt (suppressions indexées, dont L4-CX-B02_essai1_rejete)` | 162 | 33,5 Mo | 09-29 01:09 .. 10-01 23:15 | HYG | sûre | suppression indexée (retrait de l'index) ; fichier encore sur disque, désormais couvert par .gitignore | +| `Content/Quaternius/UAL/*` | 132 | 64,1 Mo | 10-06 23:07 .. 10-06 23:49 | AP7 | sûre | état courant = reconversion 06/10 23:07-23:49 (manifestes PoseRetarget, AP3, AP4, AP7) ; import initial Sandbox CHG-176 ; binaires | +| `Content/Quaternius/Retarget/*` | 5 | 395 Ko | 10-06 23:45 .. 10-06 23:46 | AP7 | sûre | rigs régénérés 23:45-23:46 (manifeste AP7) ; créés CHG-178 (Sandbox) ; binaires | +| `Content/FreeAnimationsPack/Demo/*` | 124 | 487,1 Mo | 10-05 15:58 .. 10-05 15:58 | AP7 | probable | importé le 05/10 15:58 (avant AP1), cité seulement CHG-222..224 (deuxième pack) ; binaires | +| `Content/FreeAnimationsPack/Animations/* + Map/Overview.umap` | 11 | 8,6 Mo | 10-05 15:58 .. 10-05 15:58 | AP7 | probable | importé le 05/10 15:58 (avant AP1), cité seulement CHG-222..224 (deuxième pack) ; binaires | +| `Content/AnimPacks/FreeAnimationsPack/*` | 20 | 20,9 Mo | 10-07 00:37 .. 10-07 00:37 | AP7 | sûre | CHG-224 ; manifeste AP7 ; binaires | +| `Content/Retarget_ue5/*` | 5 | 466 Ko | 10-07 00:36 .. 10-07 00:36 | AP7 | sûre | CHG-224 (DirectoriesToNeverCook) ; manifeste AP7 ; binaires | +| `Content/__ExternalActors__/VehicleTemplate/*` | 149 | 178,8 Mo | 10-05 15:58 .. 10-05 15:58 | AP7 (scories d'import) | probable | 05/10 15:58, même minute que FreeAnimationsPack ; Content/ThirdPerson et Content/VehicleTemplate n'existent pas : acteurs externes orphelins ; binaires | +| `Content/__ExternalActors__/ThirdPerson/*` | 41 | 165 Ko | 10-05 15:58 .. 10-05 15:58 | AP7 (scories d'import) | probable | 05/10 15:58, même minute que FreeAnimationsPack ; Content/ThirdPerson et Content/VehicleTemplate n'existent pas : acteurs externes orphelins ; binaires | +| `Content/__ExternalObjects__/VehicleTemplate/* et ThirdPerson/*` | 20 | 43 Ko | 10-05 15:58 .. 10-05 15:58 | AP7 (scories d'import) | probable | 05/10 15:58, même minute que FreeAnimationsPack ; Content/ThirdPerson et Content/VehicleTemplate n'existent pas : acteurs externes orphelins ; binaires | +| `ModSources/lpr_anim_quaternius/Module/Animations/planches/*.jpg` | 42 | 4,2 Mo | 10-07 00:33 .. 10-07 00:33 | AP6,AP7 | sûre | planches JPEG CHG-211 (AP6), régénérées AP7 00:33 (binaires, section 3) | +| `ModSources/lpr_anim_freeanims/Module/Animations/planches/*.jpg` | 10 | 1,4 Mo | 10-07 02:38 .. 10-07 02:38 | AP7 | sûre | CHG-223/224 ; manifeste AP7 (nouveau) ; planches jpg = binaires (section 3) | +| `Content/Characters/Textures/NormalMap.uasset` | 1 | 7,9 Mo | disque conservé | HYG | sûre | suppression indexée, 8 259 429 o (même taille que HEAD) ; `/Content/Characters/` ajouté au .gitignore | + +### 1c. Décompte par phase (une entrée comptée une fois, phase = propriétaire principal, la première citée si multi-phases) + +| Phase | Entrées | +|---|---:| +| AP1 (reste) | 2 | +| AP4 (reste, retouché AP7) | 1 | +| AP5 (restes, retouchés AP6/AP7) | 2 | +| AP5 (restes) | 8 | +| AP6 (restes, retouchés AP7) | 46 | +| AP7 | 542 | +| Aucune (pycache) | 1 | +| DOC-MOD / -2 / -3 | 1 | +| Erreur de chemin SB1 (à écarter) | 2 | +| Erreur de chemin SB2 (à écarter) | 2 | +| Hygiène dépôt (hors phase) | 164 | +| Phases antérieures hors liste : Clavier(+Réglages) | 2 | +| Phases antérieures hors liste : Dbg | 20 | +| Phases antérieures hors liste : Dbg (+O2) | 1 | +| Phases antérieures hors liste : Dbg(2 lignes)+DOC-MOD(1 ligne) | 1 | +| Phases antérieures hors liste : Dbg+G6b | 1 | +| Phases antérieures hors liste : G6a | 3 | +| Phases antérieures hors liste : G6a+G6b | 2 | +| Phases antérieures hors liste : PawnGlobal | 2 | +| Phases antérieures hors liste : PawnGlobal+PawnDyn | 1 | +| Phases antérieures hors liste : Proximité | 3 | +| Phases antérieures hors liste : Proximité+AnimToGenesis | 2 | +| Phases antérieures hors liste : Réglages | 4 | +| Phases antérieures hors liste : Sandbox (CHG-176) | 1 | +| Phases antérieures hors liste : Sandbox/AnimToGenesis (CHG-176..186) | 1 | +| SB0 | 1 | +| SB0..SB4 (S3-INT, multi) | 1 | +| SB1 | 4 | +| SB2 | 5 | +| SB2-O1 | 1 | +| SB4 | 3 | +| **Total** | **830** | + + +## 2. Fichiers touchés par plusieurs phases : sources des états intermédiaires + +Règle : l'état « fin de P » d'un fichier = la copie, dans l'instantané de la phase suivante qui l'a touché (D:\Game\LifePlay_Backup_5.5\\), sinon l'état courant. Les instantanés sont des états *avant* modification, vérifiés MD5 contre leur manifeste (0 écart) ; existence confirmée pour chaque ligne ci-dessous. +#### Docs/Migration/Journal_Modifications.md (+1 ligne CHG par phase) + +| Phase P | État « fin de P » = | Existe | Octets | MD5 | +|---|---|---|---:|---| +| AP7 (CHG-221..224) | instantané `DOC-MOD\Docs\Migration\Journal_Modifications.md` — snapshot DOC-MOD contient CHG ≤ 224, base de départ AP7 = snapshot AP7 = HEAD (CHG ≤ 220) | oui | 396344 | `33BA3CD8FA528A08D4117C0F91D3F626` | +| DOC-MOD (225) | instantané `DOC-MOD-2\Docs\Migration\Journal_Modifications.md` — CHG ≤ 225 | oui | 397024 | `C7FCF6353DC56A34D08EC0A85C045C38` | +| DOC-MOD-2 (226) | instantané `DOC-MOD-3\Docs\Migration\Journal_Modifications.md` — CHG ≤ 226 | oui | 397955 | `1D625ABD5EFFCFE5FB68B52B6973A68B` | +| DOC-MOD-3 (227) | instantané `SB0\Docs\Migration\Journal_Modifications.md` — CHG ≤ 227 | oui | 398861 | `6CE48B7AF710AF5D8A1D6D8B085B411A` | +| SB0 (228) | instantané `SB1\Docs\Migration\Journal_Modifications.md` — CHG ≤ 228 | oui | 399848 | `D632E046DE699B5FAE552353AF309B26` | +| SB1 (229) | instantané `SB2\Docs\Migration\Journal_Modifications.md` — CHG ≤ 229 | oui | 401042 | `7AD517950E12D92D92170B524B407ECC` | +| SB2 (230) | instantané `SB2-O1\Docs\Migration\Journal_Modifications.md` — CHG ≤ 230 | oui | 402827 | `95DFB127168607791C9B86396CAB6D1B` | +| SB2-O1 (231) | instantané `SB4\Docs\Migration\Journal_Modifications.md` — CHG ≤ 231 | oui | 404452 | `B514A63500FCDB0F4E05BDCA2939BFD5` | +| SB4 (232) | copie courante du dépôt — CHG ≤ 232 | oui | 405813 | `81ECB0A5335922F5D6828D5F593F6EF6` | + +#### Docs/Migration/21_Sandbox_Addon.md + +| Phase P | État « fin de P » = | Existe | Octets | MD5 | +|---|---|---|---:|---| +| AP7 (pin addon a3b1b89) | instantané `SB0\Docs\Migration\21_Sandbox_Addon.md` — AP7 a bien modifié ce fichier : snapshot AP7 (27496312…) = HEAD, snapshot SB0 diffère | oui | 18269 | `E681367048711B33783B44D7C6B4AF66` | +| SB0 (pin 3b21fd1) | instantané `SB1\Docs\Migration\21_Sandbox_Addon.md` | oui | 18268 | `4D14153A3DAB11965CF3A6889F4FCC11` | +| SB1 (pin 82dae58) | instantané `SB2\Docs\Migration\21_Sandbox_Addon.md` | oui | 19165 | `4C61BBB6D45EF62216E1E4074087C861` | +| SB2 (pin fece7e9) | instantané `SB2-O1\Docs\Migration\21_Sandbox_Addon.md` | oui | 19738 | `BF4C9CDC2E1555FAF27A6472471529EF` | +| SB2-O1 (pin 3d85852) | instantané `SB4\Docs\Migration\21_Sandbox_Addon.md` | oui | 20244 | `CBBD963C6B45093BE49A8B8D84E0F040` | +| SB4 (pin 16905c6) | copie courante du dépôt | oui | 20742 | `F19C3DA0BE7707003DCB0F9680639778` | + +#### Docs/Migration/etat/sandbox/S3/S3-INT.md + +| Phase P | État « fin de P » = | Existe | Octets | MD5 | +|---|---|---|---:|---| +| AP7 (aucune modif visible) | blob HEAD (fba19bc) — snapshot AP7 == HEAD ; SB0 n'a pas de snapshot de ce fichier ; diff HEAD → snapshot SB1 = uniquement pin SB0 : AP7 n'a donc pas modifié S3-INT | oui | 2962 | `52C8767D2A3F4B6E311114A9D386E6F5` | +| SB0 (pin 3b21fd1) | instantané `SB1\Docs\Migration\etat\sandbox\S3\S3-INT.md` — déduit : seul instantané entre SB0 et SB1 | oui | 3019 | `3730BC467D1987C9DF4E93B2BACB997D` | +| SB1 (pin 82dae58) | instantané `SB2\Docs\Migration\etat\sandbox\S3\S3-INT.md` | oui | 3019 | `A91B857BD5A6A689C281B718ECE6F2F8` | +| SB2 (pin fece7e9) | instantané `SB2-O1\Docs\Migration\etat\sandbox\S3\S3-INT.md` | oui | 3005 | `582C95D7EC1D28CFB24802F9CE9AC27F` | +| SB2-O1 (pin 3d85852) | instantané `SB4\Docs\Migration\etat\sandbox\S3\S3-INT.md` | oui | 3008 | `790C59D10DB3F4203BE377B5783039C8` | +| SB4 (pin 16905c6) | copie courante du dépôt | oui | 3058 | `35F831567D48CC6A40CC8003182B9EC1` | + +#### Docs/Migration/20_Chaine_Animations.md + +| Phase P | État « fin de P » = | Existe | Octets | MD5 | +|---|---|---|---:|---| +| AP5 (déjà dans HEAD ou non concerné : base = snapshot AP5) | instantané `AP6\Docs\Migration\20_Chaine_Animations.md` — état fin AP5 | oui | 15635 | `4739FAED09DDB33D6B717BBD74881F0D` | +| AP6 (dans HEAD) | instantané `AP7\Docs\Migration\20_Chaine_Animations.md` — snapshot AP7 == HEAD | oui | 17826 | `839AEE3CDA854AF70697E7BECF281F46` | +| AP7 | copie courante du dépôt — pas de snapshot ultérieur ; mtime 07/10 03:09, aucun lot SB/DOC ne le touche | oui | 19539 | `9EDBAD976F2AC3AB3F926C67BF1C43DE` | + +#### Docs/Migration/README.md + +| Phase P | État « fin de P » = | Existe | Octets | MD5 | +|---|---|---|---:|---| +| Dbg (lignes 18 et 19, hors liste) | instantané `DOC-MOD\Docs\Migration\README.md` — snapshot DOC-MOD = HEAD + 2 lignes (18, 19) : état fin « Dbg » reconstructible pour ce fichier | oui | 5126 | `93E058C83A11EEB4B4FB08963C78D5F4` | +| DOC-MOD (ligne 23) | copie courante du dépôt — HEAD + 18 + 19 + 23 | oui | 5377 | `E4070690AA75B277C860619D495912A4` | + +#### Docs/Migration/23_Cycle_De_Vie_Mod.md (non suivi ; créé par DOC-MOD) + +| Phase P | État « fin de P » = | Existe | Octets | MD5 | +|---|---|---|---:|---| +| DOC-MOD (création) | instantané `DOC-MOD-2\Docs\Migration\23_Cycle_De_Vie_Mod.md` — instantané pris au début de DOC-MOD-2, après la création | oui | 16511 | `9C9D07A10C4BA95E8919E18437C4E240` | +| DOC-MOD-2 | instantané `DOC-MOD-3\Docs\Migration\23_Cycle_De_Vie_Mod.md` | oui | 24890 | `5AA378DA18EA4253A454E8067048B1C8` | +| DOC-MOD-3 (§ 2.6) | instantané `SB4\Docs\Migration\23_Cycle_De_Vie_Mod.md` — SB0..SB2-O1 ne touchent pas ce fichier (journal) ; courant − snapshot SB4 = +53 lignes, tout dans § 7 | oui | 34499 | `1253E05380C5DBBB0AF0805F1F535E9D` | +| SB4 (§ 7) | copie courante du dépôt | oui | 40923 | `B3F486FE7EFC591727B1DABE908D56A3` | + +#### Tools/anim/DeliverAnims.ps1 (non suivi) + +| Phase P | État « fin de P » = | Existe | Octets | MD5 | +|---|---|---|---:|---| +| AP5 (création) | instantané `AP6\Tools\anim\DeliverAnims.ps1` — fin AP5 | oui | 8019 | `26248379078A2E4F6F291384252A6A25` | +| AP6 | instantané `AP7\Tools\anim\DeliverAnims.ps1` — fin AP6 | oui | 9322 | `7294F09F72037EA22ACC46546938F44E` | +| AP7 | copie courante du dépôt | oui | 12783 | `7C3C2C2E84AFFDCD5B67CF19ACD9C0E1` | + +#### Tools/anim/DeliverAnims.py (non suivi) + +| Phase P | État « fin de P » = | Existe | Octets | MD5 | +|---|---|---|---:|---| +| AP5 (création) | instantané `AP6\Tools\anim\DeliverAnims.py` — fin AP5 | oui | 5004 | `C0A3EA7937DF7FEBC87170D38DA1D8D2` | +| AP6 | instantané `AP7\Tools\anim\DeliverAnims.py` — fin AP6 | oui | 5004 | `C0A3EA7937DF7FEBC87170D38DA1D8D2` | +| AP7 | copie courante du dépôt | oui | 5823 | `E882C2331EE7425CA7ED78DCBD6C7680` | + +#### Tools/anim/Catalogue.py (non suivi) + +| Phase P | État « fin de P » = | Existe | Octets | MD5 | +|---|---|---|---:|---| +| AP6 (création) | instantané `AP7\Tools\anim\Catalogue.py` — fin AP6 | oui | 24148 | `D916B1B5A1779943EA28039F7B103206` | +| AP7 | copie courante du dépôt | oui | 24354 | `1D82E86796A5969A5E5933B5F9388A00` | + +#### AnimSources/quaternius/pack.json (non suivi) + +| Phase P | État « fin de P » = | Existe | Octets | MD5 | +|---|---|---|---:|---| +| AP6 (création) | instantané `AP7\AnimSources\quaternius\pack.json` — fin AP6 | oui | 18644 | `5812B9528B5569ECB6E4DFF0EFE8B772` | +| AP7 | copie courante du dépôt | oui | 19664 | `472E4490C18E28759BD7C9DE1D2CB46B` | + +#### Tools/anim/RapportControles.py (non suivi) + +| Phase P | État « fin de P » = | Existe | Octets | MD5 | +|---|---|---|---:|---| +| AP4 (création, absente des manifestes AP4/AP6) | instantané `AP7\Tools\anim\RapportControles.py` — fin AP4/AP6 : seul état connu | oui | 15914 | `57C53F5025C04198C1081CD3DF6F2D34` | +| AP7 | copie courante du dépôt | oui | 16103 | `FD01ABA5697351F67DD6FF9783CD16AB` | + +#### Source/LifePlay/LPDirectControlSubsystem.cpp (non suivi) + +| Phase P | État « fin de P » = | Existe | Octets | MD5 | +|---|---|---|---:|---| +| Proximité (CHG-157) | instantané `AnimToGenesis\Source\LifePlay\LPDirectControlSubsystem.cpp` — état avant la modification du lot AnimToGenesis | oui | 32403 | `18A65AF334C17FA127D8974A478DE47D` | +| AnimToGenesis | copie courante du dépôt | oui | 32787 | `CC5EB9BCC7B99FFDE5CA08AD2B9B6FD3` | + +#### Source/LifePlay/LPDirectControlSubsystem.h (non suivi) + +| Phase P | État « fin de P » = | Existe | Octets | MD5 | +|---|---|---|---:|---| +| Proximité (CHG-157) | instantané `AnimToGenesis\Source\LifePlay\LPDirectControlSubsystem.h` | oui | 2450 | `4A37D01F4D1DFFCF002FE1B7CEEA52AB` | +| AnimToGenesis | copie courante du dépôt | oui | 2440 | `7B8FED0E88A4939BFB249C475FBDD7C4` | + +#### Content/BPs/Room.uasset + +| Phase P | État « fin de P » = | Existe | Octets | MD5 | +|---|---|---|---:|---| +| PawnGlobal (CHG-144) | instantané `PawnDyn\Content\BPs\Room.uasset` — snapshot PawnDyn = Room après PawnGlobal | oui | 5713081 | `C90914882F875B98CBAFEE4E73F189C8` | +| PawnDyn (CHG-145) | copie courante du dépôt | oui | 5712854 | `C3E9B54C273DBCA79584B631626AD8D8` | + + +### Commentaires sur les chaînes + +- **Phases dont l'état de fin n'est pas reconstructible isolément** : + - `S3-INT.md` en **SB0** : SB0 ne l'a pas snapshotté (manifeste SB0 = Journal + 21 seulement) bien que CHG-228 le cite. L'état fin SB0 est déduit de l'instantané SB1 (seul état avant SB1) ; cela suppose que rien d'autre n'a touché le fichier entre les deux (le diff HEAD → instantané SB1 ne montre que le pin SB0 `3b21fd1`). Fiable, mais déductif. + - `S3-INT.md` en **AP7** : le fichier est dans le manifeste AP7 mais n'a visiblement pas été modifié (le pin AP7 `a3b1b89` n'y figure pas, uniquement dans le doc 21) : AP7 n'a rien à y committer. + - `Tools/anim/RapportControles.py` : créé en AP4 (CHG-208) mais absent des manifestes AP4 et AP6 ; seul un état « avant AP7 » existe. Un commit AP4 rétroactif n'aurait que cet état. + - `Content/BPs/GI.uasset` (G6a), `Person.uasset` (AP5), `Room.uasset` (PawnGlobal puis PawnDyn) : états de fin = état courant, états de départ = instantanés (identiques à HEAD) ; seul Room a un état intermédiaire (instantané PawnDyn). + - Fichiers C++ à hunks multi-phases sans instantané (`LPDataCompat.*` G6a puis G6b, `LPModInfoSubsystem.cpp` Dbg puis G6b, `README.md` pour Dbg) : séparation par hunk (`git add -p`) possible, pas par copie. +- Pour les phases AP5 et AP6 (restes non suivis), les états « fin de phase » sont les instantanés du lot suivant (tables ci-dessus) ; ces états ne passent par aucun commit existant. +- Pour les fichiers suivis modifiés par AP7 seulement (`DefaultGame.ini`, `BuildMod.ps1`, `LPAnimEval/Twist.cpp`, `20_Chaine_Animations.md`) : base = instantané AP7 = HEAD, fin AP7 = copie courante (aucune phase ultérieure ne les touche : aucun manifeste SB/DOC ne les liste). +- Hors AP7+ : aucune des phases antérieures ne dispose d'un instantané de fin des fichiers multi-phases suivis (voir `LPDirectControlSubsystem.*`, `Room.uasset` ci-dessus pour les deux cas disponibles). + +## 3. Binaires et gros dossiers non suivis + +Aucun n'est exclu par le `.gitignore` actuel (aucune règle ne les couvre : seuls `Content/Heavy/*`, `Content/Saves/*`, `*.png`, `*.7z`, `*.mp4`, `/ModSources/*/Content/`, `/ModSources/*/Saved/` sont exclus ; `*.jpg` et `.uasset` hors dossiers cités ne le sont pas). Total Content non suivi : environ 760 Mo, 507 fichiers. + +| Dossier | Fichiers | Taille | Exclu par .gitignore ? | Recommandation | Motif | +|---|---:|---:|---|---|---| +| `Content/FreeAnimationsPack/Demo` | 124 | 487,1 Mo | non | **ignorer** (ajouter `/Content/FreeAnimationsPack/`) ; à décider pour la licence/redistribution | pack tiers brut importé le 05/10 15:58, source de travail ; CHG-224 le met en `DirectoriesToNeverCook` (« jamais dans le jeu ») ; principe : pas de binaires lourds (comme `Content/Heavy`) | +| `Content/FreeAnimationsPack/Animations` + `Map/Overview.umap` | 11 | 8,6 Mo | non | **ignorer** (même règle) | source du deuxième pack (CHG-222/223) | +| `Content/__ExternalActors__/VehicleTemplate` | 149 | 178,8 Mo | non | **à décider (suggestion : supprimer ou ignorer)** | acteurs externes orphelins : `Content/VehicleTemplate` et `Content/ThirdPerson` n'existent pas ; scories de l'import du pack du 05/10 15:58 | +| `Content/__ExternalActors__/ThirdPerson` | 41 | 0,2 Mo | non | idem | idem | +| `Content/__ExternalObjects__/VehicleTemplate` + `ThirdPerson` | 20 | 0,04 Mo | non | idem | idem | +| `Content/Quaternius/UAL` | 132 | 64,1 Mo | non | **ignorer** (ou à décider si les clips sources doivent rester reproductibles hors archive) | sources et clips convertis `B_`/`M_`, régénérables par `Tools/anim/RetargetPack.py` ; `DirectoriesToNeverCook` ; binaires | +| `Content/Quaternius/Retarget` | 5 | 0,4 Mo | non | **ignorer** | rigs et retargeters régénérés par `RetargetPack.py` | +| `Content/Retarget_ue5` | 5 | 0,5 Mo | non | **ignorer** | rigs UE5 (AP7), régénérés | +| `Content/AnimPacks/FreeAnimationsPack` | 20 | 20,9 Mo | non | **ignorer** | clips convertis AP7, livrés par le mod | +| `ModSources/lpr_anim_quaternius/Module/Animations/planches/*.jpg` | 42 | 4,2 Mo | non (`*.png` seulement) | **à décider** | livrable du mod (page `catalogue.html` : animation au survol) ; petite taille ; mais `.jpg` binaires, et les vignettes `.png` jumelles sont ignorées | +| `ModSources/lpr_anim_freeanims/Module/Animations/planches/*.jpg` | 10 | 1,4 Mo | non | **à décider** | idem | +| `Tools/__pycache__/` | 1 | 31 Ko | non | **ignorer** (ajouter `__pycache__/`) | bytecode généré | +| `Docs/Migration/etat/**/*.txt` (déjà indexés en suppression) | 162 | 33,6 Mo | **oui, par le `.gitignore` modifié** (en attente de commit) | commit d'hygiène | décision déjà prise dans l'index/.gitignore (14:54) | +| `Content/Characters/` | 1 | 7,9 Mo | **oui, par le `.gitignore` modifié** | commit d'hygiène | idem | + +Pas de LFS dans le dépôt ; aucun jeton repéré dans les entrées listées (le fichier `.mcp.json` est déjà ignoré, `Plugins/McpAutomationBridge` ignoré, absent de la liste). + +## 4. Inconnues et décisions à trancher par l'utilisateur + +1. **Périmètre des commits « un par phase »** : (a) seulement AP7, DOC-MOD, DOC-MOD-2, DOC-MOD-3, SB0, SB1, SB2, SB2-O1, SB4 ; (b) avec des commits de rattrapage AP1, AP4, AP5, AP6 (restes) avant AP7 ; (c) avec en plus les phases antérieures hors liste (Dbg, G6a/G6b, PawnGlobal/PawnDyn, Proximité, Réglages/Clavier, AnimToGenesis/Sandbox). Sans (b) et (c), les commits AP7 et DOC-MOD embarquent des fichiers de ces phases (voir ci-dessous) et ne se reconstruisent pas sur HEAD (par ex. `Person.uasset` modifié par AP5 reste hors commit, `Tools/anim/DeliverAnims.*` entre en entier dans AP7). +2. **Index déjà modifié** (163 suppressions + `.gitignore`) : confirmer que c'est voulu et le commiter à part (commit « hygiène », en premier) ; sinon le désindexer avant les phases. +3. **`LifePlay.uproject`** (06/10 22:45, aucun manifeste, aucune CHG) : diff = plugin `LPSandbox` avec `SupportedTargetPlatforms: ["Win64"]` et `AdditionalPluginDirectories` déplacé en fin de fichier. Phase probable : AP7 (compagnon du `.uplugin` de l'addon S7/CHG-219), mais attribuable aussi à un résidu S7. À trancher : l'inclure dans AP7 ou en commit à part. +4. **`Docs/Migration/08_Guide_Developpeur.md`** : phase Dbg probable ; le diff mêle aussi un paragraphe « depuis le lot O2 » (IoStore). À attribuer (Dbg, O2) ou à joindre au commit qui l'embarque. +5. **`Docs/Migration/README.md`** : trois lignes d'index (18, 19, 23). Les lignes 18 et 19 relèvent de Dbg (docs 18 et 19 non suivis) ; la ligne 23 de DOC-MOD. Sans commit Dbg, DOC-MOD embarque les lignes 18/19, ce qui impose de commiter aussi `18_Build_Debug.md` et `19_Plan_Outillage_Debug.md` (liens sinon cassés). +6. **Fichiers d'erreur de chemin à écarter (suppression par l'utilisateur, non effectuée par moi)** : `Tools/anim/21_Sandbox_Addon.md` (0 o), `Tools/anim/Journal_Modifications.md` (1 087 o, extrait de `SB1-VAL.md`), `LPSandboxMeasure.cpp` et `LPSandboxMeasureTour.cpp` à la racine (0 o). +7. **Binaires** (section 3) : décision d'ignorer ou non `Content/FreeAnimationsPack`, `Content/__External*__` (orphelins), `Content/Quaternius`, `Content/Retarget_ue5`, `Content/AnimPacks` ; décision sur les planches `.jpg` des deux mods d'animation. +8. **Entrées de certitude « probable »** à valider : `LPAnimEval/Twist*.h` et `LPAnimMethodSelect.h` (absents du manifeste AP7), `RapportControles.py` (AP4), `Tools/DiagnosePose.py` et `Tools/ImportQuaternius.py` (phase Sandbox/AnimToGenesis, aucune CHG), `.cursor/` (Dbg et plan « Proximité »), `Content/FreeAnimationsPack` (AP7), `Docs 08`. +9. **Méthode de fabrication des commits pour les fichiers multi-phases** (copier l'instantané dans l'arbre puis restaurer l'état courant, ou injecter l'instantané dans l'index sans toucher à l'arbre) : à valider avant exécution ; le dépôt ne doit pas perdre l'état courant des fichiers. +10. **Cohérence de compilation** : non vérifiée (aucune compilation, par consigne). Un commit AP7 sur HEAD sans les restes AP5 ne garantit pas que `LifePlayEditorTools` compile à l'identique ; à contrôler avant de considérer un commit comme « construisible ». + +## 5. Proposition d'ordre des commits (un par phase, sans push) + +Ordre chronologique des phases. Les commits marqués « (option) » dépendent de la décision 1. Pour chaque fichier multi-phase, la source de l'état à indexer est indiquée entre crochets : `snap X` = `D:\Game\LifePlay_Backup_5.5\X\` ; `courant` = copie du dépôt. + +### C0 — Hygiène dépôt (hors phase) — recommandé en premier +- Déjà indexé : 162 suppressions `Docs/Migration/etat/**/*.txt` et `Content/Characters/Textures/NormalMap.uasset`. +- À ajouter : `.gitignore` [courant]. + +### Commits de rattrapage (option, décision 1b/1c), dans l'ordre +- **Dbg** (CHG-114/117/118) : `Tools/BuildDebug.ps1`, `Tools/CollectDebugArtifacts.ps1`, `Tools/SummarizeDebugCsv.ps1`, `Tools/debug/LifePlay_debug_*.{bat,ps1}` (8 fichiers), `Source/LifePlay/LPDebugSubsystem.{h,cpp}`, `Docs/Migration/18_Build_Debug.md`, `19_Plan_Outillage_Debug.md`, `.cursor/skills/lifeplay-debug-build/{SKILL,reference}.md` ; hunks Dbg de `Plugins/ModdingExtra/.../LPDataCache.cpp`, `ModdingExtraBPLibrary.cpp`, `Source/LifePlay/LPModSettingsLibrary.cpp`, `LPModInfoSubsystem.cpp` (renommage), `Docs/Migration/08_Guide_Developpeur.md`, `README.md` (lignes 18, 19 : état = `snap DOC-MOD`). +- **G6a / G6b** : `Content/BPs/GI.uasset`, `Source/LifePlayEditorTools/LPFixFindCenterCommandlet.{h,cpp}`, hunks de `Source/LifePlay/LPDataCompat.{h,cpp}` et `LPModInfoSubsystem.cpp` (PreloadCityPackages). +- **PawnGlobal puis PawnDyn** : `Content/BPs/Room.uasset` [PawnGlobal : `snap PawnDyn` ; PawnDyn : courant], `LPFixPawnResponseCommandlet.{h,cpp}` (PawnGlobal). +- **Proximité / Clavier / Réglages** : `Config/DefaultInput.ini`, `Content/Modules/vin_Base/Proximity/furniture.lpnear`, `Source/LifePlay/LPDirectControlSubsystem.{h,cpp}` [Proximité : `snap AnimToGenesis`], `LPKeyboardSubsystem.*`, `LPSettingsSubsystem.*`, `LPColorGradeSubsystem.*`, `.cursor/plans/controles_et_interaction_bd9e495b.plan.md`. +- **Sandbox / AnimToGenesis** : `Source/LifePlay/LPDirectControlSubsystem.{h,cpp}` [courant], `Tools/ImportQuaternius.py`, `Tools/DiagnosePose.py`. +- **AP1 (reste)** : `Tools/anim/profiles/ue4_mannequin.json`, `Tools/anim/profiles/genesis8.json`. +- **AP4 (reste)** : `Tools/anim/RapportControles.py` [`snap AP7`]. +- **AP5 (restes)** : `Content/BPs/Person.uasset`, `Source/LifePlay/LPModDailies.{h,cpp}`, `Source/LifePlayEditorTools/LPPatchDailiesCommandlet.{h,cpp}`, `Tools/anim/DeliverAnims.{ps1,py}` [`snap AP6`], `ModSources/lpr_anim_quaternius/{lpr_anim_quaternius.uplugin,Module/CREDITS.txt,Module/lpr_anim_quaternius.lpmod}`. +- **AP6 (restes)** : `Tools/anim/Catalogue.py` [`snap AP7`], `AnimSources/quaternius/pack.json` [`snap AP7`], `Tools/anim/DeliverAnims.{ps1,py}` [`snap AP7`], et selon décision binaires `ModSources/lpr_anim_quaternius/Module/Animations/{catalogue.html,catalogue.json,planches/*.jpg}` [`snap AP7`]. + +### C1 — AP7 (CHG-221 à 224) +- `Config/DefaultGame.ini` [courant] +- `Docs/Migration/20_Chaine_Animations.md` [courant] +- `Docs/Migration/21_Sandbox_Addon.md` [`snap SB0`] +- `Docs/Migration/Journal_Modifications.md` [`snap DOC-MOD`] +- `Source/LifePlayEditorTools/LPAnimEvalCommandlet.{h,cpp}`, `LPAnimTwistCommandlet.{h,cpp}` [courant] +- `Source/LifePlayEditorTools/LPAnimIdentifyCommandlet.{h,cpp}`, `LPAnimMethodSelect.h` [courant] +- `Tools/BuildMod.ps1` [courant] +- `Tools/anim/AnimPipeline.ps1`, `RetargetPack.py`, `methodes/{ue4,ue5,genesis_direct}.json`, `profiles/ue5_mannequin.json` [courant] +- `Tools/anim/DeliverAnims.{ps1,py}`, `Catalogue.py`, `RapportControles.py`, `AnimSources/quaternius/pack.json` [courant ; sans rattrapage ils entrent ici en entier] +- `Tools/anim/profiles/{ue4_mannequin,genesis8}.json` [courant ; sans rattrapage AP1] +- `AnimSources/freeanims/pack.json` [courant] +- `ModSources/lpr_anim_freeanims/{lpr_anim_freeanims.uplugin,Module/CREDITS.txt,Module/lpr_anim_freeanims.lpmod,Module/Animations/catalogue.{html,json}}` [courant] + planches `.jpg` (décision) +- `ModSources/lpr_anim_quaternius/Module/Animations/catalogue.{html,json}` [courant] + planches (décision) + uplugin/lpmod/CREDITS si non rattrapés +- `LifePlay.uproject` [courant] (décision 3) +- Binaires Content (décision section 3) : normalement aucun. +- Pas de `S3-INT.md` (aucune modification AP7). + +### C2 — DOC-MOD (CHG-225) +- `Docs/Migration/23_Cycle_De_Vie_Mod.md` [`snap DOC-MOD-2`] +- `Docs/Migration/README.md` [courant] (contient aussi les lignes 18/19 de Dbg : décision 5) +- `Docs/Migration/Journal_Modifications.md` [`snap DOC-MOD-2`] + +### C3 — DOC-MOD-2 (CHG-226) +- `Docs/Migration/23_Cycle_De_Vie_Mod.md` [`snap DOC-MOD-3`] +- `Docs/Migration/Journal_Modifications.md` [`snap DOC-MOD-3`] + +### C4 — DOC-MOD-3 (CHG-227) +- `Docs/Migration/23_Cycle_De_Vie_Mod.md` [`snap SB4`] +- `Docs/Migration/Journal_Modifications.md` [`snap SB0`] + +### C5 — SB0 (CHG-228) +- `Docs/Migration/etat/sandbox/SB0/SB0-VAL.md` [courant] +- `Docs/Migration/21_Sandbox_Addon.md` [`snap SB1`] +- `Docs/Migration/etat/sandbox/S3/S3-INT.md` [`snap SB1`] (déductif, voir section 2) +- `Docs/Migration/Journal_Modifications.md` [`snap SB1`] + +### C6 — SB1 (CHG-229) +- `Docs/Migration/etat/sandbox/SB1/SB1-BUILD.md`, `SB1-IMPL.md`, `SB1-SPEC.md`, `SB1-VAL.md` [courant] +- `21_Sandbox_Addon.md`, `S3-INT.md`, `Journal_Modifications.md` [`snap SB2`] + +### C7 — SB2 (CHG-230) +- `Docs/Migration/etat/sandbox/SB2/SB2-BUILD.md`, `SB2-CART.md`, `SB2-IMPL.md`, `SB2-REF.md`, `SB2-VAL.md` [courant] +- `21_Sandbox_Addon.md`, `S3-INT.md`, `Journal_Modifications.md` [`snap SB2-O1`] + +### C8 — SB2-O1 (CHG-231) +- `Docs/Migration/etat/sandbox/SB2/SB2-O1-BUILD.md` [courant] +- `21_Sandbox_Addon.md`, `S3-INT.md`, `Journal_Modifications.md` [`snap SB4`] + +### C9 — SB4 (CHG-232) +- `Docs/Migration/etat/sandbox/SB4/SB4-BUILD.md`, `SB4-EVAL.md`, `SB4-VAL.md` [courant] +- `Docs/Migration/23_Cycle_De_Vie_Mod.md` (§ 7), `21_Sandbox_Addon.md`, `S3-INT.md`, `Journal_Modifications.md` [courant] + +Résidus à ne pas commiter dans cette suite : `Tools/__pycache__/`, `Tools/anim/21_Sandbox_Addon.md`, `Tools/anim/Journal_Modifications.md`, `LPSandboxMeasure.cpp`, `LPSandboxMeasureTour.cpp` ; binaires `Content/...` selon section 3. + +Après C9, l'arbre de travail doit être identique à son état actuel (vérification proposée : `git status --short` doit ne montrer que les résidus et les binaires ignorés/écartés). diff --git a/Docs/Migration/etat/commit_plan/COMMIT-PLAN.json b/Docs/Migration/etat/commit_plan/COMMIT-PLAN.json new file mode 100644 index 0000000..a3f85dc --- /dev/null +++ b/Docs/Migration/etat/commit_plan/COMMIT-PLAN.json @@ -0,0 +1,1139 @@ +[ + { + "id": "C0", + "phase": "HYG", + "message": "Hygiène du dépôt : journaux de lots et texture isolée hors suivi, règles .gitignore pour les assets d'animation lourds", + "chg": "hors CHG", + "files": [ + { + "path": ".gitignore", + "source": "content:commit_plan/gitignore.final" + } + ], + "keep_staged": true, + "notes": "163 suppressions déjà indexées (162 Docs/Migration/etat/**/*.txt dont L4-CX-B02_essai1_rejete, et Content/Characters/Textures/NormalMap.uasset) : ne pas les réindexer. .gitignore = état courant + 9 lignes (assets d'animation lourds, acteurs orphelins, __pycache__/)." + }, + { + "id": "C1", + "phase": "Dbg", + "message": "Dbg : outillage de debug (BuildDebug, LPDebugSubsystem, lanceurs, événements LoadTxt / LPDataCache), documents 18 et 19", + "chg": "CHG-114, 117, 118", + "files": [ + { + "path": "Tools/BuildDebug.ps1", + "source": "current" + }, + { + "path": "Tools/CollectDebugArtifacts.ps1", + "source": "current" + }, + { + "path": "Tools/SummarizeDebugCsv.ps1", + "source": "current" + }, + { + "path": "Tools/debug/LifePlay_debug_bugs.bat", + "source": "current" + }, + { + "path": "Tools/debug/LifePlay_debug_collision.bat", + "source": "current" + }, + { + "path": "Tools/debug/LifePlay_debug_gpu.bat", + "source": "current" + }, + { + "path": "Tools/debug/LifePlay_debug_sessionA_insights.bat", + "source": "current" + }, + { + "path": "Tools/debug/LifePlay_debug_sessionB_mem.bat", + "source": "current" + }, + { + "path": "Tools/debug/LifePlay_debug_sessionC_profil.bat", + "source": "current" + }, + { + "path": "Tools/debug/LifePlay_debug_ui.bat", + "source": "current" + }, + { + "path": "Tools/debug/LifePlay_debug_ui.ps1", + "source": "current" + }, + { + "path": "Source/LifePlay/LPDebugSubsystem.h", + "source": "current" + }, + { + "path": "Source/LifePlay/LPDebugSubsystem.cpp", + "source": "current" + }, + { + "path": "Source/LifePlay/LPModSettingsLibrary.cpp", + "source": "current" + }, + { + "path": "Plugins/ModdingExtra/Source/ModdingExtra/Private/LPDataCache.cpp", + "source": "current" + }, + { + "path": "Plugins/ModdingExtra/Source/ModdingExtra/Private/ModdingExtraBPLibrary.cpp", + "source": "current" + }, + { + "path": "Docs/Migration/18_Build_Debug.md", + "source": "current" + }, + { + "path": "Docs/Migration/19_Plan_Outillage_Debug.md", + "source": "current" + }, + { + "path": "Docs/Migration/08_Guide_Developpeur.md", + "source": "current" + }, + { + "path": "Docs/Migration/README.md", + "source": "snap:DOC-MOD" + } + ], + "notes": "08_Guide_Developpeur.md en entier (contient aussi le paragraphe IoStore « depuis le lot O2 »). README : lignes 18 et 19 seulement (état = instantané DOC-MOD). LPModInfoSubsystem.cpp (renommage ModInfoCheckInterval de Dbg) est en entier dans G6b (dernière phase qui le modifie) ; le commit Dbg isolé n'a donc pas ce renommage. .cursor/skills/lifeplay-debug-build exclu (décision 3)." + }, + { + "id": "C2", + "phase": "G6a", + "message": "G6a : FindCenterOfPolygon rebranché dans GI, commandlet LPFixFindCenter", + "chg": "CHG-115", + "files": [ + { + "path": "Content/BPs/GI.uasset", + "source": "current" + }, + { + "path": "Source/LifePlayEditorTools/LPFixFindCenterCommandlet.h", + "source": "current" + }, + { + "path": "Source/LifePlayEditorTools/LPFixFindCenterCommandlet.cpp", + "source": "current" + } + ], + "notes": "LPDataCompat.h/.cpp (hunk FindCenterOfPolygon de G6a) sont en entier dans G6b : pas d'instantané intermédiaire ; ce commit isolé peut donc ne pas compiler seul (LPFixFindCenterCommandlet dépend de LPDataCompat)." + }, + { + "id": "C3", + "phase": "G6b", + "message": "G6b : PreloadCityPackages au démarrage (LPDataCompat, LPModInfoSubsystem ; rattrape FindCenterOfPolygon et le renommage ModInfoCheckInterval)", + "chg": "CHG-116", + "files": [ + { + "path": "Source/LifePlay/LPDataCompat.h", + "source": "current" + }, + { + "path": "Source/LifePlay/LPDataCompat.cpp", + "source": "current" + }, + { + "path": "Source/LifePlay/LPModInfoSubsystem.cpp", + "source": "current" + } + ], + "notes": "Fichiers en entier : contiennent aussi les hunks de G6a (LPDataCompat.*) et de Dbg (LPModInfoSubsystem.cpp)." + }, + { + "id": "C4", + "phase": "PawnGlobal", + "message": "PawnGlobal : Room::addObject bloque le canal Pawn, commandlet LPFixPawnResponse", + "chg": "CHG-144", + "files": [ + { + "path": "Content/BPs/Room.uasset", + "source": "snap:PawnDyn" + }, + { + "path": "Source/LifePlayEditorTools/LPFixPawnResponseCommandlet.h", + "source": "current" + }, + { + "path": "Source/LifePlayEditorTools/LPFixPawnResponseCommandlet.cpp", + "source": "current" + } + ], + "notes": "Room.uasset = instantané PawnDyn (état après PawnGlobal, avant PawnDyn)." + }, + { + "id": "C5", + "phase": "PawnDyn", + "message": "PawnDyn : Room::addObject passe les objets de Room en WorldDynamic, murs Wall1 à Wall4", + "chg": "CHG-145", + "files": [ + { + "path": "Content/BPs/Room.uasset", + "source": "current" + } + ], + "notes": "Room.uasset = état courant." + }, + { + "id": "C6", + "phase": "Proximité", + "message": "Proximité : LPDirectControlSubsystem (marche ZQSD/WASD, touche E), DefaultInput, index furniture.lpnear", + "chg": "CHG-157, 166, 167", + "files": [ + { + "path": "Config/DefaultInput.ini", + "source": "current" + }, + { + "path": "Content/Modules/vin_Base/Proximity/furniture.lpnear", + "source": "current" + }, + { + "path": "Source/LifePlay/LPDirectControlSubsystem.h", + "source": "snap:AnimToGenesis" + }, + { + "path": "Source/LifePlay/LPDirectControlSubsystem.cpp", + "source": "snap:AnimToGenesis" + } + ], + "notes": "LPDirectControlSubsystem.* = instantané AnimToGenesis (état avant la modification AnimToGenesis). .cursor/plans/controles_et_interaction_bd9e495b.plan.md exclu (décision 3)." + }, + { + "id": "C7", + "phase": "Clavier", + "message": "Clavier : LPKeyboardSubsystem (bouton et panneau Clavier, touches dans Saved/Config/Windows/LPKeyboard.ini)", + "chg": "CHG-156, 164, 165", + "files": [ + { + "path": "Source/LifePlay/LPKeyboardSubsystem.h", + "source": "current" + }, + { + "path": "Source/LifePlay/LPKeyboardSubsystem.cpp", + "source": "current" + } + ], + "notes": "" + }, + { + "id": "C8", + "phase": "Réglages", + "message": "Réglages : LPSettingsSubsystem (onglets, bouton titre) et LPColorGradeSubsystem (réglages vidéo couleur)", + "chg": "CHG-158..163", + "files": [ + { + "path": "Source/LifePlay/LPSettingsSubsystem.h", + "source": "current" + }, + { + "path": "Source/LifePlay/LPSettingsSubsystem.cpp", + "source": "current" + }, + { + "path": "Source/LifePlay/LPColorGradeSubsystem.h", + "source": "current" + }, + { + "path": "Source/LifePlay/LPColorGradeSubsystem.cpp", + "source": "current" + } + ], + "notes": "" + }, + { + "id": "C9", + "phase": "Sandbox/AnimToGenesis", + "message": "Sandbox / AnimToGenesis : LPDirectControlSubsystem (mannequin Quaternius, copie vers Genesis), ImportQuaternius, DiagnosePose", + "chg": "CHG-168..186", + "files": [ + { + "path": "Source/LifePlay/LPDirectControlSubsystem.h", + "source": "current" + }, + { + "path": "Source/LifePlay/LPDirectControlSubsystem.cpp", + "source": "current" + }, + { + "path": "Tools/ImportQuaternius.py", + "source": "current" + }, + { + "path": "Tools/DiagnosePose.py", + "source": "current" + } + ], + "notes": "ImportQuaternius.py et DiagnosePose.py : attribution probable (aucune CHG ne les cite)." + }, + { + "id": "C10", + "phase": "AP1", + "message": "AP1 (reste) : profils de squelettes ue4_mannequin et genesis8", + "chg": "CHG-205", + "files": [ + { + "path": "Tools/anim/profiles/ue4_mannequin.json", + "source": "current" + }, + { + "path": "Tools/anim/profiles/genesis8.json", + "source": "current" + } + ], + "notes": "" + }, + { + "id": "C11", + "phase": "AP4", + "message": "AP4 (reste) : RapportControles.py", + "chg": "CHG-208", + "files": [ + { + "path": "Tools/anim/RapportControles.py", + "source": "snap:AP7" + } + ], + "notes": "Seul état connu = instantané AP7 (état avant AP7). Attribution probable." + }, + { + "id": "C12", + "phase": "AP5", + "message": "AP5 (restes) : animate() / LPModDailies, commandlet LPPatchDailies, Person, DeliverAnims, mod lpr_anim_quaternius", + "chg": "CHG-209", + "files": [ + { + "path": "Content/BPs/Person.uasset", + "source": "current" + }, + { + "path": "Source/LifePlay/LPModDailies.h", + "source": "current" + }, + { + "path": "Source/LifePlay/LPModDailies.cpp", + "source": "current" + }, + { + "path": "Source/LifePlayEditorTools/LPPatchDailiesCommandlet.h", + "source": "current" + }, + { + "path": "Source/LifePlayEditorTools/LPPatchDailiesCommandlet.cpp", + "source": "current" + }, + { + "path": "Tools/anim/DeliverAnims.ps1", + "source": "snap:AP6" + }, + { + "path": "Tools/anim/DeliverAnims.py", + "source": "snap:AP6" + }, + { + "path": "ModSources/lpr_anim_quaternius/lpr_anim_quaternius.uplugin", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/CREDITS.txt", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/lpr_anim_quaternius.lpmod", + "source": "current" + } + ], + "notes": "DeliverAnims.* = instantané AP6 (état fin AP5)." + }, + { + "id": "C13", + "phase": "AP6", + "message": "AP6 (restes) : catalogue des animations (Catalogue.py, pack.json, catalogue.html/json) et planches animées du mod Quaternius", + "chg": "CHG-210, 211", + "files": [ + { + "path": "Tools/anim/Catalogue.py", + "source": "snap:AP7" + }, + { + "path": "AnimSources/quaternius/pack.json", + "source": "snap:AP7" + }, + { + "path": "Tools/anim/DeliverAnims.ps1", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/catalogue.html", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/catalogue.json", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_crouch_fwd_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_crouch_idle_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_dance_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_death01.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_driving_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_fixing_kneeling.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_hit_chest.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_hit_head.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_idle_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_idle_talking_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_idle_torch_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_interact.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_jog_fwd_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_jump_land.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_jump_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_jump_start.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_pickup_table.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_pistol_aim_down.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_pistol_aim_neutral.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_pistol_aim_up.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_pistol_idle_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_pistol_reload.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_pistol_shoot.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_punch_cross.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_punch_jab.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_push_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_roll.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_sitting_enter.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_sitting_exit.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_sitting_idle_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_sitting_talking_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_spell_simple_enter.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_spell_simple_exit.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_spell_simple_idle_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_spell_simple_shoot.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_sprint_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_swim_fwd_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_swim_idle_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_sword_attack.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_sword_idle.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_walk_formal_loop.jpg", + "source": "snap:AP7" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_walk_loop.jpg", + "source": "snap:AP7" + } + ], + "notes": "États = instantané AP7 (fin AP6). Planches .jpg commitées (pas d'exclusion .jpg dans .gitignore)." + }, + { + "id": "C14", + "phase": "AP7", + "message": "AP7 : pilote AnimPipeline, méthodes ue4/ue5/genesis_direct, identification du squelette, mod lpr_anim_freeanims, cuisson DLC (ProjectVersion 2026.10.1.6)", + "chg": "CHG-221..224", + "files": [ + { + "path": "Config/DefaultGame.ini", + "source": "current" + }, + { + "path": "Docs/Migration/20_Chaine_Animations.md", + "source": "current" + }, + { + "path": "Docs/Migration/21_Sandbox_Addon.md", + "source": "snap:SB0" + }, + { + "path": "Docs/Migration/Journal_Modifications.md", + "source": "snap:DOC-MOD" + }, + { + "path": "LifePlay.uproject", + "source": "current" + }, + { + "path": "Source/LifePlayEditorTools/LPAnimEvalCommandlet.h", + "source": "current" + }, + { + "path": "Source/LifePlayEditorTools/LPAnimEvalCommandlet.cpp", + "source": "current" + }, + { + "path": "Source/LifePlayEditorTools/LPAnimTwistCommandlet.h", + "source": "current" + }, + { + "path": "Source/LifePlayEditorTools/LPAnimTwistCommandlet.cpp", + "source": "current" + }, + { + "path": "Source/LifePlayEditorTools/LPAnimIdentifyCommandlet.h", + "source": "current" + }, + { + "path": "Source/LifePlayEditorTools/LPAnimIdentifyCommandlet.cpp", + "source": "current" + }, + { + "path": "Source/LifePlayEditorTools/LPAnimMethodSelect.h", + "source": "current" + }, + { + "path": "Tools/BuildMod.ps1", + "source": "current" + }, + { + "path": "Tools/anim/AnimPipeline.ps1", + "source": "current" + }, + { + "path": "Tools/anim/RetargetPack.py", + "source": "current" + }, + { + "path": "Tools/anim/methodes/ue4.json", + "source": "current" + }, + { + "path": "Tools/anim/methodes/ue5.json", + "source": "current" + }, + { + "path": "Tools/anim/methodes/genesis_direct.json", + "source": "current" + }, + { + "path": "Tools/anim/profiles/ue5_mannequin.json", + "source": "current" + }, + { + "path": "Tools/anim/DeliverAnims.ps1", + "source": "current" + }, + { + "path": "Tools/anim/DeliverAnims.py", + "source": "current" + }, + { + "path": "Tools/anim/Catalogue.py", + "source": "current" + }, + { + "path": "Tools/anim/RapportControles.py", + "source": "current" + }, + { + "path": "AnimSources/quaternius/pack.json", + "source": "current" + }, + { + "path": "AnimSources/freeanims/pack.json", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/lpr_anim_freeanims.uplugin", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/Module/CREDITS.txt", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/Module/lpr_anim_freeanims.lpmod", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/Module/Animations/catalogue.html", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/Module/Animations/catalogue.json", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/catalogue.html", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/catalogue.json", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/Module/Animations/planches/fap_as_airkiss.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/Module/Animations/planches/fap_as_attackinlevitation2.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/Module/Animations/planches/fap_as_chilldriving.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/Module/Animations/planches/fap_as_combohands.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/Module/Animations/planches/fap_as_eatingonparty.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/Module/Animations/planches/fap_as_flyingup.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/Module/Animations/planches/fap_as_goforward.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/Module/Animations/planches/fap_as_rest.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/Module/Animations/planches/fap_as_rightlegkick2.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_freeanims/Module/Animations/planches/fap_as_talk.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_crouch_fwd_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_crouch_idle_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_dance_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_death01.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_driving_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_fixing_kneeling.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_hit_chest.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_hit_head.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_idle_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_idle_talking_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_idle_torch_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_interact.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_jog_fwd_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_jump_land.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_jump_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_jump_start.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_pickup_table.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_pistol_aim_down.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_pistol_aim_neutral.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_pistol_aim_up.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_pistol_idle_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_pistol_reload.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_pistol_shoot.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_punch_cross.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_punch_jab.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_push_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_roll.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_sitting_enter.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_sitting_exit.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_sitting_idle_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_sitting_talking_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_spell_simple_enter.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_spell_simple_exit.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_spell_simple_idle_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_spell_simple_shoot.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_sprint_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_swim_fwd_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_swim_idle_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_sword_attack.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_sword_idle.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_walk_formal_loop.jpg", + "source": "current" + }, + { + "path": "ModSources/lpr_anim_quaternius/Module/Animations/planches/qua_walk_loop.jpg", + "source": "current" + } + ], + "notes": "Journal = instantané DOC-MOD (CHG <= 224) ; 21_Sandbox_Addon.md = instantané SB0 (pin AP7). LifePlay.uproject rattaché à AP7 (décision 4). S3-INT.md non modifié par AP7. Planches quaternius : listées ici seulement si elles diffèrent de l'état AP6." + }, + { + "id": "C15", + "phase": "DOC-MOD", + "message": "DOC-MOD : document 23 (cycle de vie d'un mod), ligne d'index README", + "chg": "CHG-225", + "files": [ + { + "path": "Docs/Migration/23_Cycle_De_Vie_Mod.md", + "source": "snap:DOC-MOD-2" + }, + { + "path": "Docs/Migration/README.md", + "source": "current" + }, + { + "path": "Docs/Migration/Journal_Modifications.md", + "source": "snap:DOC-MOD-2" + } + ], + "notes": "README = état courant (lignes 18, 19 déjà commitées par Dbg, + ligne 23)." + }, + { + "id": "C16", + "phase": "DOC-MOD-2", + "message": "DOC-MOD-2 : cycle de vie d'un mod, § 2.4, 3.1 à 3.4, 5, 6", + "chg": "CHG-226", + "files": [ + { + "path": "Docs/Migration/23_Cycle_De_Vie_Mod.md", + "source": "snap:DOC-MOD-3" + }, + { + "path": "Docs/Migration/Journal_Modifications.md", + "source": "snap:DOC-MOD-3" + } + ], + "notes": "" + }, + { + "id": "C17", + "phase": "DOC-MOD-3", + "message": "DOC-MOD-3 : cycle de vie d'un mod, § 2.6 et 7 schémas Mermaid", + "chg": "CHG-227", + "files": [ + { + "path": "Docs/Migration/23_Cycle_De_Vie_Mod.md", + "source": "snap:SB4" + }, + { + "path": "Docs/Migration/Journal_Modifications.md", + "source": "snap:SB0" + } + ], + "notes": "" + }, + { + "id": "C18", + "phase": "SB0", + "message": "SB0 : conception de la sandbox modulaire (gestionnaire de mods, barre laterale ; validation SB0, pin 3b21fd1)", + "chg": "CHG-228", + "files": [ + { + "path": "Docs/Migration/etat/sandbox/SB0/SB0-VAL.md", + "source": "current" + }, + { + "path": "Docs/Migration/21_Sandbox_Addon.md", + "source": "snap:SB1" + }, + { + "path": "Docs/Migration/etat/sandbox/S3/S3-INT.md", + "source": "snap:SB1" + }, + { + "path": "Docs/Migration/Journal_Modifications.md", + "source": "snap:SB1" + } + ], + "notes": "S3-INT.md fin SB0 = instantané SB1 (déductif, seul état entre SB0 et SB1)." + }, + { + "id": "C19", + "phase": "SB1", + "message": "SB1 : registre des mods de la sandbox, barre laterale, modes enveloppes en mods (specification, implementation, build, validation ; pin 82dae58)", + "chg": "CHG-229", + "files": [ + { + "path": "Docs/Migration/etat/sandbox/SB1/SB1-BUILD.md", + "source": "current" + }, + { + "path": "Docs/Migration/etat/sandbox/SB1/SB1-IMPL.md", + "source": "current" + }, + { + "path": "Docs/Migration/etat/sandbox/SB1/SB1-SPEC.md", + "source": "current" + }, + { + "path": "Docs/Migration/etat/sandbox/SB1/SB1-VAL.md", + "source": "current" + }, + { + "path": "Docs/Migration/21_Sandbox_Addon.md", + "source": "snap:SB2" + }, + { + "path": "Docs/Migration/etat/sandbox/S3/S3-INT.md", + "source": "snap:SB2" + }, + { + "path": "Docs/Migration/Journal_Modifications.md", + "source": "snap:SB2" + } + ], + "notes": "" + }, + { + "id": "C20", + "phase": "SB2", + "message": "SB2 : bibliotheques scene et personnages, etat des modes sorti vers les mods (carte, implementation, reference, validation ; pin fece7e9)", + "chg": "CHG-230", + "files": [ + { + "path": "Docs/Migration/etat/sandbox/SB2/SB2-BUILD.md", + "source": "current" + }, + { + "path": "Docs/Migration/etat/sandbox/SB2/SB2-CART.md", + "source": "current" + }, + { + "path": "Docs/Migration/etat/sandbox/SB2/SB2-IMPL.md", + "source": "current" + }, + { + "path": "Docs/Migration/etat/sandbox/SB2/SB2-REF.md", + "source": "current" + }, + { + "path": "Docs/Migration/etat/sandbox/SB2/SB2-VAL.md", + "source": "current" + }, + { + "path": "Docs/Migration/21_Sandbox_Addon.md", + "source": "snap:SB2-O1" + }, + { + "path": "Docs/Migration/etat/sandbox/S3/S3-INT.md", + "source": "snap:SB2-O1" + }, + { + "path": "Docs/Migration/Journal_Modifications.md", + "source": "snap:SB2-O1" + } + ], + "notes": "" + }, + { + "id": "C21", + "phase": "SB2-O1", + "message": "SB2-O1 : meubles et murs visibles apres la Mesure (ShowRoom ; pin 3d85852)", + "chg": "CHG-231", + "files": [ + { + "path": "Docs/Migration/etat/sandbox/SB2/SB2-O1-BUILD.md", + "source": "current" + }, + { + "path": "Docs/Migration/21_Sandbox_Addon.md", + "source": "snap:SB4" + }, + { + "path": "Docs/Migration/etat/sandbox/S3/S3-INT.md", + "source": "snap:SB4" + }, + { + "path": "Docs/Migration/Journal_Modifications.md", + "source": "snap:SB4" + } + ], + "notes": "" + }, + { + "id": "C22", + "phase": "SB4", + "message": "SB4 : ouverture par declencheur non memorisee, validation finale, evaluation GO, doc 23 section 7 (pin 16905c6)", + "chg": "CHG-232", + "files": [ + { + "path": "Docs/Migration/etat/sandbox/SB4/SB4-BUILD.md", + "source": "current" + }, + { + "path": "Docs/Migration/etat/sandbox/SB4/SB4-EVAL.md", + "source": "current" + }, + { + "path": "Docs/Migration/etat/sandbox/SB4/SB4-VAL.md", + "source": "current" + }, + { + "path": "Docs/Migration/23_Cycle_De_Vie_Mod.md", + "source": "current" + }, + { + "path": "Docs/Migration/21_Sandbox_Addon.md", + "source": "current" + }, + { + "path": "Docs/Migration/etat/sandbox/S3/S3-INT.md", + "source": "current" + }, + { + "path": "Docs/Migration/Journal_Modifications.md", + "source": "current" + } + ], + "notes": "" + }, + { + "id": "C23", + "phase": "CP", + "message": "CP : carte et plan des commits par phase", + "chg": "hors CHG", + "files": [ + { + "path": "Docs/Migration/etat/COMMIT-CART.md", + "source": "current" + }, + { + "path": "Docs/Migration/etat/commit_plan/COMMIT-PLAN.json", + "source": "current" + }, + { + "path": "Docs/Migration/etat/commit_plan/COMMIT-PLAN.md", + "source": "current" + }, + { + "path": "Docs/Migration/etat/commit_plan/gitignore.final", + "source": "current" + } + ], + "notes": "Dernier commit." + } +] \ No newline at end of file diff --git a/Docs/Migration/etat/commit_plan/COMMIT-PLAN.md b/Docs/Migration/etat/commit_plan/COMMIT-PLAN.md new file mode 100644 index 0000000..50b4dcb --- /dev/null +++ b/Docs/Migration/etat/commit_plan/COMMIT-PLAN.md @@ -0,0 +1,69 @@ +# Plan d'exécution des commits par phase (COMMIT-PLAN) + +**Fiche CP-T1b — Modèle prévu sonnet | utilisé sonnet** + +Date : 2026-10-07. Lecture seule sur le dépôt `D:\Game\LifePlay-master 5.5` (branche `main`, HEAD `fba19bc`) : aucune commande git d'écriture ; seuls `COMMIT-PLAN.json`, `COMMIT-PLAN.md` et `gitignore.final` ont été écrits. Entrée : `Docs/Migration/etat/COMMIT-CART.md`. Instantanés : `D:\Game\LifePlay_Backup_5.5\\`. + +Le plan exécutable est `COMMIT-PLAN.json` (même dossier). Sources : `current` = copie du dépôt, `snap:` = `D:\Game\LifePlay_Backup_5.5\\`, `content:commit_plan/gitignore.final` = contenu final de `.gitignore` (le vrai `.gitignore` n'est pas modifié par ce plan). + +## 1. Tableau des commits (ordre d'exécution) + +| Id | Phase | CHG | Fichiers | Message | +|---|---|---|---:|---| +| C0 | HYG | hors CHG | 1 (+163 suppressions déjà indexées, `keep_staged`) | Hygiène du dépôt : journaux de lots et texture isolée hors suivi, règles .gitignore pour les assets d'animation lourds | +| C1 | Dbg | 114, 117, 118 | 20 | Dbg : outillage de debug (BuildDebug, LPDebugSubsystem, lanceurs, événements LoadTxt / LPDataCache), documents 18 et 19 | +| C2 | G6a | 115 | 3 | G6a : FindCenterOfPolygon rebranché dans GI, commandlet LPFixFindCenter | +| C3 | G6b | 116 | 3 | G6b : PreloadCityPackages au démarrage (LPDataCompat, LPModInfoSubsystem ; rattrape FindCenterOfPolygon et le renommage ModInfoCheckInterval) | +| C4 | PawnGlobal | 144 | 3 | PawnGlobal : Room::addObject bloque le canal Pawn, commandlet LPFixPawnResponse | +| C5 | PawnDyn | 145 | 1 | PawnDyn : Room::addObject passe les objets de Room en WorldDynamic, murs Wall1 à Wall4 | +| C6 | Proximité | 157, 166, 167 | 4 | Proximité : LPDirectControlSubsystem (marche ZQSD/WASD, touche E), DefaultInput, index furniture.lpnear | +| C7 | Clavier | 156, 164, 165 | 2 | Clavier : LPKeyboardSubsystem (bouton et panneau Clavier, touches dans Saved/Config/Windows/LPKeyboard.ini) | +| C8 | Réglages | 158..163 | 4 | Réglages : LPSettingsSubsystem (onglets, bouton titre) et LPColorGradeSubsystem (réglages vidéo couleur) | +| C9 | Sandbox/AnimToGenesis | 168..186 | 4 | Sandbox / AnimToGenesis : LPDirectControlSubsystem (mannequin Quaternius, copie vers Genesis), ImportQuaternius, DiagnosePose | +| C10 | AP1 | 205 | 2 | AP1 (reste) : profils de squelettes ue4_mannequin et genesis8 | +| C11 | AP4 | 208 | 1 | AP4 (reste) : RapportControles.py | +| C12 | AP5 | 209 | 10 | AP5 (restes) : animate() / LPModDailies, commandlet LPPatchDailies, Person, DeliverAnims, mod lpr_anim_quaternius | +| C13 | AP6 | 210, 211 | 47 | AP6 (restes) : catalogue des animations (Catalogue.py, pack.json, catalogue.html/json) et planches animées du mod Quaternius | +| C14 | AP7 | 221..224 | 84 | AP7 : pilote AnimPipeline, méthodes ue4/ue5/genesis_direct, identification du squelette, mod lpr_anim_freeanims, cuisson DLC (ProjectVersion 2026.10.1.6) | +| C15 | DOC-MOD | 225 | 3 | DOC-MOD : document 23 (cycle de vie d'un mod), ligne d'index README | +| C16 | DOC-MOD-2 | 226 | 2 | DOC-MOD-2 : cycle de vie d'un mod, § 2.4, 3.1 à 3.4, 5, 6 | +| C17 | DOC-MOD-3 | 227 | 2 | DOC-MOD-3 : cycle de vie d'un mod, § 2.6 et 7 schémas Mermaid | +| C18 | SB0 | 228 | 4 | SB0 : conception du sandbox addon (validation SB0, pin 3b21fd1) | +| C19 | SB1 | 229 | 7 | SB1 : registre des mods du sandbox (spécification, implémentation, build, validation ; pin 82dae58) | +| C20 | SB2 | 230 | 8 | SB2 : scène du sandbox (cartographie, implémentation, référence, validation ; pin fece7e9) | +| C21 | SB2-O1 | 231 | 4 | SB2-O1 : ShowRoom, correctif d'affichage de la chambre (pin 3d85852) | +| C22 | SB4 | 232 | 7 | SB4 : registre des mods dans LPPairSandbox (build, évaluation, validation ; pin 16905c6), cycle de vie § 7 | +| C23 | CP | hors CHG | 4 | CP : carte et plan des commits par phase | + +Total : 24 commits. Entrées de fichier : 230 (156 chemins distincts, dont 1 `.gitignore` en `content:`). + +C0 : `.gitignore` source `content:commit_plan/gitignore.final` (état courant + 9 lignes : `/Content/FreeAnimationsPack/`, `/Content/Quaternius/`, `/Content/Retarget_ue5/`, `/Content/AnimPacks/`, `/Content/__ExternalActors__/`, `/Content/__ExternalObjects__/`, `__pycache__/` et 2 commentaires). Les 163 suppressions (162 `Docs/Migration/etat/**/*.txt`, `Content/Characters/Textures/NormalMap.uasset`) restent dans l'index, à ne pas réindexer. + +## 2. Résultats des vérifications + +Méthode : `git status --short --untracked-files=all` (837 lignes : 163 suppressions indexées + 674 autres) ; `git check-ignore` exécuté dans un dépôt temporaire (`scratchpad\ignrepo`) contenant `gitignore.final` comme `.gitignore`, sans toucher au vrai. + +- **(a) Dernière occurrence = état courant : OK**, 0 écart (156 chemins ; `.gitignore` finit en `content:`). Le dernier état de chaque fichier multi-phases (Journal, 21, S3-INT, 23, DeliverAnims.*, Catalogue.py, pack.json, RapportControles.py, planches/catalogue quaternius, Room.uasset, LPDirectControl*, README) est bien `current`. +- **(b) Existence : OK**, tous les `snap:` existent (`Test-Path`), toutes les sources `current` et `content:` existent. +- **(c) Doublons dans un même commit : OK**, aucun. +- **(d) Chemins exclus ou ignorés par `gitignore.final` : OK**, aucun chemin du plan n'est exclu (point 3) ni ignoré. Les planches `.jpg` (52 fichiers, 5,78 Mo) ne sont pas ignorées (seul `*.png` l'est) ; `Docs/Migration/etat/*.md` et `commit_plan/*` non plus. +- **(e) Couverture du `git status` : OK, restes = 0.** Répartition : 163 suppressions indexées (C0), 156 dans le plan, 11 exclus, 507 ignorés par `gitignore.final`. +- **Dossiers visés par `git check-ignore -v` (gitignore.final)** : `Content/FreeAnimationsPack/` (l. 59), `Content/Quaternius/` (60), `Content/Retarget_ue5/` (61), `Content/AnimPacks/` (62), `Content/__ExternalActors__/` (64), `Content/__ExternalObjects__/` (65), `Tools/__pycache__/` (`__pycache__/`, 66), `Content/Characters/` (56), `Docs/Migration/etat/**/*.txt` (53) : tous ignorés. Les 507 fichiers `Content/...` non suivis du `git status` sont tous couverts. +- Vérifié en plus : les 3 fichiers de `ModSources/lpr_anim_quaternius` (uplugin, CREDITS, lpmod) sont identiques entre instantané AP7 et état courant (donc source `current` en C12 sans perte). Le seul état intermédiaire retiré par déduplication : `Tools/anim/DeliverAnims.py` en C13 (identique à celui de C12). Les planches `.jpg` et `catalogue.*` quaternius diffèrent entre fin AP6 (`snap:AP7`) et courant, donc présents en C13 (snap) et C14 (current). + +## 3. Notes + +- **Fichier partagé entre phases sans instantané intermédiaire : en entier dans la dernière phase qui l'a modifié.** + - `Source/LifePlay/LPDataCompat.h/.cpp` (G6a + G6b) : en entier en C3 (G6b). C2 (G6a) isolé : `LPFixFindCenterCommandlet` dépend de `LPDataCompat`, il peut ne pas compiler seul. + - `Source/LifePlay/LPModInfoSubsystem.cpp` (Dbg + G6b) : en entier en C3 (G6b) ; le commit Dbg n'a pas le renommage `ModInfoCheckInterval`. + - `Docs/Migration/08_Guide_Developpeur.md` : en entier en C1 (Dbg) ; il contient aussi le paragraphe IoStore « depuis le lot O2 » (décision 4). + - `README.md` : C1 = instantané `DOC-MOD` (lignes 18 et 19) ; C15 = état courant (ligne 23 ajoutée). + - `LPDirectControlSubsystem.h/.cpp` : C6 = `snap:AnimToGenesis` ; C9 = courant. `Room.uasset` : C4 = `snap:PawnDyn` ; C5 = courant. + - `Journal_Modifications.md`, `21_Sandbox_Addon.md`, `S3-INT.md`, `23_Cycle_De_Vie_Mod.md` : chaîne d'instantanés de l'AP7 au SB4, dernier état = courant en C22. `S3-INT.md` en C18 (SB0) est déduit de l'instantané SB1 (fiable mais déductif). AP7 ne modifie pas `S3-INT.md`. + - `DeliverAnims.ps1/.py` : C12 = `snap:AP6` ; C13 = `snap:AP7` (`.ps1`) ; C14 = courant. `Catalogue.py`, `AnimSources/quaternius/pack.json` : C13 = `snap:AP7` ; C14 = courant. `RapportControles.py` : C11 = `snap:AP7` ; C14 = courant. +- **Phases sans commit** (aucun fichier restant) : AP2, AP3, PairCap, PairCap2, PairCol, ShowCouple, PoseMeasure, S0 à S8 (CHG-119..155, 187..220 hors AP1/AP4/AP5/AP6), H3, UI, O et lots antérieurs : tout est déjà dans HEAD ou hors suivi. Les fichiers mod-AP des phases AP2/AP3 (`LPAnimEval/Twist`) sont tous dans AP7. `LifePlay.uproject` est dans C14 (AP7) selon la décision 4. +- **Attributions probables** (cart) : `LPAnimEval/Twist .h`, `LPAnimMethodSelect.h` (AP7) ; `RapportControles.py` (AP4) ; `ImportQuaternius.py`, `DiagnosePose.py` (Sandbox/AnimToGenesis). +- **Exclus de tous les commits, fichiers conservés sur disque** (11 chemins) : `Docs/Migration/24_Plan_Decouplage_Sandbox.md`, `Docs/Migration/etat/sandbox/DC0/DC0-CART.md` et `DC0-SPEC.md` (session DC0), `Tools/anim/21_Sandbox_Addon.md`, `Tools/anim/Journal_Modifications.md`, `LPSandboxMeasure.cpp`, `LPSandboxMeasureTour.cpp`, `Tools/__pycache__/RetargetQuaternius.cpython-314.pyc` (ignoré), et **`.cursor/`** (3 fichiers : `plans/controles_et_interaction_bd9e495b.plan.md`, `skills/lifeplay-debug-build/SKILL.md` et `reference.md`) : outil d'éditeur, comme `.claude/`, **à signaler à l'utilisateur et non commité** (la carte CP-T1 les rattachait à Dbg et Proximité). +- **Dernier commit C23 (CP)** : `COMMIT-CART.md`, `commit_plan/COMMIT-PLAN.json`, `COMMIT-PLAN.md`, `gitignore.final`. Si ces fichiers sont modifiés après la vérification, relancer le contrôle (e). +- **Cohérence de compilation non vérifiée** (aucune compilation). Les commits intermédiaires Dbg et G6a peuvent ne pas être « construisibles » seuls (voir ci-dessus) ; l'état final (C23) est identique à l'état courant. +- Après C23, `git status --short` ne doit montrer que : les 11 exclus ci-dessus et les 507 fichiers Content ignorés n'apparaissent pas (ignorés) ; seuls restent visibles les exclus non ignorés (`.cursor/`, DC0, `Tools/anim/*`, `LPSandboxMeasure*.cpp`). diff --git a/Docs/Migration/etat/commit_plan/gitignore.final b/Docs/Migration/etat/commit_plan/gitignore.final new file mode 100644 index 0000000..5a2be51 --- /dev/null +++ b/Docs/Migration/etat/commit_plan/gitignore.final @@ -0,0 +1,66 @@ +Binaries +DerivedDataCache +Intermediate +Saved +/Debug/ + +.vscode +.vs +*.VC.db +*.opensdf +*.opendb +*.sdf +*.suo +*.xcodeproj +*.xcworkspace + +Content/Heavy/* +Content/Saves/* +Plugins/StreetMap/Binaries/* +Plugins/StreetMap/Intermediate/* +Plugins/ModdingExtra/Binaries/* +Plugins/ModdingExtra/Intermediate/* +*.png +*.7z +*.mp4 + +# Journaux de portage deposes a la racine +/output.txt + +# Contient le jeton d'authentification local du serveur MCP Unreal +/.mcp.json + +# Migration 5.5 (CHG-001) : fichiers generes par le moteur +Build/*/FileOpenOrder/ +Content/Collections/ +Content/Developers/ +.claude/settings.local.json + +# Publication (2026-09-30) : outil d'automatisation IA de l'environnement de developpement, hors jeu. +# Source : https://github.com/ChiR24/Unreal_mcp (MIT). Le .uproject le reference : sans lui, l'editeur propose de le desactiver. +Plugins/McpAutomationBridge/ + +# H3 (mods, 2026-10-03) : version de reference des publications (cuisson -createreleaseversion, 1,3 Go, livree avec +# l'archive des sources), plugins installes temporairement pour la cuisson DLC, produits de cuisson et assets binaires +# des mods (comme Content/Heavy : livres par l'archive des sources). +/Releases/ +/Mods/ +/ModSources/*/Saved/ +/ModSources/*/Intermediate/ +/ModSources/*/Content/ + +# Journaux et dumps de debug des lots (restent en local ; .md et .csv restent suivis) +/Docs/Migration/etat/**/*.txt + +# Texture isolee (aucune reference dans Content, Plugins, Source ni Config) +/Content/Characters/ + +# Assets d'animation lourds (sources et sorties de la chaine AP ; restent en local) +/Content/FreeAnimationsPack/ +/Content/Quaternius/ +/Content/Retarget_ue5/ +/Content/AnimPacks/ +# Acteurs orphelins (ThirdPerson / VehicleTemplate absents) +/Content/__ExternalActors__/ +/Content/__ExternalObjects__/ +__pycache__/