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:
2026-07-17 08:21:57 +02:00
co-authored by Claude Fable 5
parent 6aafa77583
commit aa1471069b
2 changed files with 31 additions and 31 deletions
+7 -7
View File
@@ -841,7 +841,7 @@ fn law_climate_vegetation_no_skip_temperature_sweep() {
let mut last: Option<VegetationClass> = None; let mut last: Option<VegetationClass> = None;
for t_i in (-60i32..=30).rev().step_by(5) { for t_i in (-60i32..=30).rev().step_by(5) {
let temp = Some(t_i as f32); 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 let Some(prev) = last {
if prev == VegetationClass::Forest && vc == VegetationClass::Barren { if prev == VegetationClass::Forest && vc == VegetationClass::Barren {
panic!( panic!(
@@ -861,7 +861,7 @@ fn law_climate_vegetation_no_skip_elevation_sweep() {
let moisture_q = 55; let moisture_q = 55;
let mut last: Option<VegetationClass> = None; let mut last: Option<VegetationClass> = None;
for elev_q in (0i32..=100).step_by(5) { 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 let Some(prev) = last {
if prev == VegetationClass::Forest && vc == VegetationClass::Barren { if prev == VegetationClass::Forest && vc == VegetationClass::Barren {
panic!( panic!(
@@ -898,7 +898,7 @@ fn law_climate_vegetation_full_grid_no_skip() {
for elev_q in (0i32..=100).step_by(10) { for elev_q in (0i32..=100).step_by(10) {
let mut last: Option<VegetationClass> = None; let mut last: Option<VegetationClass> = None;
for &temp in &temps_desc { 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 let Some(prev) = last {
if prev == VegetationClass::Forest && vc == VegetationClass::Barren { if prev == VegetationClass::Forest && vc == VegetationClass::Barren {
panic!( 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. // near_perennial_water=true must produce a Riparian variant in viable zones.
// Forest zone → RiparianThicket. // 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!( assert!(
matches!( matches!(
vc_forest, vc_forest,
@@ -930,7 +930,7 @@ fn law_climate_vegetation_riparian_near_perennial_water() {
); );
// Scrub zone → RiparianScrub. // 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!( assert!(
matches!( matches!(
vc_scrub, 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). // 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!( assert_eq!(
vc_arid, vc_arid,
VegetationClass::RiparianScrub, VegetationClass::RiparianScrub,
@@ -957,7 +957,7 @@ fn law_climate_vegetation_airless_always_absent() {
for moisture_q in [0, 30, 70, 100] { for moisture_q in [0, 30, 70, 100] {
for elev_q in [0, 50, 100] { for elev_q in [0, 50, 100] {
for near_water in [false, true] { 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!( assert_eq!(
vc, vc,
VegetationClass::Absent, VegetationClass::Absent,
+24 -24
View File
@@ -6,38 +6,38 @@
"voxel_sampled_districts": 64, "voxel_sampled_districts": 64,
"contrast": { "contrast": {
"moisture_q": { "moisture_q": {
"min": 32, "min": 31,
"max": 80, "max": 80,
"distinct": 49 "distinct": 48
}, },
"elev_q": { "elev_q": {
"min": 0, "min": 0,
"max": 98, "max": 100,
"distinct": 99 "distinct": 101
}, },
"slope_q": { "slope_q": {
"min": 0, "min": 0,
"max": 13, "max": 30,
"distinct": 14 "distinct": 30
}, },
"ocean_fraction_q": { "ocean_fraction_q": {
"min": 0, "min": 0,
"max": 100, "max": 100,
"distinct": 65 "distinct": 44
}, },
"morphology_zones": 9, "morphology_zones": 9,
"vegetation_classes": 3, "vegetation_classes": 4,
"terrain_materials": 4, "terrain_materials": 4,
"voxel_relief_m": 20, "voxel_relief_m": 24,
"micro_habitat_distinct": 2 "micro_habitat_distinct": 2
}, },
"coherence": { "coherence": {
"water_districts": 49, "water_districts": 46,
"water_districts_wet": 44, "water_districts_wet": 46,
"drainage_samples": 0, "drainage_samples": 0,
"drainage_monotonic": 0, "drainage_monotonic": 0,
"vegetation_samples": 64, "vegetation_samples": 64,
"vegetated_districts": 8 "vegetated_districts": 7
} }
}, },
{ {
@@ -49,32 +49,32 @@
"moisture_q": { "moisture_q": {
"min": 0, "min": 0,
"max": 20, "max": 20,
"distinct": 21 "distinct": 20
}, },
"elev_q": { "elev_q": {
"min": 0, "min": 0,
"max": 99, "max": 100,
"distinct": 100 "distinct": 101
}, },
"slope_q": { "slope_q": {
"min": 0, "min": 0,
"max": 6, "max": 15,
"distinct": 7 "distinct": 14
}, },
"ocean_fraction_q": { "ocean_fraction_q": {
"min": 0, "min": 0,
"max": 100, "max": 100,
"distinct": 65 "distinct": 38
}, },
"morphology_zones": 9, "morphology_zones": 6,
"vegetation_classes": 1, "vegetation_classes": 2,
"terrain_materials": 4, "terrain_materials": 2,
"voxel_relief_m": 19, "voxel_relief_m": 21,
"micro_habitat_distinct": 0 "micro_habitat_distinct": 0
}, },
"coherence": { "coherence": {
"water_districts": 25, "water_districts": 19,
"water_districts_wet": 22, "water_districts_wet": 19,
"drainage_samples": 0, "drainage_samples": 0,
"drainage_monotonic": 0, "drainage_monotonic": 0,
"vegetation_samples": 64, "vegetation_samples": 64,