The portal's air pocket is placed for real now: vanilla's fluid ticks
then flood every pocket cell connected to surrounding water while
sealed cells stay air, so the piece ends with a bounded BFS over its
own air cells from water neighbours. BlockAgeProcessor gains the
stairs/slab branches with their property-preserving mossy variants,
and horizontal facings rotate with the piece (mirror first, then
quarter turns).
Portal box match against the fixture jumps from 52.7% to 84.1%;
region parity rises to 98.047% with biomes and heightmaps exact.
Remaining box diffs trace to drip columns reading the shared decoration
stream, which is approximated per-cell.
PlaceRuinedPortalPiece runs the template through the decoded processor
stack — positional Legacy streams per cell drive the gold-to-air,
lava-to-magma, netherrack-to-magma and block-age mossiness rolls, the
features-cannot-replace guard skips protected cells, and template lava
stays when it lands in existing lava. Drip columns below the portal
draw from a documented approximation of the shared decoration stream;
spreadNetherrack is not needed for the underground setups.
The placement chain is now proven end to end: chunk (1,0) reproduces
vanilla's saved start (portal_6, CLOCKWISE_90, NONE, air pocket at
(16,12,0)) and the fixture parity ticks up to 98.033% with biomes and
heightmaps still exact. generatorVersion bumps to 23.