feat(simulation): wire D-199 economic read-set into generation context (#954)

Layer 2 clean half. GenerateSkeleton now builds a CityGenerationContext
from a body's real economic read-set instead of stub defaults.

- New CityContextReader (server/src/atlas/city_context_reader.rs): reads
  the 6-field D-199 set (economic_role, prosperity_baseline, population,
  dominant_faction, founding_age_years, settlement_class) via one JOIN;
  prosperity_baseline derived per D-197.
- GenWorkItem::GenerateSkeleton carries the resolved context; run_work_item
  builds the real context instead of DistrictWorldState::default().
- Left at defaults (deferred, documented): dominant_bulk_class /
  dominant_production_ubiquity (#982, design-blocked), trait_selection
  (#1005), morphology_zone + Layer-3 fields (attractor placement / D-204 /
  D-214).

16 new tests; cargo check/clippy --all-targets -D warnings clean; 1279
lib tests pass; fmt clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-31 13:46:24 +02:00
co-authored by Claude Opus 4.8
parent e98a55de5f
commit a854b89aa0
3 changed files with 793 additions and 19 deletions
+1
View File
@@ -7,6 +7,7 @@ pub mod attractor_matching;
pub mod block_irregularity;
pub mod body_world_state;
pub mod cascade;
pub mod city_context_reader;
pub mod district_mix;
pub mod drainage;
pub mod features;