6.1 KiB
Fiche STM1-B3 (BUILD-FIN, étape 5 de STM1-SPEC-03) — Niveau N3 — Modèle prévu opus medium | utilisé claude-opus-5-5 — Agent session « Medium · STM1 » (pas de sous-agent) — Skills sk-protocol
STM1-B3 : preuve de la passe 2, matériau M_LP_Water et maillage d'eau de Londres (2026-10-20)
GO de Big Boss (local_104ff22d) :
- prouver d'abord que la passe 2 recalcule l'origine (pleine précision, décalage en mm) ;
- puis l'étape 5 : instantané,
M_LP_Wateren deux faces, exécution réelle sur CentralLondon seule ; - aucun autre asset touché, MD5 des 7 assets de référence identiques après ;
- le sous-système de pose (étape 6) attend un GO séparé.
Résultat : réussi. La passe 2 est bien recalculée (décalage de 0,031 mm, § 1). Deux assets neufs sont créés :
/Game/Heavy/StreetMap/Water/M_LP_Water (deux faces) et /Game/Heavy/StreetMap/Water/CentralLondon (13 550 triangles, 5,1 km²). Les 7 assets de référence sont inchangés.
1. Preuve que la passe 2 recalcule l'origine
Le code calcule l'origine finale par const FLonLat Origin = Kept.Num() ? EstimateOrigin(Kept) : Origin1; : nouvelle médiane sur les seules paires retenues,
pas de réutilisation de l'origine de la passe 1. Une ligne de rapport en pleine précision a été ajoutée. DryRun de preuve (STM1-B3-DRYRUN-PREUVE.md, code 0) :
origines pleine precision : passe 1 lat 51.511376450986 lon -0.112194547205 ; passe 2 lat 51.511376450709 lon -0.112194547137 ; ecart lat -2.772e-10 deg, lon 6.738e-11 deg ; decalage 0.031 mm ; passe 2 calculee sur 3620 paires (passe 1 : 4523)
Lecture (estimé) :
- les origines diffèrent à la 10e décimale : la passe 2 est bien recalculée ;
- le décalage de 0,031 mm s'explique par la nature des estimations par paire. Chaque paire donne une estimation de l'origine ; le bruit des centres de boîte (jusqu'à plusieurs mètres) se répartit de part et d'autre de la valeur vraie. Retirer les 903 paires les plus éloignées, de façon à peu près symétrique, laisse la médiane presque au même endroit.
- Le « 0 cm » affiché auparavant était exact, arrondi au centimètre.
2. Code et compilation
- Instantané
Tools\Snapshot.ps1 -Lot STM1-ETAPE5:LPBuildCityWaterCommandlet.cpp(832047E0…) etLifePlayEditorTools.Build.cs(95F28E7A…) : 2 entrées ;Content\Heavy\StreetMap\Water: absent avant (Test-Path→False), donc rien à sauvegarder.
.cpp:- ligne de preuve (§ 1) ;
- garde « ne jamais écraser un maillage d'eau existant » (
FPackageName::DoesPackageExist) ; - option
-CreateMaterial, qui créeM_LP_Waters'il est absent parUMaterialEditingLibrary(CreateMaterialExpression,ConnectMaterialProperty,RecompileMaterial,MaterialEditingLibrary.h:168, 232, 267). Après : MD569746A356A6138DAFEFE3F6930E82AF3, LF.
Build.cs: +MaterialEditor(dépendance privée). Après : MD5DA4771A9DDD0A921A538AE52369F5C62, LF.LifePlay.uprojectnon touché.- BUILD
Tools\Build.ps1 -Lot STM1:code=0 duree=26s erreurs=0 avertissements=0 autres=20 unites=1(STM1_Build_20261020-104059.txt).
3. Exécution réelle (CentralLondon seule)
RunCommandlet.ps1 -Lot STM1 -Commandlet LPBuildCityWater -Args "-City=CentralLondon -Water=…\q1-eau.osm.xml -Buildings=…\q2-batiments.osm.xml -CreateMaterial -Report=…\STM1-B3-ECRITURE.md"
→ code=0 duree=21s erreurs=0 avertissements=2 (résumé STM1_LPBuildCityWater_20261020-104208.txt, journal Saved\Logs\portage\STM1_LPBuildCityWater_20261020-104208.log).
recalage accepte (criteres : paires retenues, residu median, taux retenu)
polygones dans la carte : 278 exterieurs, 103 trous ; anneaux non fermes ignores : 0
maillage : 13902 sommets, 13550 triangles, aire 5.099 km2
materiau cree : /Game/Heavy/StreetMap/Water/M_LP_Water (…/Content/Heavy/StreetMap/Water/M_LP_Water.uasset), deux faces
asset ecrit : /Game/Heavy/StreetMap/Water/CentralLondon (…/Content/Heavy/StreetMap/Water/CentralLondon.uasset)
CODE 0
Les 2 avertissements n'en font qu'un, recopié deux fois par le résumé : LogUObjectGlobals: Warning: Failed to find object 'MaterialInterface /Game/Heavy/StreetMap/Water/M_LP_Water.M_LP_Water'. C'est le
LoadObject qui précède la création, attendu puisque le matériau n'existait pas.
| Asset neuf | Taille | MD5 |
|---|---|---|
Content/Heavy/StreetMap/Water/CentralLondon.uasset |
391 602 o | 5BDF4F0A6B3E709DAE9EFCFE8BCA2F6E |
Content/Heavy/StreetMap/Water/M_LP_Water.uasset |
5 717 o | D413292C80C8C190766AD83ACFE2E418 |
Copie de sûreté des deux assets (Content\Heavy n'est pas suivi par git) : Snapshot.ps1 -Lot STM1-ETAPE5-APRES → D:\Game\LifePlay_Backup_5.5\STM1-ETAPE5-APRES\ (2 entrées).
4. Contrôles de fin (boss.md § 4)
UeState.ps1:processus=2 editeur=0 compilation=0 shaders=0 jeu=2. Ce sont lesLifePlay.exede la build COMMUN-15 de l'utilisateur, hors copie ; non touchés.CopieEtat -Lot STM1(9 assets déclarés : les 7 de référence et les 2 neufs) :COPIE OK … proc=0 assets=9 absents=0 modifies=0 parasites=0 verrou=233:libre alertes=aucune(STM1-B3-APRES.json).- MD5 des 7 assets de référence identiques à ceux d'avant : GI
32FC0A97, Room93138747, PC707220A6, StreetMap_StaticB7F20462, CentralLondon.umap6CE42F91,Static/CentralLondonFBA15A84,StreetMap/CentralLondonA6C4D9B6. - Aucun autre asset :
Content\Heavy\StreetMapne contient queStaticet le nouveauWater(2 fichiers). - Résumés rangés sous
etat\REL\STM1\(3 fichiers) ;etat\ST\STM1\vide. - Brouillon : CHG-372 complété ; ERR : sans objet.
5. Fichiers
- Projet :
Source/LifePlayEditorTools/LPBuildCityWaterCommandlet.cpp(M depuis IMPL-02),LifePlayEditorTools.Build.cs(M). - Hors git :
Content/Heavy/StreetMap/Water/CentralLondon.uasset,M_LP_Water.uasset(A). - Livrables :
STM1-B3-FIN.md,STM1-B3-DRYRUN-PREUVE.md,STM1-B3-ECRITURE.md,STM1-B3-APRES.json, résumésSTM1_*_20261020-1040*.txtet-1041*,-1042*.
Suite : GO séparé pour l'étape 6 (lecture PIE du Z du Plane, puis IMPL du sous-système ULPCityWaterSubsystem, BUILD, VAL, essai visuel). État : eau de Londres construite, pas encore affichée en jeu.