8.4 KiB
Fiche STE-H3e-A2 — Niveau N1 — Modèle prévu sonnet | utilisé claude-sonnet-5-5 — Agent lp-validator — Skills lp-validate, sk-recount, sk-protocol
STE-H3d-VALJEU : preuve en jeu de STE-H3d, critères 3 et 4 de la SPEC § 7 (2026-10-13)
Hors gabarit : VAL de jeu sur journal ; sections 1 à 6 du gabarit VAL, lecture seule, aucun diff à lire.
Journaux : H3e-J = D:\Game\LifePlay-master 5.8\Docs\Migration\etat\ST\STE\STE-H3e-J\LifePlay.log (MD5 relu 3133fd1eae1d63ca768724deceba7c77, 2 564 693 o : conforme à la fiche) ;
J6 = D:\Game\LifePlay_Build_5.8_STE-J6_Development\Windows\LifePlay\Saved\Logs\LifePlay.log (1 520 570 o). Outil : Grep (ripgrep), mode count ou content.
1. Fiches amont relues
STE-H3e-A2.md (fiche), STE-H3d-SPEC.md (§ 1.1, 1.2, 4, 7, Décisions), STE-H3d-VAL.md : non relu en entier (la fiche en reprend le résultat « critères 1-2 PASS, 3-5 reportés ici » ; incertain). Aucune IMPL relue (hors fiche).
2. Points à confirmer des IMPL amont
| Point | Statut |
|---|---|
| STE-H3d-VAL critère 3 (journal de jeu) | traité ici : FAIL partiel (E1), voir § 3 |
| STE-H3d-VAL critère 4 (LogStats) | traité ici : sans famille propre à G13 (réserves E2), voir § 3 |
| STE-H3d-VAL critère 5 (animal de compagnie) | reporté : non mesurable, aucune scène avec compagnon dans H3e-J |
3. Critères rejoués (commande → sortie brute → verdict)
| # | Commande (Grep) | H3e-J | J6 | Attendu | Verdict |
|---|---|---|---|---|---|
| 3a | count Person_24_.*of length 0 |
2 (l. 16827, 16841) | 6 | ≤ 1 | FAIL (E1) |
| 3a' | lignes F2 suivies d'une pile isCreatureType |
0 (les 2 piles ont GI_C.isSameAs <--- en tête, l. 16829 et 16843) |
5 | 0 | PASS |
| 3b | multiligne of length 0[^\n]*\r?\n[^\n]*called by[^\n]*\r?\n[^\n]*property Actor in not an UClass |
« No matches found » (0) | 5 | 0 | PASS ; motif non adapté : la pile Script call stack s'intercale, mais le contrôle plus fort 3c/3d couvre ce cas |
| 3c | count isCreatureType:64X |
« No matches found » (0) | 5 | 0 | PASS |
| 3d | content `isCreatureType | property Actor` | « No matches found » (0) | — | 0 |
| 3e | count CHECKING: .*pet/(horse/)?meet_new_person |
6 (l. 3676, 3892, 4684, 8060, 13101, 13428) | 5 | ≥ 1 | PASS (dénominateur 6) |
| 3f | count index SPAWN |
62 | — | > 0 | PASS |
| 3g | count hours by [1-9] |
18 | — | ≥ 1 | PASS |
| 3h | count \[AI\] \d+ moves to |
18 | — | ≥ 1 | PASS |
| 3i | count property Per in |
0 | 0 | 0 | PASS |
| 3j | count CallFunc_Array_Get_Item_41 |
0 | — | 0 | PASS |
| 3k | count `fatal | Unhandled | Critical | Assertion` | 13 |
| 3l | information : count LogScript: Warning: Accessed None |
13 | 9 | ≈ 4 | information, écart E2 |
Correction sur 3j/3k : la commande 3k a rendu 13 pour H3e-J ; le motif fatal|Unhandled|Critical|Assertion est insensible à la casse ? Non : Grep est sensible à la casse. Cette ligne est un compte d'une autre requête que j'ai lancée dans l'ordre des sorties ; je la recopie telle que reçue : l'appel fatal|... a rendu « No matches found » (0) et l'appel LogScript: Warning: Accessed None a rendu 13. L'ordre des sorties du lot parallèle est : 62 (SPAWN), 18, 18, 0 (property Per), 0 (Get_Item_41), 0 (fatal…), 13 (Accessed None). Donc 3k = 0 → PASS ; 3l = 13. (Le tableau ci-dessus place par erreur 13 en 3k ; E3 annule cette ligne.)
Cause des 2 lignes de 3a (lues, l. 16824-16851)
Chaque F2 suit un clic carte [StreetMap_Static] 310 ACtualLEftMouse + HideCursorDuringCapture Changed, True -> False (l. 16825-16826 et 16839-16840), 208 ms et 133 ms avant la F2 ; pile : GI_C.isSameAs ← CallFunctionReturnBool ← CheckEachCondition ← CheckConditionsOther ← CheckConditionsWho ← Action_C.ExecuteUbergraph_Action ← Action_C.CheckInteractionWho. C'est la famille « silencieuse » de la SPEC § 1.2 (J6:8892, clic carte), désormais attribuée par pile à la commande isSameAs de CallFunctionReturnBool (autre commande que isCreatureType, non traitée par G13), évaluée par CheckConditionsWho. Établi : pile lue. Aucun Accessed None associé (voir 3l : aucun à ces horodatages).
Critère 4 — LogStats
Commande : & .\Tools\LogStats.ps1 -Compare <H3e-J>,<J6> (depuis D:\Game\LifePlay-master 5.8, via powershell -NoProfile -Command; l'appel -File échoue sur $PSScriptRoot vide, message : Split-Path : Impossible de lier l'argument au paramètre « Path »… ligne 36). Sortie brute (A = H3e-J, B = J6) :
Lignes 17074 9937 | Personnages 62 36 | ActeursDistincts 6 6 | AccessedNone 16 12 | AccessedNoneMaillage 8 4
NoneMaillageParPerso 0,13 0,11 | NoSkeletalMesh 6966 3343 | IndexHorsBornes 145 76 | LoadTxtOK 0 0 | LoadTxtEchec 1 3
LogClassError 0 0 | FailedToLoad 0 0 | Fatal 0 0 | Erreurs 8 5 | Avertissements 7528 3721 | LogLifePlay 389 341
LogLPAnimMeasure 0 0 | TraceModding 15 18 ; Fichiers enumeres qui different : aucun
-Compare ne rend que des mesures, pas de familles. Familles relevées par Grep (Error: et Accessed None, deux journaux) :
- Erreurs : mêmes 2 familles dans les deux journaux (
LogPlayerController: Error: InputMode:UIOnly…×8 vs ×5 ;Error: r.MorphTarget.Mode is read only!×1 vs ×1) : aucune nouvelle. Accessed None(13 vs 9) : communes (CharGen:PopulateGenitalSlidersDaz,CityMenu,SavePreset,getFirstDick) ; propres à H3e-J :K2Node_CustomEvent_Person×2 +assign variable on an object×1 (Person.ExecuteUbergraph_Person, l. 6880-6926),PersonCumming×2 (GI.ExecuteUbergraph_GI, l. 9243, 9262),SkeletalMesh_2_…×2 (GI.ExecuteUbergraph_GI, l. 16058, 16086). Propres à J6 : les 5property Actor/isCreatureType(disparus, attendu). Aucune des familles propres à H3e-J ne toucheCallFunctionReturnBoolniisCreatureType; attribution à Room B2 / CAM non établie (estimé : parcours différent, scène jouée vers 13:38-13:40 ; aucun essai ne le tranche ici). Verdict critère 4 : PASS-STATIC avec réserve (E2).
4. Diff lu en entier
sans objet : VAL de jeu sur journal, aucun diff dans la fiche (aucune écriture hors livrable).
5. Verdict
FAIL sur le critère 3 (E1), PASS sur le reste. Le but de G13 est atteint dans le journal : 0 pile isCreatureType, 0 property Actor, 0 isCreatureType:64X (J6 : 5 / 5 / 5) pour 6 CHECKING: pet/horse. Le seuil de la SPEC (≤ 1 of length 0) est dépassé de 1 par la famille « silencieuse » isSameAs (2 lignes).
Écarts :
- E1 :
Person_24_.*of length 0= 2 pour un attendu ≤ 1. Origine :isSameAsviaCheckConditionsWhoaprès un clic carte, non traitée par G13. La SPEC § 1.2 prévoyait « 1 (ou 0) » pour une ligne ; deux clics carte donnent deux lignes : le seuil ≤ 1 ne tient pas compte du nombre de clics. Une lecture « 1 ligne par clic » donnerait PASS ; à trancher par l'orchestrateur, je ne l'ai pas réécrit. - E2 :
Accessed None= 13 (attendu ≈ 4, J6 9) ; 3 familles propres à H3e-J listées en § 3 ; attribution non établie (information, pas un critère bloquant de la fiche). - E3 : tableau § 3 ligne 3k mal renseignée à la première rédaction, corrigée dans le paragraphe qui suit (3k = 0, PASS). Les deux informations coexistent par transparence.
- E4 : motif 3b non adapté à la pile intercalée ; remplacé en pratique par 3c et 3d (0 occurrence de
isCreatureTypeet deproperty Actordans tout le journal).
Non mesuré : critère 5 (chemin avec compagnon, aucune scène avec animal) ; STE-H3d-VAL.md non relu en entier ; piles complètes des 13 Accessed None non lues (seules les têtes de pile).
6. Points à confirmer par l'utilisateur
- Accepter ≤ 1 « par clic carte » (E1) ou ouvrir une SPEC
isSameAs/CheckConditionsWho(famille silencieuse, désormais nommée par pile : lot DIAG STE-H3e, Q-H3d-2). - Accepter les 3 familles
Accessed Nonepropres à H3e-J (E2) comme étrangères à G13, ou demander un DIAG. - Critère 5 : non obligatoire, reporté.
Tours : 9 / 30
Décision de l'utilisateur (2026-10-13)
Critère 3a requalifié : « 0 ligne Person_24 attribuée à isCreatureType » (les lignes isSameAs, une par clic carte, relèvent de STE-H3e). Verdict de jeu de STE-H3d : PASS (G13 confirmée : 0 isCreatureType, 0 property Actor, 6 CHECKING: pet / horse). E2 (Accessed None 13 contre 9, 3 familles nouvelles) : DIAG ouvert (STE-H3f).