# Alpha.15 — intérieurs, sous-sols et ville compacte **État : code, génération et distribution validés.** Ticket [WG-18](backlog.md). `check build assemblePack` et les huit tests moteur passent sur les sources finales, ainsi que la création et la réouverture natives de Lost City. Le reçu de publication figure dans [Distribution](packwiz.md). ## Contrat de génération Minecraft **26.3-pre-2**, Java **25**, dépendances épinglées inchangées. Le mod et le pack passent à `0.1.0-alpha.15`. Un **nouveau monde Sanctuary** utilise `sanctuary:island_v15` et son journal propre `data/sanctuary-world-v15/expansions.json`. Le bouton natif **Personnaliser** conserve Petit 512, Moyen 724 par défaut et Grand 1 024. La densité du terrain, les forêts et l’hydrologie naturelle ne sont pas remplacées par cette passe urbaine. Le JAR d’essai anticipé du 9 septembre, avant publication de l’alpha.15, contenait encore les fragments dispersés. Les essais de cette nouvelle composition se font dans un **monde neuf** ; aucune réparation ou régénération des mondes créés avec ce prototype n’est exécutée. Le binaire d’essai est conservé séparément avant synchronisation de l’instance. Les mondes 12/13/14 conservent leurs codecs, paramètres, journaux, plans et rendus, même pour leurs chunks encore non générés. Le preset 14 reste enregistré mais caché dans la création. Aucun monde personnel n’est ouvert, converti ou régénéré. Les nouvelles pièces persistantes ont leurs propres identifiants : `sanctuary:lost_city_parcel_v15`, `sanctuary:lost_city_underground_v15` et `sanctuary:lost_city_support_v15`. Le biome `sanctuary:lost_city` reste utilisé : les parcelles acceptées pilotent la carte des biomes urbains et les apparitions naturelles de zombies vanilla. Les cavités gardent leurs biomes ; un égout souterrain ne transforme pas toute la colonne en biome urbain. Il n’y a ni villageois générés, ni spawner, ni classes de zombies de la future bêta. ## Aménagements Les appartements, hôtels, bibliothèques, restaurants, casernes et halls ont des usages distincts. Seuil et vestibule rejoignent un couloir, une cage d’escalier et des pièces séparées par de vraies portes. Sols, plafonds, chambres, salles d’eau, cuisines, réserves, réception, rayonnages, dortoirs, auditorium et galerie suivent le type du bâtiment. Les détails d’usure doivent préserver les passages. Le butin reste différé, avec un coffre par bâtiment. Les réseaux souterrains cherchent une descente depuis la surface, des égouts, des passages, des garages et des pool rooms. La roche et les volumes d’eau naturelle décident de leur admission. Les parties exposées demandent des appuis courts certifiés : pylônes ou chaînes réellement ancrés. Les bassins construits ont un fond, des parois et un accès ; ils ne doivent pas se vider dans les corridors. Les modules voisins ne se superposent pas. Une grande salle sèche accessible prépare une future machine d’expansion ; la machine et ses cartes ne font pas partie de cette livraison. Le retour de l’essai anticipé remplace les fragments dispersés par une grille compacte : lots, rues et carrefours sont jointifs, avec un réseau accessible depuis chaque entrée. Les routes sont dégagées sur huit blocs de hauteur ; les terrasses sont certifiées dans leur emprise et les ponts prolongent le réseau. Les sièges, charnières et appuis des lanternes sont revus. Les emplacements admissibles restent conditionnels ; aucun équipement n’est promis sur toute graine. ## Vérification reproductible Utiliser seulement les mondes de développement ignorés. Exécuter les processus Minecraft séquentiellement et faire suivre chaque création de sa réouverture, avant un autre test qui nettoie ce dossier de développement. ```sh ./gradlew :sanctuary:lostCityInteriors15Smoke :sanctuary:lostCityUnderground15Smoke --console=plain ./gradlew :sanctuary:runGameTest -PsanctuaryLostCity15Tests=true -PsanctuaryTestSeed=0 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false --console=plain ./gradlew :sanctuary:runGameTest -PsanctuaryLostCity15Tests=true -PsanctuaryExpansionReload=true -PsanctuaryTestSeed=0 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false --console=plain ./gradlew check build assemblePack -PsanctuaryTestSeed=0 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false --console=plain ``` La suite historique `-PsanctuaryLostCityTests=true` choisit explicitement la génération 14. Les suites de reprise certifiée du vide utilisent la génération 15 par défaut ; la réouverture doit être exécutée deux fois après leur création. Les certificats sont liés à leur génération : un certificat ou journal 14 ne peut pas autoriser une expansion 15. Le [contrat WG-17](testing-alpha14.md) reste applicable dans chaque journal, avec inspection stricte avant écriture. Les résultats finaux préciseront graine, version, coordonnées, pièces natives, eau après ticks, conservation après réouverture et durée des commandes. ### Compatibilité historique déjà vérifiée La création de génération 14 avec le binaire alpha.15 passe le 9 septembre 2026 (`build/alpha15-legacy14-create.log`, processus 22663, 2 min 57 s). Sur graine 0, racine 724 et extension `city_gardens` 256, les deux starts NBT, les inventaires de blocs, les coffres différés et le journal ont exactement les mêmes empreintes ou contenus que la livraison alpha.14. La réouverture du même binaire dans le processus 23083 passe (`build/alpha15-legacy14-reload.log`, 57 s), avec **38 pièces**, **5 coffres non ouverts**, le bloc témoin et le journal conservés. Cette réouverture exclut la recompilation : elle vérifie les mêmes binaires que la création, pendant le développement séparé du nouveau planner15. Les classes historiques de planification et de rendu ne sont pas modifiées. Les rapports sont conservés dans `build/alpha15-evidence/legacy14-*.json`. Le premier test moteur15 a vérifié les accès des bâtiments et réseaux, puis a échoué sur une hypothèse insuffisante de son ordonnanceur de fluides. Le test attend maintenant que les chunks et leurs entités soient prêts, observe un écoulement natif dans des témoins temporaires fermés, puis contrôle les bassins naturels après des ticks mesurés. Ces témoins sont séparés des équipements naturellement générés et supprimés avant sauvegarde. Les essais sur modèles contrôlés seront distingués des équipements effectivement générés sur terrain naturel. La validation Windows native reste à effectuer. ### Contrôles ciblés du retour d’essai anticipé Les smokes exécutés le 9 septembre passent avec les classes Minecraft exactes : les six familles d’intérieurs dans quatre orientations contrôlent la collision des portes ouvertes, le côté des dossiers des sièges et l’appui plein des lanternes (`build/alpha15-targeted-furnishings.log`). Le rendu de surface15 corrige aussi les bancs et ajoute les marches sur le sol existant, leur sommet rejoignant le niveau voisin. Dégagement des rues, volumes de protection, grande salle, boucle alternative et fondations souterraines passent dans `build/alpha15-targeted-utilities.log`. Ces essais contrôlés ne remplacent pas le scénario natif final. Le scénario de reprise certifiée du vide de génération15 passe sa création et ses deux réouvertures dans des JVM séparées : **154 chunks FULL**, tous éclairés correctement, et bloc témoin conservé. Les refus de bloc, coffre, entité ou tick présents et la conservation des régions face à une mutation étrangère passent. Rapports : `build/alpha15-evidence/void-reuse-*.json`. Ces preuves précèdent la révision compacte du seul placement urbain ; le test complet final reste exigé. ### Ville compacte : création finale vérifiée La création finale passe sur la graine **0**, île **724**, le 9 septembre 2026 : `build/alpha15-final-city-create.log`, processus **26229**, **3 min 19 s** pour les quatre smokes puis le scénario moteur. Cette durée inclut les contrôles, les prospects et la préparation d’un continent ; ce n’est pas un benchmark de chargement joueur ou de rendu. - Racine : un quartier natif au chunk **(-2, 3)**, cinq lots (immeuble, hôtel, bibliothèque, jardin et place), **33 pièces de rues/carrefours**, **52 pièces natives** avec le sous-sol. Les cinq entrées rejoignent le même réseau ; **393 sections** de rues sont traversées sur les seules rues et seuils. L’immeuble est accessible en **(-30, 252, 21)** sur cette graine. - Sous la racine : un accès, quatre collecteurs, sept passages, une pool room et une grande salle sèche. Le socle et les quatre secteurs de la salle sont accessibles depuis la trappe de surface. - Continent témoin **256**, graine **8737523517608206795**, centre **(2112, 320)** : restaurant et immeuble, réseau de rues, pont de 17 blocs, garage et pool room souterrains. **24 pièces natives** et **5 appuis souterrains** inspectés. Le pont est parcouru de **(2104, 225, 309)** à **(2120, 224, 309)**. - Les biomes urbains et le spawn naturel de zombies sont vérifiés ; aucun spawner ni villageois ajouté. Cinq coffres restent à butin différé. - Les bassins souterrains sont contrôlés après **120 ticks de monde mesurés** ; 19 témoins temporaires indépendants prouvent l’exécution native des fluides, puis sont retirés avant sauvegarde. La piscine de surface est vérifiée dans le premier monde compact, avant la dernière affectation des lots : ses **207 sources** sont conservées, et neuf cellules au-dessus des marches se remplissent normalement sans fuite (216 cellules d’eau au total). Le témoin final contient un pont court et des appuis souterrains. Les grands viaducs sur piles construites restent validés sur terrains contrôlés ; ils ne sont pas présentés comme observés dans ce monde naturel. Aucune famille de bâtiments, piscine, garage, salle ou pont n’est garantie sur chaque graine. Rapport : `build/alpha15-evidence/final-city-create.json` ; le monde compact précédent est conservé dans `compact-first-create.json`. La réouverture finale du même monde passe dans un autre processus (**26452**, `build/alpha15-final-city-reload.log`, **51 s**) : **76 pièces natives**, **5 coffres à butin différé**, **108 points de parcours intérieurs** et **5 appuis** conservés. Les sept entrées restent reliées aux rues, le bloc témoin **(-38, 252, 21)** est présent et le journal garde exactement ses octets. Rapport : `build/alpha15-evidence/final-city-reload.json`. `check build assemblePack` final passe en **2 min 6 s** le 9 septembre 2026, avec les **huit tests moteur requis** et tous les smokes, dont les quatre contrôles15 (`build/alpha15-final-check-build-pack.log`). Le JAR et le pack sont construits depuis les mêmes sources que le scénario final. Le changement reste réservé à15 ; la revue finale ne trouve aucune modification des quatre classes de planification/rendu/pièce historiques14. La release immuable `v0.1.0-alpha.15`, source `dd9c795`, et le canal `6cf54ee` sont publiés. JAR, MRpack et amorçage sont vérifiés ; deux installations isolées et deux synchronisations de la même instance Prism réussissent. Les **767** fichiers personnels et réglages suivis restent identiques. L’ancien JAR d’essai est conservé séparément ; un seul JAR Sanctuary est actif. Voir le [reçu de livraison](packwiz.md#alpha15-publiée--9-septembre-2026).