moisture_q was a single body constant (derive_moisture_q took only &BodyParams → 80 for every one of 2048 ocean-world districts), so vegetation/terrain/ecotones were uniform — "nothing to fuzz" (the T-1080 believability bug). - district_profile.rs: derive_moisture_q is now a body ceiling (hydrosphere+atmosphere) × per-district gradient — latitude (equator wet → pole dry), elevation (orographic/ rain-shadow), continentality (100 − ocean_fraction_q). Integer/D-010, no new plumbing (elev_q/ocean_fraction_q/latitude_deg already reach build_district_profile). Mirrors D-240's temperature model. Coefficients in ClimateConstants + climate_constants.toml [moisture_gradient] (provisional; Q-123 calibrates). Tuned so a wet body stays mostly green with drier patches and a frozen body clamps mostly barren. + gradient unit test. - region_profile.rs: region-tier moisture gets the region-latitude gradient (elevation/ continentality are district-scale). - Propagates to precipitation_class / vegetation_class / morphology_zone (all read moisture_q). D-239 §2 amended. Believability golden regenerated. Probe (Arbour @ yolo): moisture_q distinct 1 → 49 (spread 0 → 48); 5/7 → 6/7 criteria. Edict (frozen): moisture 0..20 ×21 — gradient within its low ceiling. Remaining fail (vegetation-present) is the metric dividing by all-sampled incl. water on a 2/3-ocean world — a Q-123 calibration concern, not a climate defect. clippy --all-targets -D warnings clean; 1580 lib tests + harnesses pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
81 lines
1.6 KiB
JSON
81 lines
1.6 KiB
JSON
[
|
|
{
|
|
"body_id": "GJ338Bd",
|
|
"world_seed": 13200299156134074780,
|
|
"district_count": 2048,
|
|
"voxel_sampled_districts": 64,
|
|
"contrast": {
|
|
"moisture_q": {
|
|
"min": 32,
|
|
"max": 80,
|
|
"distinct": 49
|
|
},
|
|
"elev_q": {
|
|
"min": 0,
|
|
"max": 98,
|
|
"distinct": 99
|
|
},
|
|
"slope_q": {
|
|
"min": 0,
|
|
"max": 13,
|
|
"distinct": 14
|
|
},
|
|
"ocean_fraction_q": {
|
|
"min": 0,
|
|
"max": 100,
|
|
"distinct": 65
|
|
},
|
|
"morphology_zones": 9,
|
|
"vegetation_classes": 3,
|
|
"terrain_materials": 3
|
|
},
|
|
"coherence": {
|
|
"water_districts": 46,
|
|
"water_districts_wet": 44,
|
|
"drainage_samples": 10,
|
|
"drainage_monotonic": 9,
|
|
"vegetation_samples": 64,
|
|
"vegetated_districts": 11
|
|
}
|
|
},
|
|
{
|
|
"body_id": "GJ244Ad",
|
|
"world_seed": 13200299156134074780,
|
|
"district_count": 2048,
|
|
"voxel_sampled_districts": 64,
|
|
"contrast": {
|
|
"moisture_q": {
|
|
"min": 0,
|
|
"max": 20,
|
|
"distinct": 21
|
|
},
|
|
"elev_q": {
|
|
"min": 0,
|
|
"max": 99,
|
|
"distinct": 100
|
|
},
|
|
"slope_q": {
|
|
"min": 0,
|
|
"max": 6,
|
|
"distinct": 7
|
|
},
|
|
"ocean_fraction_q": {
|
|
"min": 0,
|
|
"max": 100,
|
|
"distinct": 65
|
|
},
|
|
"morphology_zones": 9,
|
|
"vegetation_classes": 1,
|
|
"terrain_materials": 4
|
|
},
|
|
"coherence": {
|
|
"water_districts": 20,
|
|
"water_districts_wet": 17,
|
|
"drainage_samples": 6,
|
|
"drainage_monotonic": 6,
|
|
"vegetation_samples": 64,
|
|
"vegetated_districts": 0
|
|
}
|
|
}
|
|
]
|