a2c5e02713
Measured in game: Cave Bail Not Op Stack No Layout = 1.58 of 1.90 classified tiles (83%), with SoleSlot and BoundaryTile never firing. The assets were correctly ticked all along. Cause: GetGeneratorTypeForChunk returns TunnelNetwork for any chunk outside the strate stack, commenting "the fallback density path will produce solid rock anyway". That comment is FALSE. GetGenerationParams for SlotIdx < 0 returns BaseDensity = -1, RoomDensity = 0, WormStrength = 0 -- a CONSTANT AIR field. IsGapChunk's "open air, NOT a gap" was the correct description. So every tile touching the open air above the world looked like a cave archetype, entered the cave branch, found no layout slot, and bailed. T1.d was never failing -- it was unreachable, behind a routing mistake in the archetype lookup that had nothing to do with the operator stack, the box verdicts, or the flags. Fix: ClassifyTile gains a fourth Z category for no-slot chunks. It sets bAnyNonCave (never enters the cave branch) and bCanSolid = false (AllAir survives), and bails to Mixed if a disturbance could add rock there -- chasms only carve, so they cannot threaten an air verdict. A tile entirely above the stack now resolves AllAir and is skipped: the majority of a surface flight, a class T1.d has never been able to prove. Classifier only -- no density value changes. Equivalences must stay bit-identical and violations must stay 0. Not built -- Jahni builds. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>