LifePlay-Revival/Docs/Migration/etat/REL/STM1/STM1-B1-VAL.md
edujiro5972 56dfcfc3d2 LifePlay UE 5.8 : état de développement au 2026-10-20
Tickets : PUB-20261020-T1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 17:35:10 +02:00

11 KiB

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

STM1-B1-VAL : validation de la trace C++ du choix de la ville (A1 à A6 de STM1-SPEC-01 § 7) (2026-10-20)

Copie D:\Game\LifePlay-master 5.8, branche ue5.8. Jeton UE : session STM1 (BUILD-GO STM1-B1, 06:30). Aucun fichier du projet modifié par ce validateur.

1. Fiches amont relues

  • Docs\Migration\etat\REL\STM1\STM1-SPEC-01.md (en entier ; § 2, 3, 7 : critères A1-A6).
  • Docs\Migration\etat\REL\STM1\STM1-IMPL-01.md (en entier).
  • Résumé de build Docs\Migration\etat\REL\STM1\STM1_Build_20261020-022610.txt (en entier) et journal Saved\Logs\portage\STM1_Build_20261020-022610.log (greps ciblés).
  • Gabarit VAL de lp-doc\gabarits.md lu avant écriture.

2. Points à confirmer des IMPL

Point (STM1-IMPL-01 § 4 et § 6) Verdict Preuve
La compilation passe (« non compilé » en IMPL) PASS § 3 A2 : code 0, 0 erreur, 4 unités dont les 3 fichiers du lot
Présence réelle des propriétés du GI actuel (Cities, SaveGameInstance, CityToMoveTo, StreetMapStatic, StreetMap, StaticMeshComponent) PASS (au menu) A3 : 0 PROPRIETE ABSENTE ; CITIES, DEMANDE, STREETMAP, POSE lus. SaveGameInstance : pas de ligne SAUVEGARDE, donc non établi (objet nul au menu, ou aucune sauvegarde chargée) : reporté
trace active, CITIES n=…, POSE …000Dummy, 0 PROPRIETE ABSENTE au premier lancement PASS partiel POSE None et non …000Dummy au menu (§ 3 A3) : reporté à la partie en jeu (COMMUN)
CityToMoveTo posé à chaque MoveCity (SPEC § 8) reporté non joué ; T1 et T2e couvrent le cas
Type exact de Save.City (chaîne ou texte) reporté aucune sauvegarde chargée au menu
Unity build : catégorie définie une fois PASS build 0 erreur ; [Adaptive Build] Excluded from LifePlay unity file: LifePlay.cpp, LPAssetRegistryHelpers.cpp, LPCityTraceSubsystem.cpp (journal ligne 36)

3. Critères rejoués

# Critère Commande Sortie brute Verdict
A1 Aucun Content/Plugins/Config hors CG2 git status --short -- Content Plugins Config M Content/UI/CharGen.uasset / M Content/UI/CharGenSlider.uasset / M Content/UI/VisualMorph.uasset ; code 0 PASS (exactement les 3 fichiers CG2 attendus)
A2 0 erreur, aucun avertissement dans les fichiers du lot Tools\Build.ps1 -Lot STM1-B1-VAL -FromLog Saved/Logs/portage/STM1_Build_20261020-022610.log code=-1 duree=0s erreurs=0 avertissements=1 autres=20 unites=4 (le -1 est le code « journal existant, pas de compilation » ; le code 0 est dans STM1_Build_20261020-022610.txt l. 5 : code de sortie : 0, duree 77 s). Seul avertissement : LPCameraModeSubsystem.cpp(1643) : warning C4701 ... 'Aim'. Même ligne dans STG_Build_20261014-154145.log:21 (LPCameraModeSubsystem.cpp(1643) : warning C4701). Unités : LifePlay.cpp, LPAssetRegistryHelpers.cpp, LPCityTraceSubsystem.cpp, Module.LifePlay.cpp. Chaîne : MSVC 14.50.35717. Les 20 « autres » sont des Warning: Plugin 'HyperAIStudio' does not list plugin … (UBT, hors lot) PASS (C4701 antérieur, confirmé)
A3 Lignes [LPCity] en jeu UeState.ps1 avant : processus=0 editeur=0 compilation=0 shaders=0 jeu=0, code 0 ; lancement UnrealEditor.exe ... -game -windowed -ResX=1024 -ResY=576 -log -abslog=...\STM1_VAL_game.log (pid 34808, départ 02:37:38) ; arrêt par Stop-Process -Id 34808 à ≈ 02:40 (≈ 120 s) ; UeState.ps1 après : processus=0 editeur=0 compilation=0 shaders=0 jeu=0, code 0 voir ci-dessous PASS (réserve : POSE None, pas 000Dummy)
A4 Rien à l'écran git diff des 3 M + lecture des 2 A ; Grep AddOnScreenDebugMessage|GEngine|PrintString sur .h et .cpp .h : No matches found ; .cpp : Grep Set|Write|CopyComplete|ImportText|ProcessEvent|AddOnScreenDebugMessage|GEngine|Print ne rend que 4 lignes FString::Printf (l. 77, 137, 203, 208) ; diff des 3 M : uniquement UE_LOG et la déclaration de catégorie PASS-STATIC
A5 Corps sous #if !UE_BUILD_SHIPPING, vide en #else lecture LPCityTraceSubsystem.cpp #if !UE_BUILD_SHIPPING l. 7 ; #else l. 279 ; #endif l. 304 ; en #else, Initialize, Deinitialize, Tick (rend false), Sample, DumpNow sans corps utile. En-tête sans #if (UHT) PASS-STATIC (build Shipping non compilée : absence de symbole non mesurée)
A6 Lecture seule du GI lecture du .cpp en entier Seuls GetObjectPropertyValue, GetObjectPropertyValue_InContainer, ContainerPtrToValuePtr, FScriptArrayHelper (Num, GetRawPtr), ExportTextItem_Direct (vers un FString local), GetPropertyValue, GetStaticMesh(). Aucun Set* sur le GI, ni CopyCompleteValue, ImportText, ProcessEvent. Les écritures portent sur les membres de suivi (LastSave, ReportedMissing…) et sur l'enregistrement de la commande console LP.CityTrace PASS-STATIC

A3 : lignes [LPCity] (journal Saved\Logs\portage\STM1_VAL_game.log, 2120 lignes, menu atteint : l. 1909 LogLifePlay: Display: M1e : marche coupee par le menu MainMenu_C)

Grep \[LPCity\] : 5 lignes (recompte par Grep LogLPCity|NOT VALID|RESOLUTION : 5)

1613:[2026.10.20-00.38.38:569][  0]LogLPCity: [LPCity] trace active (releve toutes les 0,25 s, ecrit au changement)
1904:[2026.10.20-00.38.46:496][  1]LogLPCity: [LPCity] CITIES n=281 [0]='Central London' sm='/Game/Heavy/StreetMap/CentralLondon.CentralLondon' mesh='/Game/Heavy/StreetMap/Static/CentralLondon.CentralLondon' ; CentralLondon a l'indice 0
1905:[2026.10.20-00.38.46:501][  1]LogLPCity: [LPCity] DEMANDE '' sm='/Game/Heavy/StreetMap/' mesh='/Game/Heavy/StreetMap/Static/'
1906:[2026.10.20-00.38.46:501][  1]LogLPCity: [LPCity] STREETMAP None
1907:[2026.10.20-00.38.46:501][  1]LogLPCity: [LPCity] POSE None (t=7.9 s)
  • PROPRIETE ABSENTE : 0. RESOLUTION : 0. NOT VALID : 0. Aucune ligne LogBlueprintUserMessages contenant un nom de ville ou NOT VALID (seule ligne BP trouvée : l. 1781 [CentralLondon_C_1] STARTUPCHECK - Level Blueprint BeginPlay, nom de niveau et non une trace de ville).
  • Attendu trace active : présent. CITIES n= : 1 ligne (281 villes, Central London à l'indice 0). POSE : 1 ligne, mais None, pas 000Dummy.
  • Info clé : au menu, la ville demandée est la valeur par défaut de la structure City (DEMANDE '', chemins /Game/Heavy/StreetMap/ et .../Static/ terminés par /), et aucun MoveCity n'a eu lieu : STREETMAP None, POSE None, aucune ligne RESOLUTION. Le choix de la ville (C1-C4 de la SPEC § 1) n'est donc pas tranché par ce lancement : il l'est en partie (nouvelle partie / Continuer), non jouée ici.
  • Pas de ligne SAUVEGARDE : l'objet SaveGameInstance est nul ou sans propriété City lisible au menu, sans PROPRIETE ABSENTE correspondant. Non établi.

MD5 des 5 sources contre STM1-IMPL-01 § 2

Commande : md5sum des 5 fichiers (et Tools\FileCheck.ps1, code 0, fichiers=5 LF=5 alertes=0).

Fichier MD5 IMPL-01 § 2 MD5 recompté Verdict
LifePlay.h df5da24a8457f802b87eb87e103e4352 df5da24a8457f802b87eb87e103e4352 confirmé
LifePlay.cpp c3d0b3b7ad8210404284f1faf1b27bbd c3d0b3b7ad8210404284f1faf1b27bbd confirmé
LPAssetRegistryHelpers.cpp 61b641efdff8942d0cceb827e5668c8e 61b641efdff8942d0cceb827e5668c8e confirmé
LPCityTraceSubsystem.h 47769ceca14092febc943cd499233117 47769ceca14092febc943cd499233117 confirmé
LPCityTraceSubsystem.cpp e5a0d22de9889c9265456c9b4f66fa59 e5a0d22de9889c9265456c9b4f66fa59 confirmé

Fins de ligne : LF pour les 5 (CRLF 0, CR 0), comme IMPL-01 (FileCheck.ps1) ; git ls-files --eol : i/lf w/lf pour les 3 fichiers suivis. Numstat IMPL (3, 1, 13 ; 47 et 304 lignes) : diff relu, cohérent (3 + 1 + 13 lignes ajoutées ; wc FileCheck : 12, 25, 89, 47, 304 lignes).

4. Diff lu en entier

5 fichiers : LifePlay.h (+3, déclaration LogLPCity), LifePlay.cpp (+1, DEFINE_LOG_CATEGORY(LogLPCity)), LPAssetRegistryHelpers.cpp (+13 : trace T1 avant le dédoublonnage existant, qui est inchangé), LPCityTraceSubsystem.h (A, 47 lignes), LPCityTraceSubsystem.cpp (A, 304 lignes). Conforme à la SPEC § 3 (T1, T2a-T2e, T3) ; aucun ajout non demandé. Les clés de ReportedMissing, la commande LP.CityTrace et le désenregistrement dans Deinitialize sont conformes à IMPL-01 § 3. git status --short -- Source : exactement ces 5 fichiers.

5. Verdict

PASS avec réserves. A1, A2 : PASS. A3 : PASS pour les critères de la SPEC (CITIES et POSE présents, 0 PROPRIETE ABSENTE), avec la réserve que POSE vaut None au menu et non 000Dummy. A4, A5, A6 : PASS-STATIC. Non mesuré : la compilation Shipping (absence de symbole), les lignes SAUVEGARDE et RESOLUTION, le comportement après MoveCity (nouvelle partie, Continuer).

Témoin en jeu : à créer (cas COMMUN pour une nouvelle partie et un Continuer ; attendu : DEMANDE, RESOLUTION, STREETMAP, POSE d'une ville, lignes SAUVEGARDE en Continuer). À demander à Big Boss (COMMUN-14-TESTS.md).

Suite en jeu (ajoutée par la session STM1 le 2026-10-20, ligne proposée par etat\BOSS\COMMUN-14-BILAN.md § 4) : COMMUN-14.1 PASS (2026-10-20 07:33) ; COMMUN-14.2 KO partiel, cause hors trace (2026-10-20 07:48) ; COMMUN-14.3 PASS estimé et COMMUN-14.18 PASS (2026-10-20 08:53).

6. Points à confirmer par l'utilisateur

  • Jouer jusqu'au symptôme (nouvelle partie puis Continuer) sur la build Development commune et transmettre Saved\Logs\LifePlay.log : la signature C1-C4 (SPEC § 1) se lit alors.
  • Accepter que POSE None au menu (avant tout MoveCity) est le comportement normal de la trace, et que la signature « 000Dummy au démarrage » n'est attendue qu'après le chargement d'une partie.

Fichiers écrits, fichiers à commiter

  • Écrits par le validateur : ce livrable ; Saved\Logs\portage\STM1_VAL_game.log (journal du lancement de contrôle, hors git) ; Docs\Migration\etat\REL\STM1\STM1-B1-VAL_BuildLog_20261020-023740.txt (écrit sous ST\STM1\ par EtatDir.ps1, rangé sous REL\STM1\ par Big Boss le 2026-10-20 ; résumé produit par Build.ps1 -FromLog, dont le code de sortie -1 est celui d'un recompte sans compilation).
  • À commiter (A) : Docs/Migration/etat/REL/STM1/STM1-B1-VAL.md, Docs/Migration/etat/REL/STM1/STM1-B1-VAL_BuildLog_20261020-023740.txt. Aucun fichier du projet (Source, Content) modifié par ce lot. À exclure des tickets STM1 : Content/UI/CharGen.uasset, CharGenSlider.uasset, VisualMorph.uasset (CG2).
  • État du jeton UE : UeState.ps1 = 0 avant et après ; processus 34808 arrêté par son pid.

Tours : 11 / 25 (déclaré ; FicheStats.py fait foi)

À verser : lp-validate § 2 ou § 5 — un Build.ps1 -FromLog rend code=-1 (recompte sans compilation) et écrit un fichier dans etat\ST\<lot>\ ; le code réel est dans le résumé du BUILD. Le crochet ecriture-gardien refuse un Set-Content vers %TEMP% hors \claude\ pour lp-validator : relever le pid par la sortie de la commande de lancement.