fix(simulation): address believability-stack review — all findings processed

Stack review (Hoshe + Tyre) of T-1083+T-1082+T-1080. Every finding fixed or disposed:

- believability.rs sample_indices: replace the rejection-sampling loop (could stall
  when n ≈ take) with deterministic partial Fisher-Yates — O(n), guaranteed
  termination, distinct, sorted (Hoshe+Tyre).
- believability.rs drainage proxy: exclude water-body districts (all elev 0, no banks)
  and require both wet + dry voxels — they were passing vacuously and inflating the
  metric (Hoshe).
- believability.rs read_cities: log skipped malformed rows instead of dropping silently
  (Hoshe).
- voxel.rs: add the 3 WaterBody zones to all_families_no_panic_at_extreme_positions +
  fix the "7 families" comment (Hoshe).
- climate_constants.toml: bold warning that [moisture_gradient] is not loaded until
  T-1032 — tune ClimateConstants::default() (Tyre).
- Q-123: record the per-zone "water renders wet" threshold + the land-relative
  vegetation-present denominator as calibration items (Tyre + the open 7th criterion).
- T-1083 ticket: note the sampling-fix attribution (landed in the T-1082 commit).

Believability golden regenerated (sampler + drainage fixes moved the metrics).
clippy --all-targets -D warnings clean; 1580 lib tests + harness pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-28 17:41:03 +02:00
co-authored by Claude Opus 4.8
parent bb5069aa13
commit f771c9ce4e
7 changed files with 99 additions and 31 deletions
+4
View File
@@ -87,6 +87,10 @@ subsurface_ice = 0.95
# ---------------------------------------------------------------------------
[moisture_gradient]
# !! NOT LOADED AT RUNTIME until T-1032 wires TOML loading. The LIVE source is
# !! ClimateConstants::default() in server/src/atlas/district_profile.rs — editing
# !! these values here alone has NO effect (the file header's "tune: edit here"
# !! does not yet apply to this table). Change BOTH, or change the Rust default.
# Per-district moisture spatial gradient (T-1080, D-239 §2). Integer points
# subtracted from the body's hydrosphere moisture *ceiling* so the field varies
# across the body instead of being a single constant (the bug: moisture_q = 80 for