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

13 KiB
Raw Blame History

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-..

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