The T-1184 merge seam: TerrainAnalysisCache::get_or_derive gained a body_params parameter (real moisture ceiling for the hydrology solve); the DeriveStepCanvas arm now passes its own body_params so step-canvas requests get the same hydrology-carrying TerrainAnalysis the legacy DeriveWindow path does. Acceptance gate + window goldens green post-merge. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>