"""Validate the world seeds the way the C++ loaders do at boot — but headless, in under a second, so a biome/flora edit can be checked before a 20-minute cook. Cross-checks data/seeds/biomes.yml <-> world_templates.yml <-> flora.yml against the authoritative asset resolution in game/Source/AgeOfEons/Private/World/AoEFlora.cpp. ERRORS are the things that make a real boot FAIL LOUD (AoEWorldTemplateLibrary / FAoEFloraManifest::ValidateAssets Fatal/checkf): * a biome_set names a biome absent from biomes.yml * a biome exists but its `eras:` omits the era that names it * an era's biome_set has no marine/freshwater biome (oceans/lakes can't land) * a flora palette names an asset slug that resolves to NOTHING (no on-disk external_assets/flora// folder AND not in ExplicitMeshPaths()) WARNINGS degrade gracefully (the world still boots, it just looks poorer): * a biome in a biome_set has no flora palette -> default scatter (bare-ish) * an era has no flora block at all * a flora palette targets a biome the era's biome_set doesn't include (dead data) Exit code: 1 if any ERROR, else 0. Run: python tools/validate_world_seeds.py """ import re import sys