LifePlay-Revival/Docs/Migration/etat/ST/STE/STE-ORG4c-VAL.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

11 KiB
Raw Blame History

Fiche STE-ORG4c-v — Niveau N1 — Modèle prévu sonnet | utilisé claude-sonnet-5-5 — Agent lp-validator — Skills lp-validate, sk-recount, sk-protocol, debug-verification

STE-ORG4c-VAL : VAL statique V5 d'O4c (bonus à Endsex pour chaque participant, GI:EventGraph) (2026-10-14)

Verdict : PASS-STATIC sur V5 (tout est rejoué par dump et par compilation de tous les Blueprints, aucune exécution en jeu). V6 reportée à COMMUN-8. MD5 des 7 assets identiques à l'entrée ; UeState 0 ; aucun GI_Auto*.

1. Fiches amont relues

  • STE-ORG4c-v.md (fiche, lue en entier) ; STE-ORG4c-SPEC.md § 2.3, § 2.4 et § 7 V5 (le reste de la SPEC lu au passage, lignes 1-218 et 272-283) ; STE-ORG4c-Ic1.md (17 nœuds créés, table des noms réels) ; STE-ORG4c-IMPL.md (coupure, 26 liens, 7 valeurs, compilation stricte, enregistrement).
  • Dump d'avant : Saved\Logs\portage\STE-ORG4aV_LPDumpFunction_20261014-090538.log (VAL O4a).

2. Points à confirmer des IMPL

Point (source) Résultat Preuve
IMPL § 5 : autosauvegarde GI_Auto1 déplacée, find Saved/Autosaves -name 'GI_Auto*' vide PASS commande ci-dessous, aucune sortie ; Person_Auto1, Room_Auto1..4, TestStatic_Auto1 restent (déjà présents à l'entrée d'Ic2)
IMPL § 5 : MD5 de GI 32fc0a97… et des 6 autres assets inchangés PASS § 3 critère a et d
IMPL § 5 : en-tête du dump (6273 noeuds) PASS LogLPDump: Warning: === GI :: EventGraph (6273 noeuds) === (journal l. 1931)
IMPL § 5 / Ic1 § 5 : CallFunction_737 = Conv_TextToString, CallFunction_878 = EqualEqual_StriStri avec B = Penis, CommutativeAssociativeBinaryOperator_111 = BooleanOR, PromotableOperator_0/1 = Less_DoubleDouble (90 / 100) PASS journal l. 32181, 32185-32188, 32190, 32203-32210
IMPL § 5 : comptes relatifs au dump P1 (ForEachLoop +1, GiveOrgasmReward 0 → 1, PrintString +2, IsMale +1, Genital +1, Conv +1, EqualEqual +1, BooleanOR +1, Sex_Orgasm 0 → 1, Sex_OrgasmCounts 0 → 0) PASS § 3 critère b (tableau)
IMPL § 5 : diff indépendant DiffRemplacementNoeuds.py (7 nœuds communs modifiés) reporté hors des commandes de la fiche ; remplacé ici par la lecture des liens des 3 nœuds existants touchés (§ 3 b) et l'écart exact de +17 noms de nœuds ; à rejouer si l'orchestrateur le veut
IMPL § 5 : CompileAllBlueprints : 0 erreur PASS (à la référence près) § 3 critère c : 0 Error: sur /Game/, 25 Error: = référence
IMPL § 5 : LPTestStringCompat 3120 / 0 / 60 reporté non demandé par la fiche (aucune compilation C++ dans ce lot)
IMPL § 5 : V6 en jeu (S1 à S6) reporté (COMMUN-8) build empaqueté et LogStats hors fiche

3. Critères rejoués (commande → résultat brut)

a. Entrée. md5sum des 7 assets puis pwsh -NoProfile -File Tools/UeState.ps1 :

32fc0a970ab194626e8dc07df3a9633d *Content/BPs/GI.uasset
931387479e2d15f80bc4f36398907712 *Content/BPs/Room.uasset
f45be57a39d13d3eb19d0b543153ab0b *Content/BPs/PC.uasset
8668a47c627f7a5254910cf0ac33b12a *Content/BPs/Person.uasset
a8705f7fbe1fde1daba0464bfc9ff9b5 *Content/UI/SexAction.uasset
cb8353603cf95849b4f778a33b4bfbd2 *Content/UI/TopRight.uasset
df2db514e0e2345c6ccac66a0787621f *Content/Heavy/New2/Furniture/fnt_ext001.uasset
processus=0 editeur=0 compilation=0 shaders=0 jeu=0   (code=0)

Tous égaux aux valeurs de la fiche (rubrique 3). Verdict : PASS.

b. Dump. .\Tools\RunCommandlet.ps1 -Lot STE-ORG4cV -Commandlet LPDumpFunction -Args '-BP=GI -Fn=EventGraph -Pins -Exec' -EtatDir …\ST\STE : code=0 duree=66s erreurs=0 avertissements=30349 (les « avertissements » sont le niveau de journal de LogLPDump, pas des erreurs). Journal : D:\Game\LifePlay-master 5.8\Saved\Logs\portage\STE-ORG4cV_LPDumpFunction_20261014-103731.log ; résumé .txt dans etat\ST\STE\ (non utilisé, tronqué).

  • En-tête : (6273 noeuds) = attendu. Verdict : PASS.
  • Les 17 nœuds, journal l. 32159-32248 (premier listing des nœuds neufs, lu en entier) : MacroInstance_97 (macro 'ForEachLoop'), CallFunction_729 (KismetSystemLibrary::IsValid()), IfThenElse_222 à 225, VariableGet_782 (IsMale), 783 (Genital), 784 (Sex_Orgasm), CallFunction_737, 878, CommutativeAssociativeBinaryOperator_111, PromotableOperator_0/1, CallFunction_918/988 (PrintString), CallFunction_992 (Person_C::GiveOrgasmReward()).
  • Diff des noms de nœuds avec le dump O4a (en-têtes Warning: K2Node_<type>_<n> uniques) : avant 6254, après 6271 (+17) ; les 17 noms : 0 occurrence dans le dump d'avant, 17 en-têtes dans le dump d'après. Les noms réels sont ceux d'Ic1 § table. Écart constant +2 entre le compte des en-têtes uniques (6271) et l'en-tête du dump (6273), identique à celui d'O4a (6254 / 6256) : cohérent. Verdict : PASS.
  • Coupure : IfThenElse_875 (l. 16494-16498) : execute ← IfThenElse_98.then, Condition ← CustomEvent_4245.ForceEnd, then → MacroInstance_97.Exec seul, else → MacroInstance_18.exec (inchangé, confirmé aussi l. 20916). CallFunction_11423.execute ← CallFunction_32955.then, IfThenElse_189.then, MacroInstance_97.Completed (l. 12843) : 3 sources, dont IfThenElse_875 n'est plus. Seule la sortie Completed de la boucle rejoint CallFunction_11423 (l. 32165). VariableGet_3498.SexPersons → GetArrayItem_1037.Array, MacroInstance_97.Array (l. 12817). Verdict : PASS.
  • Liens de la boucle (l. 32159-32248) : Array Element → 5 cibles (CallFunction_729.Object, VariableGet_782.self, 783.self, 784.self, CallFunction_992.self) ; LoopBody → IfThenElse_222.execute ; Array Index vide ; IfThenElse_222 : Condition ← CallFunction_729, then → 223.execute, else vide ; IsMale → OR.A, Genital → 737.InText, 737.ReturnValue → 878.A, 878.B = 'Penis', 878.ReturnValue → OR.B, OR.ReturnValue → IfThenElse_223.Condition ; 223 : then → 224.execute, else → 225.execute ; Sex_Orgasm → PromotableOperator_0.A, _1.A ; B = '90.0' / '100.0' ; 224 et 225 : Condition reliées, then vide, else → CallFunction_918 / 988 ; 918.InString = 'ORG4 bonus Endsex homme', 988.InString = 'ORG4 bonus Endsex femme', bPrintToScreen = 'false' ×2, bPrintToLog = 'true' ; 918.then et 988.then → 992.execute (2 sources) ; 992.then vide. Les 4 impasses voulues (222.else, 224.then, 225.then, 992.then) sont vides. Les 26 liens et les 7 valeurs de la SPEC § 2.3 sont tous retrouvés. Verdict : PASS.
  • Aucun Cum de Person appelé : ::Cum() = 1 avant, 1 après (l'appel existant). Aucune des 17 broches n'appelle Person::Cum. Verdict : PASS.
  • Comptes (grep -c -F, mêmes motifs sur les deux journaux entiers) :
Motif avant (O4a) après (O4c) attendu verdict
macro 'ForEachLoop' 79 80 +1 PASS
GiveOrgasmReward 0 1 0 → 1 PASS
PrintString 82 84 +2 PASS
variable 'IsMale' 25 26 +1 PASS
variable 'Genital' 7 8 +1 PASS
Conv_TextToString 41 42 +1 PASS
EqualEqual_StriStri 42 43 +1 PASS
BooleanOR 27 28 +1 PASS
variable 'Sex_Orgasm' 0 1 0 → 1 PASS
Sex_OrgasmCounts 0 0 0 → 0 PASS
::Cum() 1 1 aucun nouveau PASS

c. CompileAllBlueprints. .\Tools\RunCommandlet.ps1 -Lot STE-ORG4cV -Commandlet CompileAllBlueprints -EtatDir … : code=3 duree=201s erreurs=25 avertissements=55 (code 3 = erreurs de la référence, voir ci-dessous). Journal : …\Saved\Logs\portage\STE-ORG4cV_CompileAllBlueprints_20261014-103926.log.

Mesure obtenu référence de la fiche
lignes Error: 25 25
Error: sur /Game/ 0 0
Error: visant CC_Shaders / CR_FaceExpRig / RLExpStruct 25 (regroupement par signature : tous /Engine/CC_Shaders/… ou la ligne de script associée à CR_FaceExpRig) toutes /Engine/CC_Shaders/…
Warning: 55 55
a réussi 420 420
La compilation de GI a réussi oui, journal l. 2020 : [0060,76] La compilation de GI a réussi ! [en 3 978 ms] (/Game/BPs/GI.GI) oui
Verdict : PASS (égal à la référence). Note : mon filtre direct sur la sous-chaîne /Engine/CC_Shaders ne trouve que 9 des 25 lignes, parce que 16 lignes portent le chemin disque Engine\Content\CC_Shaders\… ou le message de script sans chemin ; toutes se rattachent au même asset CR_FaceExpRig (regroupement par signature fait).

d. Fin. md5sum des 7 assets (même commande qu'en a) : 7 valeurs identiques à l'entrée ; UeState.ps1 : processus=0 editeur=0 compilation=0 shaders=0 jeu=0 (code 0) ; find Saved/Autosaves -name 'GI_Auto*' : aucune sortie ; git status --short -- Content : M GI, PC, Person, Room, TopRight (comme à l'entrée d'Ic2, aucun fichier de plus). Verdict : PASS.

4. Diff lu en entier

Sans objet pour le dépôt : cette VAL ne produit aucun diff de fichier suivi ; le « diff » de V5 est le diff des noms de nœuds (§ 3 b, +17, 0 retrait) et la lecture des liens des 3 nœuds existants touchés (IfThenElse_875, CallFunction_11423, VariableGet_3498). Fichiers que j'ai écrits (sorties de commandlets et livrable) : Saved\Logs\portage\STE-ORG4cV_LPDumpFunction_20261014-103731.log, Saved\Logs\portage\STE-ORG4cV_CompileAllBlueprints_20261014-103926.log, leurs deux résumés .txt dans Docs\Migration\etat\ST\STE\, et ce livrable. Aucun fichier du jeu modifié (MD5 inchangés).

5. Verdict

PASS-STATIC sur V5 (O4c), aux réserves de portée près : non rejoués ici, le diff DiffRemplacementNoeuds.py, LPTestStringCompat, les non-régressions isSameAs 11 / GetVariable 53 / CallFunctionReturnBool 594 / Action:EventGraph 363 (SPEC § 7 V5.1 dernière puce, hors des commandes de la fiche), la partie O4a de V5 (liens d'O4a : non listés dans la fiche), et V6 (jeu). MD5 inchangés ; UeState 0.

6. Points à confirmer par l'utilisateur

  • V6 en jeu (S1 à S6, marqueurs ORG4 bonus Endsex homme / femme) : reportée à COMMUN-8.
  • Faut-il rejouer les non-régressions de la SPEC § 7 V5.1 (quatre dumps) et le diff DiffRemplacementNoeuds.py avant clôture ? Non prévus par la fiche.
  • LPTestStringCompat : à rejouer seulement si une compilation C++ intervient avant COMMUN-8.

Tours : 13 / 25

Constats

  • Le journal de l'IMPL disait que le diff des noms donne exactement 17 : confirmé, avec comptage par en-têtes uniques (6254 → 6271), non par l'en-tête du dump (6256 → 6273), qui garde l'écart de +2 déjà vu en O4a.
  • La fiche annonce « 25 Error: toutes /Engine/CC_Shaders/… » : vrai en tant qu'asset (CR_FaceExpRig), mais seules 9 lignes portent le chemin /Engine/CC_Shaders textuellement ; la formulation de la référence mériterait « liées à CC_Shaders ».
  • Aucun refus du crochet ; aucune commande avec >, <, tee, mkdir ou heredoc.