13 KiB
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.mdl. 19 (KEY2-IMPL-02) et l. 20 (KEY2-BUILD-03) : il n'existe pas de ficheKEY2-IMPL-02.mdsé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.loget-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 parKbMapOrder = 3/KbCoupleOrder = 4; FBindRow: ajout du champSection(l. 106) ;ActionLabel: libellé d'ActionPanel (l. 148) ;AxisLabel: CameraHeight (l. 191) ;FBindGroupsansSub/SubTitle;GroupForréécrit ; nouvelle fonctionKbArrowLabel(l. 255-264) ;Rebuild: tri et dessin parSection(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înesTEXT("…")des tests de nom),KeyboardIniPath, les appelsFile.GetArray/AddToSection(l. 1289-1461 hors diff),KbVersion = 2, la migration. Les appelsBeginWait/RemoveBindingutilisent les mêmes champs qu'avant (Name, bAxis, Scale, Key, modificateurs, l. 557, 592, 608). Aucune lecture ni écriture nouvelle deLPKeyboard.inini deDefaultInput.inin'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 axeLeftRight/DownUp, copie la ligne (FBindRow MapRow = Row, l. 500) avecSection = KbMapOrderet 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,Keyet modificateurs (copie de la structure) ; Change (BeginWait, l. 592) et Remove (RemoveBinding, l. 608) n'utilisent que ces champs et jamaisSection(Grep :Sectionn'est lu qu'aux l. 496-534). Il n'existe qu'un seul mapping+AxisMappingssous-jacent par touche : un changement dans l'une vaut donc pour l'autre, etRefreshMenuredessine 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 -FromLoga créé, faute de règle pour le lotKEY2-VALdansTools\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.txtet…162644.txt. Je ne les ai ni déplacés ni supprimés (consigne). À déplacer versetat\REL\KEY2\(ou à supprimer par l'orchestrateur) ; ils ne sont pas dans les fichiers à commiter. - R2 (code mort, mineur). Les branches
LeftRight/DownUpdeAxisLabel(l. 169-176, « … (map view / couple) ») ne sont plus atteintes : le libellé est écrasé parKbArrowLabel(l. 499). Sans effet à l'écran ; à nettoyer éventuellement. - R3 (hérité, non modifié). L'axe
ScrollDownUpn'a pas de libellé connu :AxisLabelrendScrollDownUp +/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