LifePlay-Revival/Docs/Migration/etat/REL/MAPDL1/MAPDL1-AUTO-SPEC.md
2026-10-22 21:10:39 +02:00

16 KiB
Raw Blame History

Fiche MAPDL1-AUTO-SPEC — Niveau N3 — Modèle prévu opus medium | utilisé claude-opus-5-5 — Agent session « Medium · MAPDL1 » — Skills sk-protocol, lp-city, lp-lot, lp-commandlets

MAPDL1-AUTO : l'automate des villes reprises, exécuté par ProduirePack (2026-10-22)

Consignes de l'utilisateur :

  • dans la session MAPDL1, citée mot pour mot : « même processus, automatiser la chaine de production, il y a 280 villes à traiter. je veux que des modèles plus réduits les prennent en charge » ;
  • relayée par Big Boss, citée : « mapdl1 doit construire son automate en premier » ;
  • Moscou 1.0.1 est validée (« ok pour moscow »).

Demande de Big Boss : suivre le modèle PROD1 de STM1. Un agent Sonnet exécute sans rien décider et s'arrête au premier écart ; MAPDL1 ne garde que le diagnostic. Pas de roue de plus.

Rien n'a été exécuté dans UE : pas de jeton pour cette fiche. Il n'y a eu que des essais à blanc et des arrêts négatifs.

1. Décision : ProduirePack.ps1 porte la recette, sans modification

Tools\ProduirePack.ps1 (STM1, MD5 005AF412653505CF5CA9047D6BCD496F) n'est pas touché. Ses types d'étapes suffisent pour toute la partie sous jeton :

Étape d'une ville reprise Type ProduirePack
manifeste des archives, montage, version, démontage packville (Archives, Monter, Version, Demonter)
import en DryRun, puis import réel (LPImportLegacyStreetMap) commandlet, avec 13 contrôles egal sur la ligne TOTAUX et « reste 4 octets »
maillage (LPBuildCityStatic -Flat -CompareStreetMap Londres) commandlet, contrôles -> CONFORME et triangles en fourchette
3D classique (LPBuildCityStatic -BuildingsOnly … StreetMapClassic) commandlet, bâtiments egal, triangles en fourchette
ligne « From version » du CREDITS remplacer (ancre trouvée une seule fois, fins de ligne gardées)
cuisson, archive cuisson (3 paquets), archive (octets en fourchette, 6 fichiers, CREDITS identique, archive antérieure inchangée)

Deux opérations restent hors moteur, avant la recette, faites par mes outils existants et contrôlés : l'extraction du zip et la lecture des totaux (RepriseCarte -Etape Lire), puis le squelette du pack (RepriseCarte -Etape Creer). Elles n'ont pas besoin de ProduirePack, qui n'a aucun type pour un zip ou pour NewMod.ps1. Rien n'est donc à demander à STM1.

LPCheckStreetMap (relecture) n'a pas d'option -Report, ce qui le rend incompatible avec le type commandlet. Il n'entre donc pas dans la recette. La relecture depuis le disque est assurée par l'étape classique : elle recharge l'UStreetMap écrit, et son nombre de bâtiments est contrôlé egal. Les routes et nœuds relus ne sont pas recontrôlés, ce qui est un léger recul par rapport à RepriseCarte -Etape Importer.

2. Outils (hors ProduirePack.ps1)

Fichier État MD5 Octets Liens
Tools\RecetteCarte.ps1 neuf : écrit la recette d'une ville (-Mode Nouvelle ou Classic) avec les valeurs attendues calculées ; ne lance rien DF48FF7495741B376DEB2050853DD732 13 087 1 : lien à poser (Big Boss)
Tools\ProduireCartes.ps1 réécrit en place : pilote de lot (préparation hors moteur, recette, puis ProduirePack -Recette) ; arrêt au premier écart (-ArretApres 1) ; -JetonUE obligatoire hors -ABlanc 5C95203B54CF781145F0907E5A1890AC, puis 5762C6EC7ED9F4964D4E1632BF64F5C9 (§ 6 bis) 11 285 2, gardé
Tools\RepriseCarte.ps1 inchangé depuis MAPDL1-PROD-CONSIGNE (tirets, Biysk_Fixed) 2042423AE3F52D1E928E831D021F2077 24 533 2
Tools\LireCarteUE4.py inchangé 6BA579413D32AC23128C28980EF0308F 11 626 2
  • Tous sont en ASCII et LF ; l'analyse syntaxique donne 0 erreur.
  • Instantanés : MAPDL1-AUTO (RecetteCarte.ps1 absent ; ProduireCartes.ps1 à 2CAEFFE9… ; CREDITS de Tokyo à 3E2BA6B0…).
  • L'écriture en place a été préparée sur une copie, contrôlée, puis écrite par WriteAllBytes. fsutil montre toujours les deux noms.

Source modifiée : ModSources\lpm_city_tokyo\Module\CREDITS.txt, passé de LF à CRLF (décision de Big Boss « à la prochaine version »), MD5 3E2BA6B0… devenu F5671904024C1FE7E02554E5FF159207, 18 CR pour 18 LF. PackVille -Etape Version exige le CRLF.

3. Valeurs attendues (calculées, et non mesurées après coup)

Formules établies sur les 10 villes produites. Mesure comparée au calcul à partir des totaux de LireCarteUE4.py :

Ville Maillage mesuré Calcul Écart
Tokyo 1 792 923 1 792 923 0,000 %
Manila 371 403 371 403 0,000 %
Bangalore 2 717 119 2 717 119 0,000 %
NYC 2 037 417 2 037 440 −0,001 %
Moscow 1 074 679 1 074 703 −0,002 %
Mumbai 2 141 445 2 141 526 −0,004 %
Shanghai 694 387 694 428 −0,006 %
Seoul 1 119 432 1 119 518 −0,008 %
Beijing 863 661 863 788 −0,015 %
MexicoCity 1 289 772 1 290 344 −0,044 %
Moscow (classique) 809 182 809 262 −0,010 %
  • classique = 3 × points_bâtiments − 2 × bâtiments (toit de n − 2 triangles et 2 triangles par mur).
  • maillage = classique + 2 × (points_routes − routes) + (points_parcs − 2 × parcs).
  • L'écart est toujours négatif ou nul : une triangulation peut échouer, jamais en ajouter. Les bornes vont donc de −1 % à +0,5 % (-Tolerance).
  • Bâtiments : egal (même nombre que l'ancienne carte).
  • 13 totaux de l'import : egal, et « reste 4 octets ».
  • Archive :
    • mode Classic : archive 1.0.0 plus 12 à 30 octets par triangle classique (Moscou : 20,1) ;
    • mode Nouvelle : 25 à 50 octets par triangle de maillage, plus 12 à 30 par triangle classique (vague 1 : 33 à 40 octets par triangle de maillage).
  • Cuisson : 3 paquets ; 6 fichiers installés ; en mode Classic, 1 archive antérieure au manifeste, MD5 identique.

3D éclairée ou -ClassicUnlit : laissé en paramètre (ProduireCartes -ClassicUnlit, ou -UnlitAuDela N). Par défaut, éclairée, validée sur Moscou. Le nombre de triangles est le même avec ou sans éclairage, puisque les murs comptent toujours 2 triangles. Le non éclairé ne fait que partager les sommets : moins de sommets et un fichier plus petit. Ce n'est pas mesuré. Cela corrige mon estimation précédente d'un maillage « à peu près moitié moins » lourd.

4. Recettes écrites (vague 1, passage en 1.0.1 avec 3D classique)

Dossier Docs\Migration\etat\REL\MAPDL1\AUTO\, <pack>-1.0.1.recette.json, 8 étapes : archives, monter, classique, version, credits, demonter, cuisson, archive.

Ville Bâtiments Triangles classique attendus Archive attendue (o) MD5 de la recette
Tokyo 129 240 1 590 176 – 1 614 271 86 881 957 – 115 794 259 BCE9842ABD2EE0400A72A3D134289534
Manila 31 844 346 384 – 351 633 19 075 484 – 25 373 378 97FDE579ECBB6036A63BB799D4C87193
Mumbai 115 936 1 907 735 – 1 936 642 94 153 427 – 128 839 535 F9805DB2AF835874B66EBAE7DEAD49C9
Shanghai 22 106 397 183 – 403 201 31 277 686 – 38 499 196 4CCA2295FF4AC4C696939B4A14840091
Seoul 41 044 623 317 – 632 763 51 169 353 – 62 502 405 22FB2D8522EF64495540F6C29EDA1DB5
MexicoCity 72 207 1 051 650 – 1 067 585 60 514 732 – 79 635 646 196864C4F3672C87C2A2230797E7B44F
NYC 90 028 1 929 615 – 1 958 853 91 082 221 – 126 166 147 92FEC8B814DFF1EA75879042EDB67021
Beijing 35 862 552 179 – 560 546 38 860 089 – 48 899 715 372F8A759DD1045DD03C5C7CC9023105
Bangalore 239 071 2 494 946 – 2 532 749 128 091 093 – 173 453 757 ECA9422CCB83E4F1C1F99C44AF560948

Les recettes fixent par MD5 PackVille, RunCommandlet, ArchivePack, UeState, BuildMod et ModSource. Les entrées fixées par SHA-256 sont totaux-python.txt et le Content\StreetMap\<Ville>.uasset du pack.

Le totaux-python.txt de Tokyo a été recréé hors moteur (LireCarteUE4.py) : P2 avait été fait à la main.

5. Essais (sans jeton)

Essai Résultat
Recette Manila, ProduirePack -ABlanc, pendant que PROD1 tenait l'éditeur arrêt code 3 : « editeur, commandlet ou compilation de cette copie en cours » (garde UeState) ; outils et entrées conformes avant l'arrêt
Les 9 villes, ProduireCartes -SeulementClassic -ABlanc, UE libre 9 × « plan conforme », code 0 : outils (MD5), entrées (SHA-256), UeState, Mods\ vide, Content\ propre ; ancre du CREDITS trouvée une fois, CRLF gardé
ProduirePack sans -JetonUE ni -ABlanc code 3
Recette falsifiée (SHA-256 d'entrée à 0) arrêt code 2, l'entrée nommée
ProduireCartes sans -JetonUE code 3
Moscou en -SeulementClassic « deja » (archive 1.0.1 présente)
Annan et Pre-Saint-Gervais (-ABlanc) « zip absent », sautées, code 0
RecetteCarte : Moscou Classic (Classic déjà fait), Manila sans -Remplacer, Manila Nouvelle (carte déjà importée), ville inconnue quatre refus, code 2 chacun, message explicite
Motifs des contrôles sur les vrais rapports (Manila import-ecriture.md, static.md ; Moscou classic.md, ArchivePack, journal de cuisson) tous trouvés ; routes= ne capture pas points_routes=, batiments= ne capture pas points_batiments=

Non éprouvé (il faut le jeton) :

  • la boucle réelle ;
  • le mode Nouvelle en réel (aucun nouveau zip sur le disque) ;
  • le contrôle au manifeste, N MD5 identiques sur une vraie archive 1.0.1 (il n'est pas affiché sans --manifeste).

La première exécution des 9 villes sert d'épreuve.

6. Brève de l'exécutant (à donner telle quelle)

Fiche MAPDL1-AUTO-EXEC- — Niveau N1 — Modèle prévu sonnet — Agent lp-builder — Skills sk-protocol, lp-build

Objet : exécuter le lot de villes reprises par l'automate, sans rien décider.

Préalable : Big Boss t'a donné le jeton UE par un message explicite ; pwsh -NoProfile -File "D:\Game\LifePlay-master 5.8\Tools\UeState.ps1" -Kind Editeur rend 0 ; D:\Game\LifePlay-master 5.8\Mods\ est vide. Sinon : arrête-toi et rends compte.

Commande unique, en arrière-plan, depuis D:\Game\LifePlay-master 5.8, avec la liste de villes que donne Big Boss :

  • vague 1 (3D classique) : pwsh -NoProfile -File "D:/Game/LifePlay-master 5.8/Tools/ProduireCartes.ps1" -Villes Manila,Shanghai,Beijing,Seoul,MexicoCity,NYC,Mumbai,Tokyo,Bangalore -SeulementClassic -VersionPack 1.0.1 -Max 5 -JetonUE (environ 30 à 45 min) ;
  • nouvelles villes : pwsh -NoProfile -File "D:/Game/LifePlay-master 5.8/Tools/ProduireCartes.ps1" -Toutes -Max 5 -JetonUE (1 lot de 5 villes par jour, décision de l'utilisateur).

Chemin du script : absolu, entre guillemets, avec des barres obliques. Dans Git Bash, Tools\ProduireCartes.ps1 sans guillemets perd ses antislashs, d'où le code 64 de pwsh dans MAPDL1-AUTO-EXEC-1.

Pendant : attends la notification de fin, sans sonder. Ne lance rien d'autre dans UE.

À la fin :

  • recopie telle quelle la sortie de la commande et son code ;
  • recopie les lignes de Docs\Migration\etat\REL\MAPDL1\PRODUCTION.csv ajoutées pendant ta fiche ;
  • pour la dernière ville, recopie la dernière ligne de son RAPPORT.md (le chemin est dans la colonne rapport).

Interdits :

  • modifier une recette, un outil ou une source ;
  • relancer après un arrêt ;
  • utiliser -Depuis ;
  • installer un pack ou lancer le jeu ;
  • commit, tag ou push ;
  • supprimer quoi que ce soit.

Si le code n'est pas 0 : ne corrige rien. Copie la ligne **ARRET …** ou **ECART …**, la ville et le chemin du rapport. Le diagnostic revient à MAPDL1.

Compte rendu (livrable Docs\Migration\etat\REL\MAPDL1\MAPDL1-AUTO-EXEC-<n>.md) :

  • code ;
  • villes conformes, sautées et en échec ;
  • pour chaque archive : nom, octets et SHA-256 (colonnes du CSV) ;
  • Mods\ vide, et UeState à 0.

Rends le jeton à Big Boss.

6 bis. Rythme de l'utilisateur : 1 lot de 5 villes par jour

Décision de l'utilisateur, citée par Big Boss : « on fera 1 lot de 5 villes par jours. je ne veux pas être bloqué sur ce sujet. commençons par les ville déjà téléchargé et à refaire ».

Ordre de la vague 1 en 1.0.1, par risque croissant (triangles classiques attendus, puis bâtiments) :

Lot Villes (dans l'ordre) Triangles classiques
Lot 1 Manila, Shanghai, Beijing, Seoul, MexicoCity 350 k, 401 k, 558 k, 630 k, 1,06 M
Lot 2 NYC, Mumbai, Tokyo, Bangalore 1,95 M, 1,93 M, 1,61 M (129 240 bâtiments), 2,52 M (239 071 bâtiments)

La même commande sert les deux jours. Elle saute les villes déjà en 1.0.1 :

pwsh -NoProfile -File Tools\ProduireCartes.ps1 -Villes Manila,Shanghai,Beijing,Seoul,MexicoCity,NYC,Mumbai,Tokyo,Bangalore -SeulementClassic -VersionPack 1.0.1 -Max 5 -JetonUE

Essai à blanc (sans -JetonUE, avec -ABlanc) : les 5 villes du lot 1 sont planifiées, toutes « plan conforme », puis « limite -Max 5 atteinte », code 0.

Reprise d'un lot :

  • une ville terminée (archive <pack>-1.0.1-…zip présente) est sautée (« deja ») et ne compte pas dans -Max ; essai : Moscou ;

  • une ville coupée en cours n'est pas reprise d'elle-même. Les gardes l'arrêtent proprement :

    • LPBuildCityStatic refuse un Classic/<Ville> existant (« existe deja », LPBuildCityStaticCommandlet.cpp:171-173), ce qui donne le code 1 ;
    • PackVille -Etape Version ne trouve plus « 1.0.0 », ce qui donne le code 2 ;
    • le démontage se fait dans le finally de ProduirePack.

    Rien n'est écrasé ni compté deux fois. La reprise se fait par ProduirePack -Depuis <étape>, d'après etat.json, sur le diagnostic de MAPDL1 et une instruction écrite de Big Boss.

Zips absents (mode nouvelles villes) :

  • une ville sans zip est sautée sans échec ni ligne au rapport, et ne compte pas dans -Max ; le lot prend la suivante qui a son zip ;
  • la sortie se termine par « zips absents (sautees, sans echec) : N » ;
  • essai -Toutes -Max 5 -ABlanc : 10 villes « deja », 266 zips absents, 0 traitée, code 0.

Changement en place de ProduireCartes.ps1 pour ce point : une ville sans zip n'écrit plus de ligne « saute » au CSV ; en lot -Toutes, il y en aurait eu plus de 200 par jour. Nouveau MD5 : 5762C6EC7ED9F4964D4E1632BF64F5C9, lien gardé, même MD5 sur les deux noms. Instantané : MAPDL1-AUTO.

7. Suite

  1. Big Boss pose le lien physique de Tools\RecetteCarte.ps1 vers l'addon.
  2. Sur l'accord de l'utilisateur et le jeton, l'agent Sonnet joue la vague 1 en 1.0.1 (§ 6).
  3. MAPDL1 relit les rapports et écrit MAPDL1-AUTO-FIN. En cas d'arrêt, un MAPDL1-DIAG est écrit avant toute reprise.
  4. Ensuite, les nouvelles villes : par lots de 20, au rythme des zips téléchargés par l'utilisateur (geste de l'utilisateur, MAPDL1-PROD-CONSIGNE § 5).

Fichiers

À commiter :

  • A Docs/Migration/etat/REL/MAPDL1/MAPDL1-AUTO-SPEC.md
  • A Docs/Migration/etat/REL/MAPDL1/AUTO/*.recette.json (9)
  • A Docs/Migration/etat/REL/MAPDL1/AUTO/PROD-*-ABLANC/RAPPORT.md (rapports à blanc)

Hors git :

  • Tools\ (3 fichiers) ;
  • ModSources\lpm_city_tokyo\Module\CREDITS.txt ;
  • LifePlay_Data.

À verser :

  • lp-city § 7 : la production des villes reprises se fait par RecetteCarte.ps1, puis ProduirePack.ps1 ; le pilote de lot est ProduireCartes.ps1. Les triangles se calculent à l'avance (formules du § 3).
  • lp-commandlets : LPCheckStreetMap n'a pas -Report ; il est inutilisable dans une recette ProduirePack.