10 KiB
Fiche STM1-B4-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-B4-VAL : validation statique du sous-système ULPCityWaterSubsystem (2026-10-20)
VAL STATIQUE : ni jeu, ni éditeur, ni MCP, ni build. Rien du projet n'a été modifié.
1. Fiches amont relues
STM1-SPEC-03.md(§ 2.6, § 2.7, § 5 bis) : relue en entier.STM1-B3-FIN.md: relue en entier (assets d'eau créés, aucun sous-système avant l'étape 6).- Résumés
STM1_Build_20261020-104737.txt(éditeur) et-104845.txt(jeu Development) : lus en entier. - Relevé
STM1_LPDumpComponents_20261020-104435.txtet journalSaved\Logs\portage\STM1_LPDumpComponents_20261020-104435.log: lignes du Plane relues. - Sources :
Source/LifePlay/LPCityWaterSubsystem.h(50 lignes) et.cpp(167 lignes), lus en entier. - Pas de fiche IMPL amont pour ce sous-système dans la demande : aucun « point à confirmer » d'IMPL à reprendre (§ 2).
2. Points à confirmer des IMPL
Aucune IMPL du sous-système n'a été fournie à la VAL ; sans objet : aucun point à confirmer transmis (fiche STM1-B4-VAL ne cite que SPEC-03 et B3-FIN).
Points repris de SPEC-03 § 6 (non vérifiés) : Z et échelle du Plane -> reporté (lecture PIE § 2.7, voir réserve R1) ; repère commun maillage / UStreetMap -> hors périmètre (étape 4, déjà traité).
3. Critères rejoués
| Critère | Commande | Sortie brute (extrait) | Verdict |
|---|---|---|---|
| V1a résumé éditeur | Read STM1_Build_20261020-104737.txt ; recompte Tools\Build.ps1 -Lot STM1-B4-VAL -FromLog ...104737.log |
fichier : code de sortie : 0, Erreurs du compilateur : 0, Avertissements du compilateur : 0, Autres lignes ... : 20, unités LPCityWaterSubsystem.cpp, Module.LifePlay.cpp. Recompte : code=-1 duree=0s erreurs=0 avertissements=0 autres=20 unites=2 (le code -1 est normal avec -FromLog : le code vrai est celui du résumé du BUILD) |
PASS avec réserve R2 (20 lignes UBT HyperAIStudio, 0 avertissement compilateur) |
| V1b résumé jeu | idem ...104845 |
fichier : code de sortie : 0, erreurs 0, avertissements 0, autres 0, unités 2 (les mêmes). Recompte : code=-1 duree=0s erreurs=0 avertissements=0 autres=0 unites=2 |
PASS |
| V1c journaux | Grep LPCityWater dans STM1_Build_20261020-104737.log et -104845.log |
3 lignes de chaque : [Adaptive Build] Excluded from LifePlay unity file: ... LPCityWaterSubsystem.cpp ... (l. 37 / l. 15) et Compile [x64] LPCityWaterSubsystem.cpp (l. 44 / l. 21) ; aucune est un avertissement ou une erreur. Grep `(?i)(warning |
error)en comptage : 20 occurrences dans-104737.log, 0 dans -104845.log; les 20 du résumé éditeur sont toutesWarning: Plugin 'HyperAIStudio' does not list plugin ...` (aucune ne cite LPCityWater) |
| V1d fraîcheur | ls -l des sources : .cpp 10:47:24, .h 10:46:38 ; journaux nommés 10:47:37 et 10:48:45 |
sources antérieures aux deux builds | PASS |
| V2 lecture seule du GI | Grep `ProcessEvent | SavePackage | MarkPackageDirty |
| V3 rien à l'écran | Grep `AddOnScreenDebugMessage | PrintString` (même comptage) | 0 occurrence ; uniquement UE_LOG |
| V4 conformité SPEC-03 § 2.6 | lecture .cpp |
voir détail ci-dessous | PASS-STATIC |
| V5 fins de ligne, MD5 | FileCheck.ps1 -Path @(.h, .cpp) ; tr -cd '\r' < fichier | wc -c |
LF 0 50 0 - DEB58EC1A0A361AD5995A890FB378E8C ...LPCityWaterSubsystem.h ; LF 0 167 0 - EC0946C5C1130D482E660BE3AC2C6BC3 ...LPCityWaterSubsystem.cpp ; fichiers=2 LF=2 alertes=0 ; CR comptés : 0 et 0 |
PASS |
| V6 état git | git status --short -- Source Content Config Plugins LifePlay.uproject |
voir ci-dessous | PASS avec signalements |
V4 détail (fichier:ligne)
- Pose
/Game/Heavy/StreetMap/Water/<Ville>:.cpp:125(chemin),:128FPackageName::DoesPackageExist,:130LoadObject<UStaticMesh>. Ville =MapMesh->GetName()(:124) : le nom court, sans contrôle du préfixe/Game/Heavy/StreetMap/Static/(écart mineur à « déduire du chemin », inoffensif : un nom sans paquet d'eau donne composant masqué). - Sinon masqué :
:132-141SetVisibility(false)+ ligne[LPCity] EAU ... aucun asset d'eau. - Sans collision, sans ombre :
:148NoCollision,:149SetCastShadow(false); décalques coupés:150. - Attaché au composant de la carte :
:146SetupAttachment(MapComp), propriétaireStreet(:145) ; réutilisé tant queGetOwner() == Street(:143). - Z = Z du Plane + 2 cm :
:19(2.0),:68GetComponentLocation().Z,:160PlaneZ + WaterAbovePlaneCm; repliMapLoc.Z - 298(:23,:160). Cohérence avec le relevé :RelativeLocation = (X=0,Y=0,Z=-300)du[SCS] Planede/Game/BPs/MapMarkers(journal l. 1967 et 1991) ; -300 + 2 = -298. Correction quand le plan apparaît ::104-114(bUsedFallbackZ). Attente du plan au plus 5 s avant repli ::26,:92-99. - Aucune dépendance à ClassicMap : Grep
ClassicMap= 0. - Une ligne
[LPCity](LogLPCity) par pose ::165; lignes supplémentaires ::139(pas d'eau) et:113(correction de Z).LogLPCitydéclaréLifePlay.h:12, définiLifePlay.cpp:25. - Présent en Shipping : Grep
UE_BUILD_SHIPPING|WITH_EDITOR= 0 ; modules inclus tous moteur (Engine, CoreUObject). Le Shipping n'a pas été compilé (seuls éditeur et Development l'ont été). - Note : SPEC-03 § 2.6 parle de
LogLifePlay; la fiche B4 et le code utilisentLogLPCity(conforme à la fiche).
V6 détail
Sortie brute :
M Config/DefaultInput.ini
M LifePlay.uproject
M Source/LifePlay/LPCameraModeSubsystem.cpp
M Source/LifePlay/LPCameraModeSubsystem.h
M Source/LifePlay/LPKeyboardSubsystem.cpp
M Source/LifePlay/LPKeyboardSubsystem.h
M Source/LifePlayEditorTools/LifePlayEditorTools.Build.cs
?? Source/LifePlay/LPCityWaterSubsystem.cpp
?? Source/LifePlay/LPCityWaterSubsystem.h
?? Source/LifePlayEditorTools/LPBuildCityWaterCommandlet.cpp
?? Source/LifePlayEditorTools/LPBuildCityWaterCommandlet.h
- Attendus STM1 :
LPCityWaterSubsystem.h/.cpp(??),LPBuildCityWaterCommandlet.*(??),LifePlayEditorTools.Build.cs(M). Tous présents. - Autres lots (signalés seulement) :
DefaultInput.ini,LifePlay.uproject,LPCameraModeSubsystem.*,LPKeyboardSubsystem.*. - Fichier inattendu : aucun.
4. Diff lu en entier
Les deux fichiers neufs (217 lignes) sont lus en entier (??, pas de diff git). Le commandlet et le Build.cs ne font pas partie de cette VAL (déjà couverts par B3). Aucun script n'a modifié de fichier du projet.
5. Verdict
PASS avec réserves (valeur technique : PASS-STATIC, rien d'exécuté en jeu ; V1 est rejoué sur les résumés et journaux).
Réserves et risques de code (rapportés, non corrigés) :
- R1 (incertain) : le repli
Z carte - 298 cmsuppose queMapMarkersest au Z de la carte et quePlane(enfant deStaticMeshComponent0) n'est pas déplacé par l'échelle du parent. Le relevé ne donne que le Z relatif (-300) et l'échelle 1e6 du Plane, pas le Z monde. Essai qui tranche : le journal[LPCity] EAU ... Z eau=... (plan MapMarkers ...)en PIE ou en Development (SPEC § 2.7). - R2 : 20 avertissements UBT
HyperAIStudio does not list plugin ...au build éditeur (connus du plugin tiers, pas de lien avec le lot) ; 0 avertissement compilateur. - R3 :
FindPlaneZprend le premier acteur dont la classe contient « MapMarkers » ; après un changement de ville, un ancienMapMarkersencore vivant donnerait un Z périmé (même Z attendu pour toutes les villes ? non vérifié). - R4 :
TActorIterator: parcourt tous les acteurs, mais seulement au changement de carte (au plus 5 s d'attente, soit ≤ 20 passes) et tant quebUsedFallbackZreste vrai (toutes les 0,25 s si le plan n'apparaît jamais, ex. mode sansMapMarkers). Coût limité mais permanent dans ce cas ; pas de borne d'arrêt de la correction. - R5 :
LoadObjectsynchrone sur le thread de jeu à chaque changement de carte (391 Ko pour Londres) : à-coup possible, faible.DoesPackageExisten build empaqueté non essayé. - R6 : composant non recréé à chaque carte (réutilisé si même propriétaire,
:143) : pas de fuite constatée. SiStreetMap_Staticest détruit,WaterComponentdevient invalide (TObjectPtrUPROPERTY,IsValidtesté:104,:134,:143) : géré. - R7 : la surveillance dépend du nom exact
StreetMapStatic/StaticMeshComponent/Plane/ « MapMarkers » ; une propriété absente donne un composant jamais posé, sans journal (le sous-système ne signale pas l'absence, contrairement à la trace[LPCity]). - R8 : Shipping non compilé ;
LPTestStringCompatet porte G-U3 sans objet (VAL statique, aucune compilation relancée).
Témoin en jeu : à créer (aucune fiche COMMUN ne couvre la pose de l'eau ; cas demandé à l'orchestrateur : eau visible sur la Tamise, modes par défaut et classique, autre ville sans eau, ligne [LPCity] EAU au journal).
6. Points à confirmer par l'utilisateur
- Z de l'eau juste sous le sol de pavé, sans scintillement ni eau enfouie (essai Development, SPEC § 4 P3).
- Eau visible aussi en mode classique (P4).
- Autre ville : aucun asset d'eau, rien posé (P5).
Inventaire des modifications faites par la VAL
- Écrit : ce livrable.
Tools\Build.ps1 -FromLog(commande prescrite par lp-validate) a écrit un résumé :D:\Game\LifePlay-master 5.8\Docs\Migration\etat\ST\STM1\STM1-B4-VAL_BuildLog_20261020-105057.txt(le second appel a écrasé le premier, même nom).git statusne le montre pas (dossier non suivi/ignoré). À ranger ou ignorer par l'orchestrateur.- Aucun autre fichier modifié ; aucune commande git qui écrit.
Fichiers à commiter
Aucun (livrable STM1-B4-VAL.md : A, sur ticket du gardien, avec les sources du lot).
Tours : 6 / 20