64d0e11821606562140ade5e02c91e9d32f1805e
No code changed. AUDIT-2026-07.md only: §C2's "SUSPECTED, NOT PROVEN" sub-item becomes "CONFIRMED BY READING", with the four links of the chain and where each one is in the source. THE CHAIN, checked instead of believed 1. GetGenerationParams' Gradient arms compute Alpha = 1 - DistFromBottom / EffectiveBlend, where DistFromBottom = ChunkCoord.Z - Slot.BottomChunkZ. Alpha is therefore a function of chunk Z WITHIN the slot -- so two chunk Zs in the same strate really do get different params. The top boundary mirrors it. 2. They differ in exactly the fields that place rooms: Lerp expands VF_STRATE_PARAM_FIELDS, which lists RoomSpacing, RoomDensity, MinRoomRadius, MaxRoomRadius, RoomHeightRatio, RoomShapeVariety, SDFBlendRadius, CaveWarpStrength and the tunnel fields -- every input BuildChunkCache reads. 3. It is the DEFAULT: TransitionType = Gradient, TransitionBlendChunks = 2. Two chunk-Z layers with distinct params at each end of every strate, out of the box. 4. StrateIndex cannot save it: the memo resolves the SLOT index from the band centre, identical for every chunk Z in the slot, and the cache key's XY box does not change as a worker walks down a column. No rebuild happens. So a worker that builds (X,Y,Z1) then (X,Y,Z2) in one strate evaluates the second chunk against the room list baked from the first chunk's params. WHY IT MATTERS MORE THAN A SEAM The result depends on which chunk that worker happened to build first. That is a window-invariance break (ARCHITECTURE 8.4), not a cosmetic one, and in multiplayer two peers can generate different geometry for the same chunk from the same seed -- a direct 2.6.1 violation on the ORIGINAL path. WHY NOTHING CAUGHT IT The test fixture sets TransitionType = Hard on every strate deliberately, so that "which archetype owns this chunk" stays unambiguous. That switches the blend off entirely. The one configuration the tests never build is the default one. NOT FIXED HERE, deliberately: this is the switch path, and the fix (fold a params CRC + LayoutVersion into the SDF cache key, exactly as FRoomGraphSource already does) is a behaviour change to live generation that Jahni should land with a build in front of him. The operator stack does not inherit the bug. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Description
No description provided
Languages
C++
97.6%
C
2.3%
C#
0.1%