Fiche MAPDL1-S7-IMPL — Niveau N3 — Modèle prévu sonnet — Agent lp-impl — Skills sk-protocol, lp-city, lp-lot, lp-commandlets # MAPDL1-S7 : données ODbL et LICENCE.txt dans la chaîne des anciennes cartes (SPEC-07) (fiche préparée le 2026-10-22, à lancer au signal de Big Boss) ## 1. Objectif Les packs repris d'une ancienne carte doivent livrer, en version 1.0.2 : - `Module\ODbL\.geojson` : les données de l'ancienne carte, en GeoJSON en coordonnées locales ; - `Module\ODbL\ODbL.txt` ; - `Module\LICENCE.txt`. Ces fichiers sont produits par la chaîne existante, sans geste à la main. L'outil prépare aussi la recette 1.0.2 du lot 2 (NYC, Mumbai, Tokyo, Bangalore), produit demain. ## 2. Décisions citées - Utilisateur, cité mot pour mot par Big Boss : « approuvés ». C'est sa réponse à SPEC-07 § 7 (GeoJSON en coordonnées locales ; `ODbL.txt` au texte proposé ; lot 2 directement en 1.0.2) et au texte de licence des packs. - Texte de `LICENCE.txt`, cité tel quel, à recopier **à l'identique** : « Free pack for LifePlay. Personal use. You may not sell this pack or charge for access to it. You may share it unmodified and free of charge. Third-party content keeps its own licence (OpenStreetMap data: ODbL 1.0; models: see CREDITS.txt). » - Spécification : `MAPDL1-SPEC-07.md` (§ 2 à 4). Elle fait foi pour le format et le texte d'`ODbL.txt`. ## 3. Périmètre : fichiers, et seulement ceux-là Tous sont des outils locaux de `Tools\`, **liés physiquement** à `D:\Game\LifePlay-Sandbox-5.8\Tools\`. | Fichier | MD5 avant (2026-10-22) | |---|---| | `Tools\LireCarteUE4.py` | `6BA579413D32AC23128C28980EF0308F` | | `Tools\RepriseCarte.ps1` | `2042423AE3F52D1E928E831D021F2077` | | `Tools\RecetteCarte.ps1` | `DF48FF7495741B376DEB2050853DD732` | **Hors périmètre** : - `ProduirePack.ps1` (STM1) : son étape `poser` suffit (l. 340-366) ; - `Source\`, `Content\`, l'index et la fenêtre du jeu : ils passent dans l'IMPL SPEC-06, pour COM32. ## 4. Travail 1. **`LireCarteUE4.py`** : deux options, `--geojson ` et `--odbl `, à partir des dictionnaires déjà décodés par `--totaux` (l. 228-254). - Format de SPEC-07 § 2 : - `FeatureCollection`, avec les membres `lifeplay_crs` et `lifeplay_source` ; - routes en `LineString` ; bâtiments, parcs et eaux en `Polygon` à anneau fermé ; - coordonnées en mètres, arrondies au centimètre ; - valeurs vides omises ; - UTF-8 sans BOM, fins de ligne LF, `ensure_ascii=False`. - `--odbl` écrit `ODbL.txt` d'après le gabarit de SPEC-07 § 3, en ASCII, avec des fins de ligne **CRLF**, comme `CREDITS.txt`. - Ligne de sortie : `GEOJSON routes= batiments= parcs= eaux= octets=`. Les comptes doivent égaler la ligne `TOTAUX` ; sinon, code 1. 2. **`RepriseCarte.ps1`** : nouvelle étape `-Etape ODbL`, sans moteur. - Elle lit l'ancienne carte du dossier de travail de `Lire` (`D:\Game\LifePlay_Data\Mega-essai\MAPDL1-\`). - Elle écrit `ODbL\.geojson` et `ODbL\ODbL.txt` dans ce dossier de travail, et nulle part dans le pack. - Elle imprime le SHA-256 des deux fichiers, pour la recette. - Si le dossier `ODbL\` existe déjà, elle refuse. - Elle accepte `-ABlanc`. 3. **`RecetteCarte.ps1`** : pour la version 1.0.2 (paramètre de version existant ou ajouté), la recette reçoit, après `version` et avant `demonter`, trois étapes `poser` et une étape `remplacer` : - `poser` de `${Monte}\Module\ODbL\.geojson` et de `${Monte}\Module\ODbL\ODbL.txt`, depuis le dossier de travail, avec le `sha256` de l'étape 2 ; - `poser` de `${Monte}\Module\LICENCE.txt` par `texte` (le texte du § 2 ; `poser` écrit en CRLF) ; - `remplacer` dans `CREDITS.txt` : ajout de la ligne `From version 1.0.2: the map data is included in ODbL/.geojson (ODbL 1.0, see ODbL/ODbL.txt); licence of this pack: LICENCE.txt.` Même forme que la ligne de la 1.0.1 ; dans le même appel pour les packs qui reçoivent aussi la 3D classique ; - contrôles de l'archive : - `fichiers installes` passe de 6 à **9** ; - fourchette d'octets = fourchette actuelle + l'apport du GeoJSON compressé, avec un taux **mesuré à l'étape 5** (et non deviné) ; - les packs encore en 1.0.0 (lot 2) reçoivent aussi l'étape `classique` de la 1.0.1 : la 1.0.2 contient la 3D classique et l'ODbL. 4. **Instantané** avant toute écriture : `Snapshot.ps1 -Lot MAPDL1-S7 -Path Tools\LireCarteUE4.py, Tools\RepriseCarte.ps1, Tools\RecetteCarte.ps1`. **Écriture EN PLACE** : l'outil Edit et l'outil Write rompent le lien physique avec l'addon. - Rédiger le nouveau fichier dans le scratchpad. - Le recopier par `[IO.File]::WriteAllBytes(, [IO.File]::ReadAllBytes())`, qui tronque le même fichier sans le remplacer. - Relire `fsutil hardlink list ` : 2 liens attendus. Relire aussi le MD5 côté jeu et côté addon : ils doivent être égaux. 5. **Essais, sans jeton**, dans des dossiers de travail neufs : jamais dans `ModSources\`, ni dans `Mods\`. - `LireCarteUE4.py --totaux --geojson --odbl` sur **Tokyo** (la plus grande : 18 340 routes, 129 240 bâtiments) et sur **Manila**. - Relever pour chacune : comptes `GEOJSON` contre `TOTAUX` ; taille en clair ; taille dans un zip, mesurée avec 7-Zip ou `System.IO.Compression` dans le scratchpad, d'où le taux de compression ; validité JSON (`python -I -c` interdit : un script ponctuel dans `Saved\MAPDL1\` ou `json.load` dans l'outil même). - `RepriseCarte.ps1 -Etape ODbL -ABlanc` sur une ville, puis `RecetteCarte.ps1` à blanc pour NYC 1.0.2. Relire la recette produite. ## 5. Critères de fin - Les 3 outils sont écrits en place : liens gardés, ASCII, LF ; MD5 relevés avant et après, des deux côtés. - Tokyo et Manila : comptes `GEOJSON` = `TOTAUX` ; JSON valide ; tailles et taux de compression mesurés. - La recette NYC 1.0.2 est produite à blanc, avec les étapes du § 4.3, et relue. - Rien n'est écrit dans `ModSources\`, `Mods\`, `Source\` ni `Content\`. ## 6. Interdits Les règles de `sk-protocol` § 2 s'appliquent : aucune commande git qui écrit ; aucune suppression ; aucun jeton UE (ni cuisson, ni commandlet) ; aucun réseau. ## 7. Livrable `D:\Game\LifePlay-master 5.8\Docs\Migration\etat\REL\MAPDL1\MAPDL1-S7-IMPL.md` (en-tête de fiche, MD5, sorties brutes des essais, recette à blanc, mesures, fichiers). PubCheck à 0. ## 8. Suite Lot 2 en 1.0.2 (demain) : Big Boss lance `ProduireCartes.ps1` avec `lp-builder` en haiku, sous jeton. Les 10 villes déjà produites passent ensuite en 1.0.2, au rythme des lots. ## 9. Budget 40 tours.