77 lines
8.4 KiB
Markdown
77 lines
8.4 KiB
Markdown
|
|
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 | PASS (contrôle ajouté) |
|
|||
|
|
| 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 | — | 0 | **FAIL apparent, voir E3** |
|
|||
|
|
| 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 5 `property Actor` / `isCreatureType` (disparus, attendu). Aucune des familles propres à H3e-J ne touche `CallFunctionReturnBool` ni `isCreatureType` ; 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 : `isSameAs` via `CheckConditionsWho` aprè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 `isCreatureType` et de `property Actor` dans 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 None` propres à 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).
|