L4-CX-B02 : essai 1 rejete et annule, commandlet LPFixEditableTextBoxFont corrigee

La relecture du diff a montre que CharGen::Make_64 perdait sa police sans
rebranchement (coupure de la broche Font du Break avant le releve des Make).
Widgets restaures par Tools\Restore.ps1 (MD5 d'origine retrouves).
Commandlet : les broches Font ne sont coupees qu'apres le releve complet.
Preuves de l'essai archivees dans etat/L4-CX-B02_essai1_rejete/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
edujiro5972 2026-09-29 02:25:12 +02:00
parent 20f35ac440
commit 150d8892b2
5 changed files with 44 additions and 8 deletions

Binary file not shown.

Binary file not shown.

View file

@ -138,3 +138,29 @@ Tag d'entrée `L4-CX-B01-avant`. Sauvegarde : `D:\Game\LifePlay_Backup_5.5\L4-CX
| ID | Date | Lot | Fichiers | Raison | Avant → après | Retour arrière |
|---|---|---|---|---|---|---|
| CHG-018 | 2026-09-29 | L4-CX-B01 | `Content/BPs/GI.uasset` | réimport de CX-B01 (`LPFixAssetRegistryPins`) | MD5 `F4550DA5…` (UE4) → `0AA14EDB…` (UE5, réenregistré par la commandlet) | `Tools\Restore.ps1 -Lot L4-CX-B01` ou `git checkout L4-CX-B01-avant -- Content/BPs/GI.uasset` |
### Sous-lot L4-CX-B02 — `EditableTextBoxStyle` (ERR-021) : essai 1 **rejeté**
Tag d'entrée `L4-CX-B02-avant`. Sauvegarde : `D:\Game\LifePlay_Backup_5.5\L4-CX-B02\`.
Preuves : `Docs/Migration/etat/L4-CX-B02_essai1_rejete/`.
| Étape | Résultat |
|---|---|
| Simulation | 6 nœuds sur 6 attendus |
| Application | « 6 traités, 0 liaison non gérée, 0 échec » |
| Compilation | 0 erreur (6 avant), 98 avertissements, 0 broche orpheline |
| **Relecture du diff** | ❌ `CharGen::Make_64` a perdu sa liaison `Font` **sans** recevoir la liaison `TextStyle` : sa police retombe sur la valeur par défaut (aucune police, couleur magenta). Défaut **silencieux** : compilation et rapport de la commandlet au vert |
Cause : `LPFixEditableTextBoxFont` coupait la broche `Font` de chaque nœud au fil du parcours. Dans
`CharGen`, `Break_62` est parcouru avant `Make_64` : la coupure effaçait aussi la liaison vue depuis
`Make_64`, qui n'était plus rebranché. Dépend de l'ordre des nœuds (sans effet dans `StatMenu`). La
campagne du 2026-09-07 avait utilisé cette commandlet : le défaut y était très probablement présent.
| ID | Date | Lot | Fichiers | Raison | Retour arrière |
|---|---|---|---|---|---|
| CHG-019 | 2026-09-29 | L4-CX-B02 | `Content/UI/StatMenu.uasset`, `CharGen.uasset` | essai 1 appliqué puis **annulé** par `Tools\Restore.ps1 -Lot L4-CX-B02` (MD5 `34807BE0…`, `63CA2A78…` retrouvés) | sans objet |
| CHG-020 | 2026-09-29 | L4-CX-B02 | `Source/LifePlayEditorTools/LPFixEditableTextBoxFontCommandlet.cpp` | les broches `Font` ne sont coupées qu'après le relevé complet de la topologie | `git revert` |
| CHG-021 | 2026-09-29 | L4 | `Tools/ReimportCorrectif.ps1` (nouveau) | automatisation des étapes 1 à 6 du protocole | `git rm` |
Enseignement pour le protocole : l'étape 5 (relecture du diff nœud par nœud) est indispensable ; ni la
compilation ni le rapport de la commandlet n'ont détecté ce défaut.

View file

@ -29,3 +29,4 @@
| ERR-017 | `LogStreaming Failed to read file` (icônes moteur VisionOS, Interchange, Slate) | PIE 09-28 | 37 | cosmétique | — | accepté |
| ERR-018 | Assets StreetMap fortement réduits (`CentralLondon` 202 → 13,6 Mo, `00BathCC`) | comparaison des tailles | 4 fichiers | à qualifier | L4 | ouvert |
| ERR-019 | Plantages du resave de masse : `BulkData IsUnlocked`, `Array.h:783` (`fnt_new100/111`) | `Saved/Crashes` 09-07 | 2 | à surveiller | L4 | ouvert |
| ERR-025 | `LPFixEditableTextBoxFont` : un `Make EditableTextBoxStyle` peut perdre sa police sans rebranchement selon l'ordre de parcours (`CharGen::Make_64`) | relecture du diff L4-CX-B02 | 1 nœud | haute (silencieuse) | L4-CX-B02 | corrigé dans la commandlet (CHG-020) ; présent probablement dans le contenu du 2026-09-07 |

View file

@ -103,6 +103,7 @@ int32 ULPFixEditableTextBoxFontCommandlet::Main(const FString& Params)
struct FPendingLink { UK2Node_BreakStruct* Break; UK2Node_MakeStruct* Make; };
TArray<FPendingLink> PendingLinks;
TArray<UEdGraphNode*> NodesToReconstruct;
TArray<UEdGraphPin*> FontPinsToClear;
for (UEdGraph* Graph : Graphs)
{
@ -168,14 +169,11 @@ int32 ULPFixEditableTextBoxFontCommandlet::Main(const FString& Params)
}
}
// ReconstructNode conserve une broche orpheline dans DEUX cas : si elle
// porte des liaisons, et si elle porte une valeur differente du defaut.
// C'est le garde-fou d'UE contre la perte de donnees. Il faut donc lever
// les deux, APRES avoir releve la topologie et AVANT de reconstruire,
// sans quoi la broche Font survit et l'erreur persiste.
FontPin->BreakAllPinLinks();
GetDefault<UEdGraphSchema_K2>()->ResetPinToAutogeneratedDefaultValue(FontPin, false);
// Les liaisons ne sont coupees qu'APRES le releve complet (voir plus bas) :
// couper ici la broche Font d'un Break effacait aussi la liaison vue depuis
// les Make non encore parcourus, qui perdaient alors leur police sans
// rebranchement (CharGen, Make_64 - defaut releve le 2026-09-29, L4-CX-B02).
FontPinsToClear.AddUnique(FontPin);
NodesToReconstruct.AddUnique(GraphNode);
++NodesFixed;
@ -183,6 +181,17 @@ int32 ULPFixEditableTextBoxFontCommandlet::Main(const FString& Params)
}
}
// ReconstructNode conserve une broche orpheline dans DEUX cas : si elle
// porte des liaisons, et si elle porte une valeur differente du defaut.
// C'est le garde-fou d'UE contre la perte de donnees. Il faut donc lever
// les deux, APRES avoir releve toute la topologie et AVANT de reconstruire,
// sans quoi la broche Font survit et l'erreur persiste.
for (UEdGraphPin* FontPin : FontPinsToClear)
{
FontPin->BreakAllPinLinks();
GetDefault<UEdGraphSchema_K2>()->ResetPinToAutogeneratedDefaultValue(FontPin, false);
}
// La reconstruction invalide les broches : on la fait en bloc, puis on relie.
for (UEdGraphNode* Node : NodesToReconstruct)
{