Fiche STF-T5-T0 — Niveau N1 — Modèle prévu orchestrateur STF (Opus 5.5) | utilisé claude-opus-5-5 — Agent orchestrateur (MCP lecture) — Skills lp-mcp, sk-protocol # STF-T5-CART : les deux `SpinBox_0` (MainMenu, CharGen), carte avant SPEC (2026-10-10) Copie `D:\Game\LifePlay-master 5.8` (HEAD après `2883b80`). BUILD-GO STF-T5-T0 de Big Boss. Éditeur sans rendu, `-unattended` (aucune boîte de récupération après le plantage de J2 STE), journal `Saved\Logs\portage\STF-T5-T0_Editor_20261010-133417.log`. Lecture seule : `find_nodes`, `get_node_infos`, `GetWidgets`, `GetWidgetDescription`, `get_properties` ; `Tools/uasset58.py` sur les fichiers. MD5 avant = après : MainMenu `00e42d72…`, CharGen `9669b103…` (STE-TXT non commité), GI `606eb437…`. ## 1. (a) MainMenu : `SpinBox_0` « Depth of Field Strength » (établi) - Widget : `HorizontalBox_34` (dans `SettingsScrollBox`, infobulle « Set it to 0 to disable »), indice 1, slot `HorizontalBoxSlot_1` ; libellé `TextBlock_14` (indice 0). Propriétés : Min 0 / Max 20, glisser 0-20, `Value` 0, `Delta` 0, décimales 1 / 6, police Roboto Bold 20 (reste par défaut). - **Liaison Function** `Value ← Get_SpinBox_0_Value_0` : `GI` (`VariableGet_0`) → `ChargenCameras` → `[0]` (copie) → `CameraComponent` → `PostProcessSettings` → `Break` → `DepthOfFieldFarBlurSize × 2` → retour. Évaluée par `SynchronizeProperties` avant `Construct` (STA-T2b F2, sources moteur) : `GI` nul → 5 « Accessed None » par évaluation ; **240** dans le journal J1 (`STF-VAL.md` § J). Réévaluée ensuite à chaque image (attribut Slate lié) : sans erreur une fois `GI` affecté. - **`OnValueCommitted` (`ComponentBoundEvent_19`)** : `SetFieldsInStruct_0` (`PostProcessSettings`, `DepthOfFieldFarBlurSize ← InValue × 0.5` par `CommutativeAssociativeBinaryOperator_9`) → `VariableSet_13` (`CameraComponent.PostProcessSettings`) ; cible `GI.ChargenCameras[0].CameraComponent` (`VariableGet_20` → `_21` → `GetArrayItem_3` → `VariableGet_27`). **Aucune garde** (ne part que sur action du joueur : `GI` valide ; tableau supposé rempli, STA-T2b « estimé oui »). - Pas d'`OnValueChanged` sur ce widget. ## 2. (b) CharGen : `SpinBox_0` « Counteract Vagina Deform » (établi) - Widget : `AntiDeform` (HorizontalBox de `MorphVisualBox`), indice 2, slot `HorizontalBoxSlot_2` ; libellé `TextBlock_69`. Propriétés : Min 0, Max non surchargé, glisser 0-100, `Value` 0, police 12. Infobulle : « … you may need to spin the box back and forth a few times for it to work » : **l'effet en direct pendant le glisser est voulu**. - **Pas de liaison de propriété** : aucune fonction `Get_SpinBox_0…` ; dans l'asset, `SpinBox_0` n'apparaît que dans les exports `CharGen` / `CharGen_C` (2), comme `TextBlock_69` (sans liaison) (`uasset58.py locate`). - **`OnValueChanged` (`ComponentBoundEvent_85`)** : `SetMorphTarget(GI.CharacterBeingEdited.Mesh, 'Genesis8Female__Chin Type 1 Assist', InValue × -1, bRemoveZeroWeight)` (`CallFunction_303`, cible `VariableGet_282` ← `_281` ← `_280` GI). **Aucune garde** : au premier `SetValue` / `CommitValue` de construction, `GI` est nul → 1 « Accessed None … property GI in CharGen_C » (journal J1 l. 1422). Mécanisme d'ERR-057, **sans écriture de `GI`** (seule lecture fautive). - CharGen porte la modification non commitée de STE-TXT (`9669b103…`), PIE J2 terminé par un plantage éditeur (`SEditableText::SynchronizeTextStyle`) : partie (b) bloquée jusqu'à décision utilisateur et commit STE-TXT. ## 3. Conséquences pour la SPEC - (a) relève de la méthode STF (liaison à retirer : widget remplacé ; init gardée dans `Construct` ; `OnValueCommitted` rebranché, garde ajoutée sur la chaîne cible). - (b) relève d'une **simple garde** (`IsValid(GI)` et `IsValid(CharacterBeingEdited)` avant `SetMorphTarget`, règle 4 `lp-mcp` : « vide » est l'état normal à la construction) ; passer sur `OnValueCommitted` casserait l'effet en direct voulu. - Piste A de STA-T2b (affecter `GI` dans `OnInitialized`) : **exclue** (`lp-mcp` § 4, ERR-057, CHG-294). Fichiers écrits : ce livrable. Aucun fichier de la copie UE modifié.