Fr0zka c188ee8262 docs: OPSTACK-DECOMPOSITION.md — the per-archetype op breakdown (Q1 + Q2)
All 8 archetypes read line by line and broken into field source / combiners /
detail modifiers / structural post, with every FStrateGenerationParams field
traced to the op that will own it.

Three findings that change the sequencing:

- The op contract needs an SDF channel alongside density. Rooms, pits and
  chimneys are SmoothMin'd in SDF space before a single carve, and three of the
  four SDF archetypes add roughness to the SDF rather than to density. A
  single-channel Eval can only overwrite, which is also why cross-source
  SmoothUnion -- 'a maze inside a mountain that looks like it belongs' -- is not
  expressible without it. Recommended before the Maze port; not applied, it is
  Jahni's call.

- Worm tunnels are why TunnelNetwork can never skip a tile. A fielded 3D-noise
  carve with no bounds forces CarveOnly everywhere, killing AllSolid for the
  most-used archetype. But its amplitude is trivially bounded by WormStrength,
  so a scalar cap recovers deep-rock skipping -- suggests one numeric bound
  belongs in Phase 2, not Phase 3 as the plan has it.

- Disturbances already carry lattice bounds that ClassifyTile discards (it only
  tests ChasmDensity > 0 strate-wide). Making them ops with real Identity tests
  is a tile-skipping win for SurfaceWorld available independently of everything
  else.

Q2 param audit: every field claimed except WaterLevelRelative, which is a
render/water property misfiled in the density struct and Lerp'd across strate
boundaries. Also flags three op names that mean different things in the cave and
surface structs and will collide the moment ops become assets.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 02:04:00 +02:00
tmp
2026-07-26 02:11:11 +02:00
S
Description
No description provided
6.6 MiB
Languages
C++ 97.6%
C 2.3%
C# 0.1%