From c6f0bd6da287a26d024f9b8192e1a5ef413551b1 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 25 Jul 2026 03:14:52 +0200 Subject: [PATCH] fix(simulation): thread body_params through DeriveStepCanvas terrain derive 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 --- server/src/atlas/gen_queue.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/src/atlas/gen_queue.rs b/server/src/atlas/gen_queue.rs index 9c0d3f966..0f27e1928 100644 --- a/server/src/atlas/gen_queue.rs +++ b/server/src/atlas/gen_queue.rs @@ -1183,10 +1183,12 @@ fn run_work_item( // on body_id alone, so a step-canvas request and a legacy // district_window request for the same body share one // ~45 ms run_layer1 re-derive, never pay it twice. + // body_params threads the real moisture ceiling into the + // T-1184 hydrology solve (merge seam resolution). let (l1, ta) = terrain_cache .lock() .unwrap() - .get_or_derive(body_id, &working); + .get_or_derive(body_id, &working, Some(body_params.as_ref())); let climate = ClimateConstants::default(); let raw = crate::atlas::step_canvas::build_step_canvas( *body_seed,