test(simulation): derivation-harness call sites + believability golden regen for coastline invention
Mechanical call-site updates (7) for the invent_primitives signature; believability golden regenerated via UPDATE_GOLDEN=1. Deltas are deliberate: slope_q/elev_q spreads widen, vegetation_classes +1 (Marine), water-districts-wet coherence reaches 46/46 and 19/19 (T-1082 class closed — classification and coastline are the same line). Reductions (ocean_fraction distinct, morphology_zones on GJ244Ad) are the eager pseudo-grid point-sampling coasts honestly instead of area-averaging them into synthetic intermediates; believability coast-sampling resolution is Q-123 calibration territory. All 37 derivation-harness law checks unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -841,7 +841,7 @@ fn law_climate_vegetation_no_skip_temperature_sweep() {
|
||||
let mut last: Option<VegetationClass> = None;
|
||||
for t_i in (-60i32..=30).rev().step_by(5) {
|
||||
let temp = Some(t_i as f32);
|
||||
let vc = derive_vegetation(temp, moisture_q, elev_q, false);
|
||||
let vc = derive_vegetation(temp, moisture_q, elev_q, false, false);
|
||||
if let Some(prev) = last {
|
||||
if prev == VegetationClass::Forest && vc == VegetationClass::Barren {
|
||||
panic!(
|
||||
@@ -861,7 +861,7 @@ fn law_climate_vegetation_no_skip_elevation_sweep() {
|
||||
let moisture_q = 55;
|
||||
let mut last: Option<VegetationClass> = None;
|
||||
for elev_q in (0i32..=100).step_by(5) {
|
||||
let vc = derive_vegetation(temp, moisture_q, elev_q, false);
|
||||
let vc = derive_vegetation(temp, moisture_q, elev_q, false, false);
|
||||
if let Some(prev) = last {
|
||||
if prev == VegetationClass::Forest && vc == VegetationClass::Barren {
|
||||
panic!(
|
||||
@@ -898,7 +898,7 @@ fn law_climate_vegetation_full_grid_no_skip() {
|
||||
for elev_q in (0i32..=100).step_by(10) {
|
||||
let mut last: Option<VegetationClass> = None;
|
||||
for &temp in &temps_desc {
|
||||
let vc = derive_vegetation(temp, moisture_q, elev_q, false);
|
||||
let vc = derive_vegetation(temp, moisture_q, elev_q, false, false);
|
||||
if let Some(prev) = last {
|
||||
if prev == VegetationClass::Forest && vc == VegetationClass::Barren {
|
||||
panic!(
|
||||
@@ -919,7 +919,7 @@ fn law_climate_vegetation_riparian_near_perennial_water() {
|
||||
// near_perennial_water=true must produce a Riparian variant in viable zones.
|
||||
|
||||
// Forest zone → RiparianThicket.
|
||||
let vc_forest = derive_vegetation(Some(18.0), 60, 20, true);
|
||||
let vc_forest = derive_vegetation(Some(18.0), 60, 20, true, false);
|
||||
assert!(
|
||||
matches!(
|
||||
vc_forest,
|
||||
@@ -930,7 +930,7 @@ fn law_climate_vegetation_riparian_near_perennial_water() {
|
||||
);
|
||||
|
||||
// Scrub zone → RiparianScrub.
|
||||
let vc_scrub = derive_vegetation(Some(5.0), 30, 50, true);
|
||||
let vc_scrub = derive_vegetation(Some(5.0), 30, 50, true, false);
|
||||
assert!(
|
||||
matches!(
|
||||
vc_scrub,
|
||||
@@ -941,7 +941,7 @@ fn law_climate_vegetation_riparian_near_perennial_water() {
|
||||
);
|
||||
|
||||
// Hyper-arid Barren zone + perennial water → RiparianScrub oasis (D-239 §8).
|
||||
let vc_arid = derive_vegetation(Some(20.0), 3, 10, true);
|
||||
let vc_arid = derive_vegetation(Some(20.0), 3, 10, true, false);
|
||||
assert_eq!(
|
||||
vc_arid,
|
||||
VegetationClass::RiparianScrub,
|
||||
@@ -957,7 +957,7 @@ fn law_climate_vegetation_airless_always_absent() {
|
||||
for moisture_q in [0, 30, 70, 100] {
|
||||
for elev_q in [0, 50, 100] {
|
||||
for near_water in [false, true] {
|
||||
let vc = derive_vegetation(None, moisture_q, elev_q, near_water);
|
||||
let vc = derive_vegetation(None, moisture_q, elev_q, near_water, false);
|
||||
assert_eq!(
|
||||
vc,
|
||||
VegetationClass::Absent,
|
||||
|
||||
@@ -6,38 +6,38 @@
|
||||
"voxel_sampled_districts": 64,
|
||||
"contrast": {
|
||||
"moisture_q": {
|
||||
"min": 32,
|
||||
"min": 31,
|
||||
"max": 80,
|
||||
"distinct": 49
|
||||
"distinct": 48
|
||||
},
|
||||
"elev_q": {
|
||||
"min": 0,
|
||||
"max": 98,
|
||||
"distinct": 99
|
||||
"max": 100,
|
||||
"distinct": 101
|
||||
},
|
||||
"slope_q": {
|
||||
"min": 0,
|
||||
"max": 13,
|
||||
"distinct": 14
|
||||
"max": 30,
|
||||
"distinct": 30
|
||||
},
|
||||
"ocean_fraction_q": {
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"distinct": 65
|
||||
"distinct": 44
|
||||
},
|
||||
"morphology_zones": 9,
|
||||
"vegetation_classes": 3,
|
||||
"vegetation_classes": 4,
|
||||
"terrain_materials": 4,
|
||||
"voxel_relief_m": 20,
|
||||
"voxel_relief_m": 24,
|
||||
"micro_habitat_distinct": 2
|
||||
},
|
||||
"coherence": {
|
||||
"water_districts": 49,
|
||||
"water_districts_wet": 44,
|
||||
"water_districts": 46,
|
||||
"water_districts_wet": 46,
|
||||
"drainage_samples": 0,
|
||||
"drainage_monotonic": 0,
|
||||
"vegetation_samples": 64,
|
||||
"vegetated_districts": 8
|
||||
"vegetated_districts": 7
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -49,32 +49,32 @@
|
||||
"moisture_q": {
|
||||
"min": 0,
|
||||
"max": 20,
|
||||
"distinct": 21
|
||||
"distinct": 20
|
||||
},
|
||||
"elev_q": {
|
||||
"min": 0,
|
||||
"max": 99,
|
||||
"distinct": 100
|
||||
"max": 100,
|
||||
"distinct": 101
|
||||
},
|
||||
"slope_q": {
|
||||
"min": 0,
|
||||
"max": 6,
|
||||
"distinct": 7
|
||||
"max": 15,
|
||||
"distinct": 14
|
||||
},
|
||||
"ocean_fraction_q": {
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"distinct": 65
|
||||
"distinct": 38
|
||||
},
|
||||
"morphology_zones": 9,
|
||||
"vegetation_classes": 1,
|
||||
"terrain_materials": 4,
|
||||
"voxel_relief_m": 19,
|
||||
"morphology_zones": 6,
|
||||
"vegetation_classes": 2,
|
||||
"terrain_materials": 2,
|
||||
"voxel_relief_m": 21,
|
||||
"micro_habitat_distinct": 0
|
||||
},
|
||||
"coherence": {
|
||||
"water_districts": 25,
|
||||
"water_districts_wet": 22,
|
||||
"water_districts": 19,
|
||||
"water_districts_wet": 19,
|
||||
"drainage_samples": 0,
|
||||
"drainage_monotonic": 0,
|
||||
"vegetation_samples": 64,
|
||||
|
||||
Reference in New Issue
Block a user