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;
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,