fix(simulation): lake_margin_q normalizes per basin — full-range depth gradient (T-1188)
The PR #206 eyeball caught what every numeric gate passed: the depth signal was visually flat on both test lakes (GJ1c lmq=0 across the whole basin; GJ338Bd 0-13 of 100). Two compounding causes: a fixed absolute ceiling (one body's p90 cell depth) compressing skewed depth distributions into single digits, and heightmap-pitch depth variation being sub-texel-tiny within most basins. lake_margin_q is now depth / the basin's own maximum settled depth: HydrologyResult grows basin_max_depth_scaled (computed in solve() from existing basin_cells membership, broadcast per basin), threaded through HydrologySample.basin_max_depth, normalized in lake_from_hydrology_at with a degenerate-basin epsilon guard (a genuinely uniform pond shades flat — honest, not forced). Lake EXISTENCE (filled > original) is untouched — only tone changes. Measured at district spacing: GJ1c min=0 p50=33 max=84; GJ338Bd min=8 p50=38 max=70 — full-range shore-to-deep ramps on both. No perceptual curve added: the linear per-basin ramp is already well-quartiled. project.yaml 0.4.1 -> 0.4.2 (0.4.1-tagged canvases carrying flat-lmq semantics reached real disk caches during eyeball runs and must miss). Acceptance gates green; zero golden churn (lake_margin_q not captured by either golden shape). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+4
-1
@@ -1,7 +1,10 @@
|
||||
name: The Settled Reach
|
||||
# Version scheme: 0.{phase}.{n} — phase = active Development Cascade phase (D-166).
|
||||
# Phase 4 (deterministic world generation) is active.
|
||||
version: 0.4.1
|
||||
# 0.4.1-tagged step canvases carried lake_margin_q's flat absolute-ceiling
|
||||
# semantics (pre-per-basin-normalization) and were written to real disk
|
||||
# caches during T-1188 eyeball runs — 0.4.2 forces those entries to miss.
|
||||
version: 0.4.2
|
||||
repository: settled-reach
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user