v0.20.0 — Settlement era & wealth (shanty ↔ skyscraper)
Settlement era + wealth — the shanty ↔ skyscraper axis
Two new 0..1 SettlementConfig knobs (mapwright-original, extending the age/era/wealth idea onto towns):
wealth— scales plot size (poor = cramped tiny lots ↔ rich = large estates/blocks) and the ward-kind mix (poor = slum-heavy ↔ rich = more noble/temple wards).era— sets block regularity (ancient = organic, jittered ↔ modern = near-grid rectangular blocks).
from mapwright import SettlementGenerator, SettlementConfig, SeededRNG
shanty = SettlementGenerator(SeededRNG(5)).generate(95, 95,
SettlementConfig(population=14000, wealth=0.08, era=0.3))
metro = SettlementGenerator(SeededRNG(5)).generate(95, 95,
SettlementConfig(population=14000, wealth=0.92, era=0.95))Both knobs are neutral at 0.5, so the default output is byte-identical — the shaping factors are exact identities and the neutral ward bag equals the previous fixed mix. They reshape the RNG draws' magnitudes rather than desyncing the stream.
New presets shantytown and metropolis; the README gallery shows both. Purely additive; serialises via to_dict / json_schema.
This is the imaginative-realms Layout/Geometry descriptor in concrete form.
322 tests pass; ruff clean; existing settlement gallery byte-identical.