LifePlay-Revival/Docs/Migration/etat/ST/STF/STF-T3-IMPL.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

7.6 KiB

Fiche STF-T3 — Niveau N2 — Modèle prévu orchestrateur STF (Opus 5.5) | utilisé claude-opus-5-5 — Agent orchestrateur — Skills lp-mcp, lp-lot, sk-change-safety, sk-protocol

STF-T3 : MainMenu, 12 SpinBox protégées par MCP (2026-10-10)

Copie D:\Game\LifePlay-master 5.8 (branche ue5.8, HEAD b63196a = tag STF-avant, ticket STF-R1). BUILD-GO STF-T3 de « Big Boss » (après STE-D). Accord utilisateur : « STF approuvé » (2026-10-10). Instantané : D:\Game\LifePlay_Backup_5.5\STF\manifest.csv (11:04). Éditeur 5.8 sans rendu, journal Saved\Logs\portage\STF-T3_Editor_20261010-111552.log. Outils Epic (UMGToolSet, BlueprintTools, ObjectTools, AssetTools, appelés via ProgrammaticToolset) ; contrôle hyper_diagnose.

Fichier Avant Après
Content/UI/MainMenu.uasset 59d1ee7190afb88bf51b90eda26fcc32 (2 171 521 o) 39135bcd5a13167a507e6b5059efbeb0 (2 245 641 o)
Content/BPs/GI.uasset d93785fca90e3342575fc0b601cc2e93 d93785fca90e3342575fc0b601cc2e93 (inchangé)

git status -- Content Config Source après : M Content/UI/MainMenu.uasset seul.

1. Méthode (A, STF-T1 § 5) et un écart assumé à la SPEC

Par couple : lecture des 34 propriétés du widget et des 4 de son slot → suppression de l'événement OnValueChanged (et de ComponentBoundEvent_15 pour MarkerSize) → RemoveWidget → AddWidget (SpinBox, même parent, indice 1) → set_properties (mêmes valeurs, sauf Value = défaut GI) et slot → ToggleWidgetAsVariable → BindToEventProperty OnValueCommitted → événement placé à la position de l'ancien → branchements → relecture des propriétés (0 écart) et des liens → compile_blueprint (avertissements = erreurs). Écart à SPEC § 1.2 (A) : la chaîne IsValid → Set existante de chaque couple est gardée et rebranchée sur le nouvel événement (exécution → entrée de la macro IsValid, InValue → valeur du Set) au lieu d'être recréée. Même graphe d'exécution que la SPEC (c'est le geste de la méthode B appliqué aux nœuds), moins de nœuds créés ; nœuds GI partagés intacts.

2. Résultat par couple (établi, get_node_infos après branchement)

# Ancien → neuf Événement neuf Chaîne Value / Min / Max
1 ChildGrowthMult → SpinBoxChildGrowth ComponentBoundEvent_32 → MacroInstance_2 → VariableSet_1 1 / 0.01 / 10000
2 ShadeDepth → SpinBoxShadeDepth _33 → MacroInstance_40 → VariableSet_106 → Cast MID → SetScalarParameterValue (inchangé) 0.5 / 0 / 1
3 SpinBoxBGA → SpinBoxVolBGA _34 → MacroInstance_10 → VariableSet_16 0.5 / 0 / 5
4 SpinBoxMarkerSize → SpinBoxMapMarkerSize _35 → MacroInstance_5 → VariableSet_6 → CallFunction_44 RetriggerableDelay 2 s → CallFunction_31 SpawnMapMarkers(false) (ancien _15 supprimé) 28 / 1 / 100
5 SpinBoxMoan → SpinBoxVolMoan _36 → MacroInstance_8 → VariableSet_19 1 / 0 / 5
6 SpinBoxPhysicsMult → SpinBoxPhysics _37 → MacroInstance_7 → VariableSet_11 1 / 0 / 100
7 SpinBoxSceneFrequency → SpinBoxSceneFreq _39 → MacroInstance_42 → VariableSet_116 10 / 0.2 / 100
8 SpinBoxSexDescription → SpinBoxSexLineDuration _40 → MacroInstance_90 → VariableSet_48 15 / 1 / 100
9 SpinBoxSex → SpinBoxVolSex _43 → MacroInstance_12 → VariableSet_18 1 / 0 / 5
10 SpinBoxSquirtMult → SpinBoxSquirt _46 → IfThenElse_9 (Branche) ← CallFunction_78 IsValid(VariableGet_40) → VariableSet_25 2 / 0 / 100
11 SpinBoxUI → SpinBoxVolUI _44 → MacroInstance_11 → VariableSet_17 1 / 0 / 5
12 SpinBoxPregnancyTerm → SpinBoxPregnancyMult _45 → MacroInstance_57 → VariableSet_70 1 / 0.01 / 3
  • Propriétés : recopie des 34 propriétés du widget (style, police Roboto Bold 20, couleur, Delta, chiffres, bornes, bOverride_*, visibilité…) et du slot (Automatic, marge 0, Fill / Fill), relues après écriture : 0 écart sur les 12 (seule Value change, au défaut GI) ; propriétés identiques à SpinBoxSexDuration (STC) hors valeur et bornes.
  • SquirtMult : garde ajoutée sur le modèle STC (IsValid fonction + Branche), car le type Utilities|IsValid (macro) est ambigu dans find_node_types (2 entrées). GI vide impossible après Construct : garde d'uniformité (règle 4 lp-mcp, à écrire au CHG).
  • Numéros d'événements 38 et 41 : déjà pris (délégués OnClicked de boutons, avant et après STF ; correction après STF-VAL statique) ; 42 libéré (ancien PregnancyTerm).

3. Construct (établi, parcours de la chaîne)

Event_1 → Cast To GI → Set GI → CallFunction_72 (slider caméra) → _74 (texte caméra) → _73 (SexDuration) → _79 ChildGrowth → _80 ShadeDepth → _81 VolBGA → _83 MapMarkerSize → _84 VolMoan → _85 Physics → _87 SceneFreq → _88 SexLineDuration → _89 VolSex → _90 Squirt → _91 VolUI → _92 PregnancyMult → _1278 UpdateDonors (inchangé ensuite). Chaque SetValue (SpinBox, broche NewValue) : self ← Get<widget neuf>, NewValue ← GI.<variable> (cible VariableGet_50, le GI déjà utilisé par STC). Incident : un premier essai s'est arrêté sur Classe|GI|ObtenirVol_BGA inexistant (le type s'écrit ObtenirVolBGA) ; 7 nœuds déjà créés, sans aucun lien, ont été réutilisés au second essai (vérifié : 0 lien avant branchement) ; le lien _73 → _1278 n'a été coupé qu'après validation des 36 nœuds.

4. Contrôles de l'asset (SPEC § 3)

Contrôle Résultat
compile_blueprint (warnings_as_errors) après chaque couple et après Construct sans erreur
hyper_diagnose (loaded_blueprint_health) MainMenu up_to_date ; seul signalement : paquet modifié (avant save_assets)
Journal éditeur aucun avertissement MainMenu ; 1 LogScript: Warning = l'essai ObtenirVol_BGA ; avertissements MCP connus (LogJson schéma, WriteBytes, multicast)
Événements liés (tous) 14 OnValueCommitted (SpinBox_0, SexDuration STC, 12 neufs) + 1 OnValueChanged (SliderCameraSpeed) ; aucun OnValueChanged de SpinBox
Anciens widgets 0 dans l'arbre ; 0 nœud à leur nom
Relecture binaire après sauvegarde 11 anciens noms : 0 occurrence (ShadeDepth : 2 = variable GI et paramètre matériau) ; 12 neufs : 5 chacun = profil des widgets sans liaison de STC (SpinBoxSexDuration, SliderCameraSpeed : 5) ; SpinBox_0 : 6 (inchangé) → 0 liaison vers GI sur les 12 (estimé : décompte de chaînes, cohérent avec STF-T1 § 4)
save_assets ["/Game/UI/MainMenu"] true
CompileAllBlueprints éditeur fermé reporté en STF-T4 (VAL V1, commandlet)

5. Suite

  • STF-T4 (lp-validator) : V1 CompileAllBlueprints (418 / 418, 0 / 0), V2-V3 relecture, V4-V7 PIE avec l'utilisateur, V8 MD5 des .sav contre l'instantané.
  • CHG : réservation à faire dans etat\REPO\NUMEROS.md (une entrée par SpinBox + Construct, ou une entrée de lot si le gardien les regroupe) ; à y écrire : écart § 1, garde SquirtMult, Value de conception ramenées aux défauts GI, ShadeDepth appliqué en fin de geste (plus d'aperçu pendant le glisser), valeur GI hors bornes affichée bornée sans être réécrite (SPEC § 6).
  • Commit : ticket STF-R2 (MainMenu, journal, traces STF-R1), après VAL et preuve en jeu.

Fichiers écrits : Content/UI/MainMenu.uasset ; ce livrable. Éditeur fermé (UeState.ps1 : 0 processus).