6.4 KiB
Fiche STF-T5-SPEC — Niveau N2 — Modèle prévu orchestrateur STF (Opus 5.5) | utilisé claude-opus-5-5 — Agent orchestrateur — Skills lp-lot, lp-mcp, sk-change-safety, sk-protocol
STF-T5-SPEC : supprimer les « Accessed None » des deux SpinBox_0 (MainMenu, CharGen) (2026-10-10)
Copie D:\Game\LifePlay-master 5.8 (branche ue5.8). Entrées : décision utilisateur « Un seul lot, confié à STF »
(relayée par Big Boss), STF-T5-CART.md, méthode et VAL de STF (STF-SPEC.md, STF-VAL.md), lp-mcp § 1 règle 4 et § 4.
Deux parties indépendantes, à accepter séparément :
- (a) MainMenu : exécutable dès l'accord ;
- (b) CharGen : bloquée tant que STE-TXT (modification non commitée de
CharGen.uasset, plantage éditeur en J2) n'est pas tranchée et commitée par STE.
0. Cadre
| # | Règle | Source |
|---|---|---|
| C1 | Aucune affectation de GI avancée (OnInitialized, PreConstruct) |
lp-mcp § 4, ERR-057, CHG-294 |
| C2 | Bornes, style, emplacement des widgets inchangés | STF C2 |
| C3 | Effet du réglage inchangé quand le joueur l'utilise (valeur écrite, cible, facteur × 0.5 / × -1) | STF C4 |
| C4 | Gardes IsValid seulement là où « vide » est un état normal, en cascade de branches, chemin « non valide » = chemin que l'exécution suivait déjà |
lp-mcp règle 4, § 4 |
| C5 | Hors périmètre : les 12 SpinBox de STF (commitées), caméra / durée (STC) | — |
1. Partie (a) : MainMenu, SpinBox_0 « Depth of Field Strength »
Méthode A de STF (le retrait d'une liaison de propriété passe par le remplacement du widget).
- Widget : supprimer
SpinBox_0(RemoveWidget), ajouterSpinBoxDOF(SpinBox) dansHorizontalBox_34, indice 1, toutes propriétés et slot recopiés depuis l'ancien (relu : Min 0 / Max 20, glisser 0-20,Delta0, décimales 1 / 6, police Roboto Bold 20),Value0, variable. Supprimer la fonction de liaison devenue orphelineGet_SpinBox_0_Value_0(remove_function_graph). - Écriture : supprimer
ComponentBoundEvent_19; nouvelOnValueCommitted(SpinBoxDOF)→Branche(IsValid(GI))→Branche(IsValidIndex(GI.ChargenCameras, 0))→Branche(IsValid(ChargenCameras[0].CameraComponent))→ chaîne existanteSetFieldsInStruct_0→VariableSet_13(InValue→CommutativeAssociativeBinaryOperator_9.A, facteur 0.5 inchangé). Sorties « faux » : non branchées (rien n'était écrit sans cible ; aujourd'hui l'exécution échouait en Accessed None). - Initialisation : dans
Construct, entreCallFunction_92(dernierSetValuede STF) etUpdateDonors(CallFunction_1278) :Branche(IsValid(GI))→Branche(IsValidIndex(GI.ChargenCameras, 0))→Branche(IsValid(ChargenCameras[0].CameraComponent))→SpinBoxDOF.SetValue(PostProcessSettings.DepthOfFieldFarBlurSize × 2)→UpdateDonors; chaque sortie « faux » rejointUpdateDonors(la suite deConstructreste toujours exécutée). - Contrôles : relecture
get_node_infosà chaque étape ;compile_blueprint(avertissements = erreurs) ;hyper_diagnose;save_assets ["/Game/UI/MainMenu"]seul ;uasset58.py locate:SpinBox_0absent des tableaux de liaisons,SpinBoxDOFau profil « sans liaison » ;uasset58.py events.
Changement de comportement à accepter : aujourd'hui la liaison réaffiche le flou à chaque image ; après (a), le champ
affiche la valeur lue à l'ouverture du menu (Construct) et celle que le joueur valide. Si le flou de la caméra de
création changeait ailleurs pendant que le menu reste ouvert, le champ ne le suivrait qu'à la réouverture (cas non relevé
dans le code lu ; estimé rare).
2. Partie (b) : CharGen, SpinBox_0 « Counteract Vagina Deform » (bloquée)
Pas de liaison de propriété : pas de remplacement de widget. L'effet en direct pendant le glisser est voulu (infobulle),
OnValueChanged est donc gardé.
- Insérer entre
ComponentBoundEvent_85.thenetCallFunction_303(SetMorphTarget) :Branche(IsValid(GI))→Branche(IsValid(GI.CharacterBeingEdited))→CallFunction_303; sorties « faux » non branchées (à la construction rien n'est à déformer :GIvide est l'état normal, règle 4). - Contrôles : idem (a) sur
/Game/UI/CharGen;save_assets ["/Game/UI/CharGen"]seul. - Prérequis : STE-TXT commité (CHG-306), MD5 de
CharGen.uasset= celui de HEAD, accord Big Boss.
3. Ordre, sécurité, traces
- Instantané
Tools/Snapshot.ps1 -Lot STF-T5 -Path Content\UI\MainMenu.uasset(puisContent\UI\CharGen.uassetpour (b)) ; ticketTAGSTF-T5-avantau gardien. - BUILD-DEMANDE à Big Boss par partie ; un PIE de contrôle avec l'utilisateur par partie (ou commun si (b) est débloquée à temps).
- CHG réservé dans
etat/REPO/NUMEROS.md; entrée écrite juste avant le commit (règle Big Boss) ; un commit par partie (STF-R3 pour (a), STF-R4 pour (b)) ou un seul si les deux sont prêtes ensemble.
4. Critères de VAL
| # | Contrôle | Attendu |
|---|---|---|
| W1 | CompileAllBlueprints éditeur fermé |
418 / 418, 0 erreur, 0 avertissement |
| W2 | (a) liaisons (uasset58.py, décodage des tableaux) |
aucune liaison sur SpinBoxDOF ; Get_SpinBox_0_Value_0 absent ; 18 entrées restantes (19 − 1) |
| W3 | (a) PIE : Settings ouvert à l'écran titre puis en jeu | champ = ChargenCameras[0]…DepthOfFieldFarBlurSize × 2 (relevé MCP) ; 0 « Accessed None » MainMenu_C au journal |
| W4 | (a) PIE : valeur tapée + Entrée, glisser | DepthOfFieldFarBlurSize = valeur × 0.5 ; 0 → flou désactivé (infobulle) ; menu rouvert : champ = valeur |
| W5 | (b) PIE : création de personnage, glisser « Counteract Vagina Deform » | morph appliqué pendant le glisser (comme avant) ; 0 « property GI in CharGen_C » au journal |
| W6 | Fichiers | GI inchangé ; .sav à MD5 de l'instantané sauf sauvegarde volontaire |
| J | Preuve en jeu (archive Development) | journal : Get_SpinBox_0_Value_0 = 0, property GI in /Game/UI/CharGen.CharGen_C = 0 ; les deux réglages fonctionnent |
5. Risques
ChargenCamerasvide à l'écran titre (non relevé) : la garde fait alors afficher 0 et ignore l'écriture ; même effet visible qu'aujourd'hui (la liaison rendait 0), sans erreur.- Suppression de
Get_SpinBox_0_Value_0: seule référence relevée = la liaison (T5-T0 § 1) ; à revérifier parfind_nodesavant suppression.