18 KiB
Fiche STE-H3g-J — Niveau N1 — Modèle prévu sonnet | utilisé claude-sonnet-5-5 — Agent lp-validator — Skills lp-validate, sk-recount, sk-protocol
STE-H3g-VALJEU : preuve en jeu de STE-H3g (G16) et non-régression H3d / H10 sur le journal COMMUN-2 (2026-10-13)
Hors gabarit : VAL de jeu sur journal, lecture seule, aucun diff à lire (sections 1 à 6 du gabarit VAL, puis une section par famille Accessed None nouvelle). Outils : Grep (ripgrep), Read, rg -c en Bash, Tools\LogStats.ps1.
Journal COMMUN-2 (C2) = D:\Game\LifePlay_Backup_5.5\COMMUN-2\essais\LifePlay_commun2_definitif_BOSS.log : md5sum → 3f2355f48057f666bf984f64f4dc3d8d (conforme au 3f2355f4 attendu, pas d'arrêt), wc -l → 85 697 lignes, 15 837 462 octets, non modifié. Ligne de commande (l. 291) : -ScriptStackOnWarnings -LPHitchLog -LPPersonsLog=5 : -ScriptStackOnWarnings présent (même base que HJ, plus -LPPersonsLog=5). Session de 16:31 à 17:13:20 UTC (horodatages du journal, en UTC), 345 index SPAWN.
HJ = D:\Game\LifePlay-master 5.8\Docs\Migration\etat\ST\STE\STE-H3e-J\LifePlay.log (17 074 lignes). J6 = D:\Game\LifePlay_Build_5.8_STE-J6_Development\Windows\LifePlay\Saved\Logs\LifePlay.log (9 937 lignes).
Build COMMUN-2 annoncé par la fiche : HEAD 0745917 + GI G16 + Person STG + Room CAM. Relevé : git log -1 → 0745917 ; md5sum Content/BPs/GI.uasset → 0e6aedcccd1a6522282f9a423843ce45 (commence par 0E6AEDCC, conforme à la fiche) ; git status --short -- Content/BPs → M sur GI, Person, Room. Que le journal provienne bien d'un build embarquant ce GI n'est pas relu ici (donnée de la fiche).
1. Fiches amont relues
fiches\STE-H3g-J.md (en entier), STE-H3g-SPEC.md § 2.3 (G16) et § 7 (critères 4 et 5, Décisions : G15 non écrite, G16 approuvée), STE-H3f-DIAG.md § 1 F3 et § 3.2-3.3, STE-H3d-VALJEU.md (forme). Non relus : STE-H3g-IMPL.md, STE-H3g-VAL.md (seulement les lignes 19 et 58, qui reportent le jeu à COMMUN-2), STE-H3d-SPEC.md (le critère H3d est pris tel que repris par la fiche et par STE-H3d-VALJEU.md « Décision de l'utilisateur » : 0 ligne Person_24 attribuée à isCreatureType).
2. Points à confirmer des IMPL amont
| Point | Statut |
|---|---|
STE-H3g-VAL : journal de jeu SkeletalMesh_2_93573D 2 → 0, UpdateDefaultHair 4 → 0 avec preuve de parcours (SPEC § 7.4) |
traité ici : NON DÉMONTRÉ (§ 3, G16) |
STE-H3g-VAL : Person_24_.*of length 0 (2) et isSameAs (3) « attendus inchangés » (G15 non écrite) |
traité ici : isSameAs inchangé (2 lignes d'avertissement ; HJ 3 contient une ligne de plus, voir § 3), mais 7 lignes of length 0 de plus viennent de getRelatedPerson (famille F-A, § 4) ; ce point de la VAL amont était faux pour ce journal |
SPEC § 7.4 limite R-H3g-3 (G15 : un 0 sur isSameAs n'est qu'un indice) |
sans objet : isSameAs ≠ 0 |
| STE-H3d-VAL critère 5 (animal de compagnie) | reporté : CHECKING: .*pet/(horse/)?meet_new_person = 12 mais aucune scène avec compagnon relue |
3. Critères rejoués (commande → sortie brute → verdict)
Commande générique : rg -c -e '<motif>' <journal> (ripgrep ; l'absence de ligne de sortie = 0). Les trois journaux ont été comptés dans la même commande.
| # | Motif | C2 | HJ | J6 | Attendu | Verdict |
|---|---|---|---|---|---|---|
| G16-1 | SkeletalMesh_2_93573D |
0 | 2 | 0 | 0 | 0 conforme, mais ne prouve rien seul (voir G16-5) |
| G16-2 | UpdateDefaultHair |
0 | 4 | 0 | 0 | idem (HJ : n'apparaît que dans les piles jointes aux 2 avertissements F3, HJ:16070, 16082, 16098, 16110) |
| G16-3 | was from AddCreature (SPEC § 7.4 : ≥ 3) |
0 | 3 | 0 | ≥ 3 | non atteint |
| G16-4 | CLICK ON THE SAME BUTTON (≥ 1) |
0 | 1 | 0 | ≥ 1 | non atteint |
| G16-4b | LOAD ETHNIC |
10 (l. 12079, 12117, 18066, 18067, 22155, 31609, 41420, 43535, 54916, 78881) | 6 | 2 | ≥ 1 après le 3e AddCreature |
non évaluable (aucun AddCreature) ; voir G16-5 |
| G16-5 | marqueur du chemin G16 (voir ci-dessous) | aucun | HJ:16058-16114 | — | trouvé | NON DÉMONTRÉ |
| H3d-1 | isCreatureType |
0 | 0 | 11 | 0 | PASS |
| H3d-2 | Person_24_.*of length 0 |
9 | 2 | 6 | 0 attribuée à isCreatureType |
PASS (2 isSameAs, 7 getRelatedPerson, 0 isCreatureType : piles lues, voir ci-dessous) |
| H3d-3 | CHECKING: .*pet/(horse/)?meet_new_person |
12 | 6 | 5 | ≥ 1 | PASS |
| H3d-4 | property Per in |
15 (14 avertissements + 1 ligne de synthèse l. 85646) | 0 | 0 | 0 (J6) | écart : voir F-A, § 4 (attribué à getRelatedPerson, pas à CallFunctionReturnBool) |
| H3d-5 | CallFunc_Array_Get_Item_41 (avec espace) |
0 | 0 | 0 | 0 | PASS littéral ; mais CallFunc_Array_Get_Item_58 ×8 et _62 ×8 (rg -o) : F-B, § 4 |
| H10-1 | index SPAWN |
345 | 62 | 36 | > 0 | PASS |
| H10-2 | hours by [1-9] |
32 | 18 | 7 | ≥ 1 | PASS |
| H10-3 | \[AI\] [0-9]+ moves to |
32 | 18 | 7 | ≥ 1 | PASS |
| GEN-1 | `fatal | Unhandled | Critical | Assertion` | 0 | 0 |
| GEN-2 | LogScript: Warning: Accessed None |
76 | 13 | 9 | HJ 13, J6 9 | informatif : 76 / 345 SPAWN = 0,22 ; HJ 13 / 62 = 0,21 ; J6 9 / 36 = 0,25 (par SPAWN, ordre de grandeur identique) |
| GEN-2b | Accessed None (sans préfixe) |
82 | — | — | — | = 76 avertissements + 6 lignes de la synthèse de fin de session (l. 85638, 85641, 85646, 85648, 85651, 85653) : le « 82 » de Big Boss est reproduit mais n'est pas un compte d'avertissements |
| GEN-3 | Error: |
18 | 9 | 6 | 18 attendus | PASS : 17 LogPlayerController: Error: InputMode:UIOnly… + 1 Error: r.MorphTarget.Mode is read only! (mêmes 2 familles que HJ : 8 + 1). LogStats donne Erreurs 17 (ne compte pas la ligne r.MorphTarget) |
G16-5 : recherche d'un marqueur du chemin G16 (réponse au point clé)
Chemin des F3 dans HJ (HJ:16058-16111) : Contact_C bouton → OnClickContactButton → GI:LoadPreset → GenerateAndApplyStrings → PlayerChangeRace → UpdateDefaultHair. Messages de journal autour : AddCreatureButton ×3 avec DestroyDummy was from AddCreature (HJ:15433, 15643, 15857), LOAD ETHNIC test1811 émis par Person_C 3 ms après l'avertissement (HJ:16085, 16113), CLICK ON THE SAME BUTTON (HJ:16114).
Dans C2 :
- Motif combiné
PlayerChangeRace|UpdateDefaultHair|FitMorphableHair|LoadHairMeshIfNeeded|GenerateAndApplyStrings|LoadPreset|Contact_C|ChangeSex|CharGen_C|…: 21 lignes, toutesCharGen_C(l. 32522-32536 piles de l'avertissementPopulateGenitalSlidersDaz; l. 32605-36882 lignesLPDebug persons : WALK … menus=[CharGen_C]). Aucune lignePlayerChangeRace,LoadPreset,GenerateAndApplyStrings,Contact_C,AddCreature. (SavePreset: 1 pile, l. 1176-1209, au chargement de la partie.) - Le changement de sexe de la fiche est établi dans le journal :
STATE PlayerCharacter … anim=bp:Daily_C(masculin) dernière occurrence l. 32458 (16:55:54) ;CharGen_C:Constructl. 32525 (16:55:58.705, sallechargenroom.lpworldl. 32509) ;anim=single:Idle_Fl. 32795 (16:56:04) ;anim=bp:Daily_F_Cpremière occurrence l. 33429 (16:56:09), jusqu'à la fin (l. 85558). Le journal ne contient ni « Michael » ni « Bridget » pour le joueur (un « Michael » PNJ l. 16960). - Le parcours observé est donc CharGen (menu de création) + salle de génération + retour au restaurant, pas le parcours HJ (bouton de contact +
LoadPreset). Qu'il appellePlayerChangeRacepuisUpdateDefaultHairn'est ni écrit dans le journal ni établi par une source relue : les appelants deUpdateDefaultHairdans l'EventGraph sontK2Node_CallFunction_660(GI__EventGraph_apres-STE-GI.txt:3846) etK2Node_CallFunction_236(:19514), l'appelant dePlayerChangeRaceestK2Node_CallFunction_230(:19464) etGenerateAndApplyStrings(STE-D-INV) ; leur chaînage depuisCharGenn'a pas été remonté ici. - Les 10
LOAD ETHNICde C2 ne sont pas un marqueur : les deux relus (l. 12078-12079 et 31608-31609) suivent immédiatement unPerson_C_… index SPAWN(génération de passant), comme HJ:3316-3317 et HJ:10214-10219, qui n'ont pas levé F3. Les huit autres n'ont pas été relus (incertain). - Autre piste testée sans succès : lignes
LogBlueprintUserMessagesde GI entre l. 32500 et 33500 (CharGen → retour) : seulementfast_food test0706 amenity,FOLLOWUP,LOAD ROOM, aucun message de coiffure ou de race. Conclusion G16 en jeu : NON DÉMONTRÉ. Les 0 surSkeletalMesh_2_93573DetUpdateDefaultHairsont compatibles avec la garde G16, mais le journal ne prouve pas queUpdateDefaultHaira été exécuté avec un maillage None (ni même exécuté) ; HJ montre que F3 n'apparaît que dans le parcours contacts →LoadPreset(lesLOAD ETHNICantérieurs de HJ ne la levaient pas). Reste le PASS statique deSTE-H3g-VAL.md. Le verdict utilisateur C1/C3 (changement de sexe, tous coiffés) est cohérent mais n'est pas une preuve par journal. Essai qui trancherait : rejouer le parcours HJ (3 ×AddCreatureButton, puis clic sur un contact,CLICK ON THE SAME BUTTON) dans le build COMMUN-2 ; attendu :was from AddCreature≥ 3,LOAD ETHNICaprès,SkeletalMesh_2_93573D= 0,UpdateDefaultHair= 0. Un 0 avec ces marqueurs présents prouverait G16 ; l'absence de F3 avec marqueurs présents serait la preuve par comparaison à HJ (2 → 0).
H3d : détail du critère 2 (piles lues)
rg -n -A2 -e 'Person_24_.*of length 0' sur C2 → tête de pile GI_C.isSameAs <--- aux l. 2373 et 3623 (2 lignes, = les 2 lignes isSameAs de HJ) ; GI_C.getRelatedPerson <--- aux l. 10022, 10085, 16669, 23779, 43845, 63137, 70368 (7 lignes). 0 isCreatureType, 0 property Actor. Critère requalifié par l'utilisateur (STE-H3d-VALJEU.md, Décision) : PASS.
4. Diff lu en entier
sans objet : VAL de jeu sur journal, aucun diff dans la fiche. Aucune écriture hors de ce livrable (le fichier n'existait pas avant).
5. Verdict
- G16 en jeu : NON DÉMONTRÉ (PASS statique seul, STE-H3g-VAL). Raison : aucun des marqueurs de la SPEC § 7.4 ni d'équivalent dans le journal ; le parcours du jeu (CharGen) n'est pas celui de HJ.
- H3d (G13) : PASS (0
isCreatureType, 0property Actor, 12CHECKING:pet/horse). - H10 : PASS (345 SPAWN, 32
hours by, 32moves to). - Général : fatal 0 ;
Error:18 = 2 familles connues. Aucune famille nouvelle ne se rattache à un graphe touché par STE (H10, H3d, H3g) : voir ci-dessous, attribution par pile. - Écarts : E1 le « 82 » de Big Boss contient 6 lignes de synthèse (76 avertissements) ; E2 la VAL amont «
Person_24_.*of length 0inchangé (2) » est contredite (9 : 2 + 7getRelatedPerson) ; E3property Per in= 15 (14 + 1 synthèse), J6 = 0 : famille F-A attribuée au parcours.
Familles Accessed None nouvelles (pile et rattachement)
Méthode : regroupement des 76 avertissements de C2 par propriété + fonction de tête + premier appelant de Script call stack (script PowerShell en lecture seule, trois journaux). LogStats -Compare C2,HJ et C2,J6 rendent seulement des mesures (aucune liste de familles) : AccessedNone 71 / 16 et 71 / 12 (autre définition que le Grep : 71 ≠ 76), AccessedNoneMaillage 2 / 8 et 2 / 4, NoneMaillageParPerso 0,01 / 0,13 et 0,01 / 0,11, Fatal 0 / 0, Erreurs 17 / 8 et 17 / 5 ; « Fichiers énumérés qui diffèrent : aucun ».
| Famille | C2 | HJ | J6 | Nouvelle ? | Rattachement |
|---|---|---|---|---|---|
CallFunc_Array_Get_Item_58 / _62 (CallFunctionReturnBool) |
16 | 0 | 0 | oui (HJ, J6) | F-B : parcours, défaut d'origine |
Per (getRelatedPerson) |
14 | 0 | 0 | oui | F-A : parcours, défaut d'origine |
Person (isTemporary) |
8 | 0 | 0 | oui | F-B : parcours, défaut d'origine |
K2Node_CustomEvent_Person + assign variable on an object (Person.ExecuteUbergraph_Person) |
20 + 10 | 2 + 1 | 0 | volume seulement | F1 de H3f (Person, STG-B1 / parcours) |
PersonCumming (GI) |
2 | 2 | 0 | non (HJ) | F2 de H3f (parcours) |
CallFunc_getFirstDick_Person_1 (PC) |
4 | 1 | 1 | volume | parcours (J6 et HJ l'ont) |
CallFunc_GetSkeletalMesh_ReturnValue(_3) (CharGen / SavePreset) |
1 + 1 | 1 + 3 | 1 + 1 | non | communes aux 3 journaux |
SkeletalMesh_2_93573D (UpdateDefaultHair) |
0 | 2 | 0 | disparue | G16 (non démontré, § 3) |
GI (CityMenu) |
0 | 1 | 1 | disparue | parcours |
Somme : 16 + 14 + 8 + 20 + 10 + 2 + 4 + 1 + 1 + 1 (le getFirstDick souris droite est dans les 4) = voir recompte : 20 + 16 + 14 + 8 + 4 (getFirstDick, 3 + 1) + 2 + 10 (assign) + 1 (SavePreset) + 1 (CharGen) = 76, égal au Grep GEN-2.
F-A : Per dans GI.getRelatedPerson ×14 (+ 7 lignes Person_24_… of length 0)
- Première ligne : l. 10029 (16:41:01.372). Pile :
GI:ExecuteUbergraph_GI > PlayScene > ExecuteUbergraph_GI > ReadSceneLine > CallFunction > getRelatedPerson(l. 10032-10038). Même message répété par paires, 7 appels (14 avertissements, 7of length 0l. 10020, 10083, 16667, 23777, 43843, 63135, 70366 ; entrée « Script call stack: GI_C.getRelatedPerson <--- » de la synthèse l. 85652, ×7). - Fonction de tête hors de la liste des graphes touchés par STE (
DestroyPerson,SavePreset,GetSMBoolForSMC_Cloth,ClearProxies,RandomizeHairs,Current,CallFunctionReturnBool,GI:EventGraphbouclesMaterials) :getRelatedPersonest appelée parCallFunction(lecture de ligne de scène), pas parCallFunctionReturnBool. - Antériorité :
GI_C.getRelatedPerson <---dans 5.5LifePlay_Build_5.5_L7i_B12\…\LifePlay-backup-2026.10.01-18.13.24.log(7 occurrences) et dans le journal partiel STGSTG\commun2\LifePlay_commun2_partiel_1650_BOSS.log(4 + 8property Per in). Libellé 5.5 différent (non comparé ligne à ligne :lp-validate§ 4,cmp_pie.pynon utilisé) : estimé défaut d'origine, déclenché par les scènes jouées (C2 : 345 SPAWN contre 62 et 36). - Rattachement : parcours (défaut d'origine déjà connu) ; ni STE, ni Person (STG-B1), ni Room (CAM-B2) (estimé).
F-B : isTemporary ×8 (Person) + CallFunc_Array_Get_Item_58 / _62 ×16 dans CallFunctionReturnBool
- Première ligne :
Personl. 60899,Array_Get_Item_62l. 60945 (17:08:48.500, une rafale de 24 lignes dans la même milliseconde, 8 + 8 + 8). Pile commune :GI:ExecuteUbergraph_GI > UpdateCheckForScenes > ExecuteUbergraph_GI > CheckConditionsWho > CheckConditionsOther > CheckEachCondition > CallFunctionReturnBool > isTemporary(l. 60903-60910) ; lesArray_Get_Item: même pile terminée àCallFunctionReturnBool(l. 60949-60955). La rafale suitPerson_C_2147481860 index SPAWN(l. 60898). - Proximité de G13 : la fonction de tête est
CallFunctionReturnBool(touchée par H3d), mais la commande en cause estisTemporary, pasisCreatureType(0 occurrence) ; les nœuds_58/_62ne sont pas le_41de la fiche. G13 ne garde queisCreatureType(SPEC H3d, repris parSTE-H3d-VALJEU.md§ 3a : « commande non traitée »). - Antériorité : 5.5
builds_supprimees\LifePlay_Build_5.5_L6e\Logs\LifePlay.log:GI_C:isTemporaryavec la même pile (l. 123477-123489, 12 occurrences du mot) etCallFunc_Array_Get_Item_58dansCallFunctionReturnBool(l. 123528-123530) ;_58×6 et_62×6 dans ce journal. Établi : même pile en 5.5, avant STE. - Rattachement : parcours (défaut d'origine), scène à condition
isTemporarysans personne. Volume : 1 rafale ×8 appels dans C2, 0 dans HJ / J6 (parcours qui ne l'évalue pas). Le rattachement à H3d est exclu par la commande, pas par la fonction (à ne pas confondre : une garde surisTemporarydansCallFunctionReturnBoolserait une nouvelle SPEC, non demandée).
F-C : volumes de F1 / F2 / getFirstDick (familles de HJ, pas nouvelles)
K2Node_CustomEvent_Person20 +assign variable10 (HJ 2 + 1) : pileRoom:ExecuteUbergraph_Room > Person:PlayIdle > PlayWorkDaily > PlayDaily > moveToPersonStand(l. 25248-25259), identique à la F1 de H3f (STE-H3f-DIAG.md§ 3.2, requalifiée « défaut d'origine »). Par SPAWN : 30 / 345 = 0,087 contre 3 / 62 = 0,048 : écart de volume non expliqué (incertain ; les scènes jouées dépendent du parcours). Aucune des piles ne touche les graphes de STE.PersonCumming2 :SexAction > cum > AfterCumSpeed(l. 18461-18470), F2 de H3f.getFirstDick4 :PC:InpActEvt_LeftMouseButton / RightMouseButton(l. 18340-18345, 18443), présente en HJ (1) et J6 (1).
6. Points à confirmer par l'utilisateur
- G16 : accepter « non démontré en jeu » (PASS statique) ou demander le rejeu du parcours HJ (3 ×
AddCreatureButton, clic sur un contact) dans le build COMMUN-2, seul essai qui donne un marqueur. - F-A et F-B (
getRelatedPerson×14 + 7of length 0,isTemporary+Array_Get_Item_58 / _62×24) : accepter comme défauts d'origine du parcours (même pile en 5.5 : L6e pour F-B, L7i B12 pour F-A) ou ouvrir un DIAG. - Écart de volume F1 (30 contre 3 pour 5,6 fois plus de SPAWN) : l'accepter ou le faire instruire.
- Critère H3d «
property Per in= 0 » de la fiche : à requalifier (il reprenait J6 = 0, parcours différent).
Non mesuré : H3d-5 de la SPEC H3d complet (STE-H3d-SPEC.md non relu) ; la durée de session de HJ et J6 (normalisation par SPAWN seulement) ; les 8 LOAD ETHNIC non relus ; le comportement de CharGen vis-à-vis de PlayerChangeRace ; piles complètes des 76 avertissements (seul le premier de chaque famille est lu en entier) ; le critère 5 animal de compagnie.
Fichiers à commiter : A Docs/Migration/etat/ST/STE/STE-H3g-VALJEU.md (ce livrable).
Tours : 34 / 40
Décisions de l'utilisateur (2026-10-13, session STE)
- G16 en jeu : PASS statique accepté, mention « non démontré en jeu » (parcours CharGen ≠ parcours HJ) ; à surveiller dans les essais suivants (
SkeletalMesh_2_93573D→ 0). - F-A (
getRelatedPerson,Per) et F-B (isTemporary,CallFunc_Array_Get_Item_58 / _62dansCallFunctionReturnBool) : DIAG ouvert (fichefiches\STE-H3h.md). - Note de l'orchestrateur : ligne « Somme » du § 5 laissée telle quelle (brouillon de calcul de l'agent) ; le total retenu est 76.
- Big Boss (2026-10-13) : STG établit que les 20
K2Node_CustomEvent_Personde COMMUN-2 sont la F1 de H3f (défaut d'origine accepté) ; la hausse de volume (30 contre 3) est transmise à STG. Verdict STE accepté par Big Boss ; DIAG STE-H3h hors chemin critique de l'alpha.