LifePlay-Revival/Docs/Migration/etat/REL/KEY2/KEY2-VAL-04.md
edujiro5972 56dfcfc3d2 LifePlay UE 5.8 : état de développement au 2026-10-20
Tickets : PUB-20261020-T1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 17:35:10 +02:00

106 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Fiche KEY2-VAL-04 — Niveau N1 — Modèle prévu sonnet | utilisé Sonnet 5.5 — Agent lp-validator — Skills sk-protocol, sk-recount, debug-verification, lp-validate
# KEY2-VAL-04 : VAL statique du regroupement du menu Clavier (KEY2-IMPL-02) (2026-10-20)
Verdict : **PASS-STATIC** (3 réserves, aucune bloquante). Rien n'a été modifié hors ce livrable, sauf un effet de bord de `Build.ps1 -FromLog` signalé en réserve R1.
## 1. Fiches amont relues
- `KEY2-SPEC-02.md` (§ 0 décisions, § 2 tableau des 9 sections, § 3 option A, § 4 changements prévus) ;
- `KEY2-TACHES.md` l. 19 (KEY2-IMPL-02) et l. 20 (KEY2-BUILD-03) : il n'existe pas de fiche `KEY2-IMPL-02.md` séparée, la fiche IMPL est la ligne de TACHES (écart de gabarit : pas de section « Points à confirmer » IMPL à reprendre ; voir § 2) ;
- `KEY2-BUILD-03.md` (builds, unités, MD5) ;
- journaux `Saved\Logs\portage\KEY2_Build_20261020-162228.log` et `-162323.log`.
## 2. Points à confirmer des IMPL amont
sans objet : KEY2-IMPL-02 n'a pas de livrable propre avec rubrique 5 (vérifié : `Glob` du dossier KEY2, aucun `KEY2-IMPL-02.md`; seule la ligne TACHES l. 19). Les attentes de la SPEC-02 § 0 et § 4 sont contrôlées au § 3.
## 3. Critères rejoués
| # | Critère | Commande / lecture | Résultat | Verdict |
|---|---|---|---|---|
| 1a | MD5 de `LPKeyboardSubsystem.cpp` = 0eb6a592 | `FileCheck.ps1 -Path @('…\Source\LifePlay\LPKeyboardSubsystem.cpp')` | `CRLF 1491 0 0 - 0EB6A5929F857CB68920AE989E11E14E`, alertes=0 | PASS |
| 1b | Instantané KEY2-IMPL3 = 9d450aaf, CRLF | `FileCheck.ps1` sur `D:\Game\LifePlay_Backup_5.5\KEY2-IMPL3\Source\LifePlay\LPKeyboardSubsystem.cpp` | `CRLF 1490 0 0 - 9D450AAF8E1E0FB64519AA70D41D9500` | PASS |
| 1c | Fins de ligne : CRLF pur (LF seul = 0, CR seul = 0) | idem (colonnes LF, CR) | 1491 CRLF, 0, 0 ; 1490 → 1491 = +1 ligne, cohérent avec +63 / −62 | PASS |
| 2 | Seul l'affichage change | `git diff -U2 -- Source/LifePlay/LPKeyboardSubsystem.cpp` lu en entier ; `git diff --stat` : `63 insertions(+), 62 deletions(-)` (recompte = TACHES et SPEC § 0) | voir détail ci-dessous | PASS |
| 2b | `DefaultInput.ini` non modifié | `git diff --stat -- Config` (sortie vide) ; `git status --short -- Source Config Content Plugins` : aucun fichier Config | aucune modification | PASS |
| 3 | `GroupFor` : 9 sections dans l'ordre, Other par défaut | lecture `LPKeyboardSubsystem.cpp:207-252` et `DefaultInput.ini:95-162` (Grep des noms) | voir § 3.1 | PASS |
| 4 | Flèches : 2 lignes, même liaison | lecture `:491-506`, `:578-615` | voir § 3.2 | PASS-STATIC |
| 5 | Libellés : pas de texte adulte nouveau, pas de faute | diff lu | voir § 3.3 | PASS |
| 6 | Builds | `Build.ps1 -FromLog` ×2 et Grep des journaux | voir § 3.4 | PASS |
| 7 | PubCheck | `pwsh -NoProfile -File Tools/PubCheck.ps1 -Fichiers Source/LifePlay/LPKeyboardSubsystem.cpp -Depot "D:/Game/LifePlay-master 5.8"` ; idem sur `KEY2-BUILD-03.md` | `PubCheck : 0 constat(s)`, code 0 (×2) | PASS |
### Détail critère 2 (diff)
Lignes modifiées, toutes dans l'espace de noms anonyme (affichage) :
- constantes `KbSceneOrder` / `KbCharactersSub` (l. 47-49) remplacées par `KbMapOrder = 3` / `KbCoupleOrder = 4` ;
- `FBindRow` : ajout du champ `Section` (l. 106) ;
- `ActionLabel` : libellé d'ActionPanel (l. 148) ; `AxisLabel` : CameraHeight (l. 191) ;
- `FBindGroup` sans `Sub` / `SubTitle` ; `GroupFor` réécrit ; nouvelle fonction `KbArrowLabel` (l. 255-264) ;
- `Rebuild` : tri et dessin par `Section` (l. 491-537).
Non touchés (vérifié par le diff, aucune ligne hors ces blocs) : les noms internes (`KbMoveForward`, `KbActionPanel`, `KbCameraHeight`, `KbCoupleMoveY`, les chaînes `TEXT("…")` des tests de nom), `KeyboardIniPath`, les appels `File.GetArray/AddToSection` (l. 1289-1461 hors diff), `KbVersion = 2`, la migration. Les appels `BeginWait` / `RemoveBinding` utilisent les mêmes champs qu'avant (`Name, bAxis, Scale, Key, modificateurs`, l. 557, 592, 608).
Aucune lecture ni écriture nouvelle de `LPKeyboard.ini` ni de `DefaultInput.ini` n'apparaît dans le diff.
### 3.1 GroupFor (l. 207-252), comparé à SPEC-02 § 2
| Ordre | Section | Code | SPEC | |
|---|---|---|---|---|
| 1 | Movement | MoveForward, MoveRight | idem | conforme |
| 2 | Camera | SwitchCamera, RotateCamera, ScrollDownUp, CameraHeight | idem | conforme |
| 3 | Map & World | NextBuilding, PreviousBuilding (+ copie de LeftRight, DownUp ajoutée par Rebuild) | idem | conforme |
| 4 | Couple (scene) | CoupleMoveY, LeftRight, DownUp, ManualAnimating, PenisRotation (axe de rotation) ; « Move couple with » en tête (l. 534-536) | idem | conforme |
| 5 | Actions & Interaction | Interact, ActionPanel, SwapRoles, Recommended | idem | conforme |
| 6 | Menus | Journal, Inventory, MainMenu, CharacterMenu, ModuleMenu, CityMenu, StatMenu, ContactsMenu, SearchBarToggle (Pause sorti) | idem | conforme |
| 7 | Time | Pause, SpeedUp, SpeedDown | idem | conforme |
| 8 | Favorites | préfixe `Favorite` | idem | conforme |
| 9 | System | QuickSave, Quickload, TestScenes | idem | conforme |
| 10 | Other | défaut `{10, "Other"}` (l. 251) | « Other par défaut » | conforme |
Recompte des noms de `DefaultInput.ini:95-162` (Grep) : ActionMappings Pause, SearchBarToggle, CharacterMenu, ModuleMenu, Inventory, CityMenu, MainMenu, StatMenu, ContactsMenu, RotateCamera, ManualAnimating, SpeedUp, SpeedDown, SwapRoles, SwitchCamera, NextBuilding, PreviousBuilding, TestScenes, Recommended, Journal, Interact, ActionPanel, QuickSave, Quickload, Favorite0-9 ; AxisMappings LeftRight, DownUp, ScrollDownUp, MoveForward, MoveRight, PenisRotation, CameraHeight, CoupleMoveY ; ActionX/ActionY et CursorX/CursorY. Chacun est classé par `GroupFor`. **Aucune action ni aucun axe ne tombe dans Other.** ActionX/ActionY/CursorX/CursorY ne sont pas affichés (écartés avant `GroupFor` par `IsRemappable`, `:117-120`, inchangé : l'établissement repose sur la lecture du code, `ActionX/Y` étant supposées sur des touches de souris, non relu dans le .ini ; sans effet sur le verdict, ces lignes n'étaient pas affichées à l'instantané non plus).
Ordre d'affichage : le tri est par `Section` (1 à 10), puis libellé, puis nom de touche (l. 507-518) ; l'ordre 1 à 9 est donc celui de la SPEC.
### 3.2 Flèches (option A)
- Rebuild marque chaque ligne par `GroupFor(Row.Name).Order` (LeftRight / DownUp → 4, Couple) puis, pour tout axe `LeftRight` / `DownUp`, copie la ligne (`FBindRow MapRow = Row`, l. 500) avec `Section = KbMapOrder` et le libellé « Map … » ; la ligne d'origine reçoit « Couple … » (`KbArrowLabel`, l. 255-264). Résultat attendu : « Couple Forward / Back / Right / Left » en section 4, « Map Forward / Back / Right / Left » en section 3 (SPEC § 2, lignes 3 et 4).
- Les deux lignes ont la même `Name`, `bAxis`, `Scale`, `Key` et modificateurs (copie de la structure) ; Change (`BeginWait`, l. 592) et Remove (`RemoveBinding`, l. 608) n'utilisent que ces champs et jamais `Section` (Grep : `Section` n'est lu qu'aux l. 496-534). Il n'existe qu'un seul mapping `+AxisMappings` sous-jacent par touche : un changement dans l'une vaut donc pour l'autre, et `RefreshMenu` redessine depuis les réglages.
- Établi par lecture. Non exécuté : le comportement à l'écran (deux lignes, Change qui vaut pour les deux) n'est pas rejoué ici.
- Titre de la section 3 pour les lignes de flèches : `Row.Section == KbMapOrder ? FBindGroup{KbMapOrder, "Map & World"}` (l. 528) ; la section 3 sans bâtiment ni flèche ne serait pas dessinée (comme avant).
### 3.3 Libellés (diff)
Nouveaux textes : titres de section « Camera », « Map & World », « Couple (scene) », « Actions & Interaction », « Time », « System » (« Movement », « Menus », « Favorites » inchangés) ; « Map Right / Left / Forward / Back », « Couple Right / Left / Forward / Back » ; « Camera Height Up (scene) » / « Camera Height Down (scene) » ; « Action Panel (also Alt / middle click) ». Aucun texte adulte nouveau (doc 27) ; « Rotation + / − » (axe `PenisRotation`) est inchangé et le nom interne n'apparaît pas à l'écran. Aucune faute relevée en anglais. Les commentaires de code sans accents suivent le style du fichier. Les libellés de l'ancienne forme « (map view / couple) » (l. 169-176) restent dans `AxisLabel` mais ne servent plus : `Row.Label` est écrasé par `KbArrowLabel` pour LeftRight / DownUp (code mort, voir R2).
### 3.4 Builds
`Tools\Build.ps1 -Lot KEY2-VAL -FromLog '<journal>'` (sortie brute, un appel par journal) :
```
journal 162228 : code=-1 duree=0s erreurs=0 avertissements=1 autres=20 unites=2
chaine : Using Visual Studio 14.50.35739 toolchain (C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.50.35717) …
journal 162323 : code=-1 duree=0s erreurs=0 avertissements=1 autres=0 unites=2
chaine : Using Visual Studio 14.50.35739 toolchain (…MSVC\14.50.35717) …
```
(`code=-1` : `-FromLog` ne relit pas le code de sortie ; le code vient de `Result:`, ci-dessous. `unites=2` : le résumé compte Compile `LPKeyboardSubsystem.cpp` et `Module.LifePlay.cpp`.)
Lecture directe des journaux (Grep) :
| Journal | Result | Unités | Avertissement | Toolchain |
|---|---|---|---|---|
| 162228 (LifePlayEditor) | `Result: Succeeded` (l. 54) | `[1/5] Compile LPKeyboardSubsystem.cpp` (l. 42), `[2/5] Compile Module.LifePlay.cpp` (l. 43), `Link UnrealEditor-LifePlay.dll` (l. 48) | l. 44 : C4701 `Aim`, `LPCameraModeSubsystem.cpp(2378)` | MSVC 14.50.35717 |
| 162323 (LifePlay Development, NoUba) | `Result: Succeeded` (l. 31) | `[1/4] Compile LPKeyboardSubsystem.cpp [NoUba]` (l. 20), `Module.LifePlay.cpp` (l. 21), `Link LifePlay.exe` (l. 24) | l. 22 : même C4701 | MSVC 14.50.35717 |
Erreurs : 0 (aucun `error C` ni `error LNK` dans les deux journaux). Le seul avertissement est le C4701 connu (`TickCoupleMouse`, hors fichier validé). Les 20 « autres » du journal éditeur sont les lignes UBT HyperAIStudio signalées par KEY2-BUILD-03 ; non relues une à une ici (incertain, sans effet sur le verdict).
## 4. Diff lu en entier
1 fichier suivi du lot : `Source/LifePlay/LPKeyboardSubsystem.cpp`, +63 / −62 (`git diff --stat`), lu en entier (sortie `git diff -U2`), conforme à SPEC § 4 points 1 à 6. Fichiers non annoncés dans `git status --short -- Source Config Content Plugins` : `Source/LifePlay/LPCityWaterSubsystem.h` (M), `Source/LifePlayEditorTools/LPBuildCityWaterCommandlet.cpp` (M), `Source/LifePlay/LPCityWaterMask.h` (??) : lot STM1, hors périmètre KEY2, non lus ; à ne pas inclure dans le ticket KEY2. Remarque : `KEY2-BUILD-03.md` § 3 cite deux fichiers modifiés, or `LPCityWaterSubsystem.h` est apparu depuis (STM1, travail concurrent).
## 5. Verdict
**PASS-STATIC.** Conforme à la SPEC-02 (§ 0 et § 2) par lecture du diff complet, des MD5, des fins de ligne et des deux journaux de build. Non rejoué : le rendu en jeu du menu (9 sections, flèches doublées, Change valable pour les deux lignes), `LPTestStringCompat` (sans lien avec le lot, aucune chaîne de données touchée) et la porte G-U3.
Témoin en jeu : à créer (correctif de comportement visible : ordre des 9 sections, deux lignes de flèches, Change sur une flèche de Map & World change aussi Couple (scene), mention dans Action Panel) ; je demande à l'orchestrateur une ligne COMMUN-<n>.<k>.
Réserves :
- **R1 (effet de bord de ma VAL).** `Build.ps1 -FromLog` a créé, faute de règle pour le lot `KEY2-VAL` dans `Tools\EtatDir.ps1`, deux résumés dans un dossier non prévu : `D:\Game\LifePlay-master 5.8\Docs\Migration\etat\KEY2-VAL\KEY2-VAL_BuildLog_20261020-162643.txt` et `…162644.txt`. Je ne les ai ni déplacés ni supprimés (consigne). À déplacer vers `etat\REL\KEY2\` (ou à supprimer par l'orchestrateur) ; ils ne sont pas dans les fichiers à commiter.
- **R2 (code mort, mineur).** Les branches `LeftRight` / `DownUp` de `AxisLabel` (l. 169-176, « … (map view / couple) ») ne sont plus atteintes : le libellé est écrasé par `KbArrowLabel` (l. 499). Sans effet à l'écran ; à nettoyer éventuellement.
- **R3 (hérité, non modifié).** L'axe `ScrollDownUp` n'a pas de libellé connu : `AxisLabel` rend `ScrollDownUp +` / `ScrollDownUp −` (l. 198), affiché dans Camera. Présent avant le lot ; la SPEC le nomme « zoom » (§ 2) sans demander de libellé.
## 6. Points à confirmer par l'utilisateur
- [ ] Capture du menu Clavier à la prochaine build d'essai : 9 sections dans l'ordre Movement, Camera, Map & World, Couple (scene), Actions & Interaction, Menus, Time, Favorites, System.
- [ ] Changer une flèche (par ex. Map Right) puis constater que « Couple Right » porte la même touche (et inversement).
- [ ] Remove sur une ligne doublée retire la liaison dans les deux sections (voulu, SPEC § 5).
- [ ] Décision de l'orchestrateur sur R1 (dossier `etat\KEY2-VAL\`).
Fichiers écrits : `D:\Game\LifePlay-master 5.8\Docs\Migration\etat\REL\KEY2\KEY2-VAL-04.md` (ce livrable) ; effet de bord : les deux `.txt` de R1.
Fichiers à commiter : A `Docs/Migration/etat/REL/KEY2/KEY2-VAL-04.md`. Aucun git qui écrit.
Tours : 8 / 40