feat(simulation): intra-class micro-habitat mosaic v1 — vegetation/water texture (T-1084, D-246)
Sub-chunk mosaic that modulates the D-228 axes into a spatially-coherent,
relief/moisture-conditioned mosaic of micro-habitats within a terrain class —
the fix for the aliveness probe's uniform "Wetland 100%".
- seed.rs: SeedDomain::VoxelMosaic = 12 (append-only; pinned-discriminant guard)
- voxel.rs: five new D-228 axis values (Vegetation::{Meadow,Deadfall,Lichen},
TerrainMaterial::{Hardpan,Scree}); the per-family-gated mosaic pass
- detail_scatter.rs: voxel_mosaic() selection field (~8-64 m band)
- atlas/mosaic.rs: surface-class palette + integer-basis-point weighted selection
with moisture-affinity conditioning; temperate/native baseline palettes
- data/mosaic_constants.toml: source-canonical palette mirror
- believability.rs: micro_habitat_distinct metric + D-245 intra-class criterion
v1 scope (D-246-faithful): modulates vegetation + water only, in the vegetated
classes (Wetland/Forest/Grassland), so the D-239 §8 lithology law is untouched;
water is gated on the T-1040 has_active_channel hydrology rule. Material variants
(hardpan/scree) and the extreme classes are a §8-aware follow-up; the biome-aware
palette variants (T-1085 vocab) extend the baseline before generation.
Goldens regenerated (believability + derivation). Full server suite green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -115,6 +115,11 @@ pub enum SeedDomain {
|
||||
/// keyed by a single constant id (one field per body). Distinct domain so the
|
||||
/// relief lattice can never correlate with the per-voxel terrain or cover streams.
|
||||
VoxelRelief = 11,
|
||||
/// Sub-chunk micro-habitat mosaic selection field (T-1084, D-246). A body-global,
|
||||
/// position-keyed value-noise field at ≈8–64 m wavelengths (one field per body,
|
||||
/// keyed by a single constant id). Distinct domain so the mosaic-selection lattice
|
||||
/// can never correlate with the relief, cover, or per-voxel terrain streams.
|
||||
VoxelMosaic = 12,
|
||||
}
|
||||
|
||||
/// A position in the deterministic seed tree (D-224).
|
||||
@@ -275,6 +280,7 @@ mod tests {
|
||||
assert_eq!(SeedDomain::Voxel as u64, 9);
|
||||
assert_eq!(SeedDomain::Cover as u64, 10);
|
||||
assert_eq!(SeedDomain::VoxelRelief as u64, 11);
|
||||
assert_eq!(SeedDomain::VoxelMosaic as u64, 12);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user