Our guard was one-directional. FullResolutionPathIsAir catches the false
POSITIVE -- coarse says joined, reality says walled -- which is the
dangerous direction for safety, so we built it first. The opposite error
was unguarded: a corridor narrower than SampleStep falls between sample
points and vanishes, so connected regions read as separate. That is
exactly what a network of narrow vertical shafts would fake at step 4.
Refinement sweep, radius held constant for the controls:
step 4 / r256 NOT_CONNECTED 57 comp largest .119 458,752 cells
step 4 / r192 NOT_CONNECTED 32 comp largest .220 258,048
step 2 / r192 NOT_CONNECTED 27 comp largest .220 2,064,384
step 4 / r128 NOT_CONNECTED 20 comp largest .291 114,688
step 1 / r128 NOT_CONNECTED 11 comp largest .303 7,340,032
Both fixed-radius pairs stayed negative, so neither the step nor the
radius explains it. At one-voxel sampling the arrival and departure
mouths are still in different air components.
VerticalShafts is a live primordial-law violation: a player descends into
it and cannot reach its exit.
NotConnected is renamed NotConnectedAtThisResolution and documents its own
limit at the declaration, so a bare negative can never again be read as
proof. CoarseLied names one direction; this names the other.
Sweep split into VoxelForge.Generation.StrateConnectivityRefinement so the
fast test stays fast. 4.4 s. The MaxCells refusal path was exercised and
still refuses.
Build clean, 19 succeeded / 0 warnings / 0 failed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bp7FxoQcSoiuhxjuLr6aBM