refactor(simulation): remove superseded skeleton String stubs (T-984)

D-229 makes BuildingPropertyTag the typed step-3 output that replaces the era/
society_profile/zone_palette String stubs on the skeleton. The tag + its derivation
(zone_type_id, flavor_ref, era/ConstructionEra, FloorExtent) all landed under T-957/
T-1006; this removes the now-dead stub fields they superseded:

- BlockSkeleton.era_modifications: Vec<EraModification> (era is per-footprint on
  BuildingPropertyTag.era now; era_cause retained as the block-level cause)
- QuarterSkeleton.society_profile: SocietyProfileRef (culture → tag.flavor_ref)
- QuarterSkeleton.zone_palette: Vec<ZoneDefinition> (zoning → tag.zone_type_id;
  distinct from FloorZone.zone_palette: ZonePalette, the real D-101 palette, kept)
- the now-orphaned `EraModification` and `SocietyProfileRef` String aliases

Kept: chunk_layout (real ChunkLayout / D-234 street network), z_band_zones (still
uses the ZoneDefinition alias), boundaries (separate stub, not D-229 scope).

cargo check + clippy -D warnings --all-targets clean; full server lib suite
1325 passed / 0 failed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-06 23:40:21 +02:00
co-authored by Claude Opus 4.8
parent 6902fdc458
commit 6e24cc98df
4 changed files with 8 additions and 13 deletions
@@ -9,3 +9,4 @@ Closed via board reconciliation (pql migration cleanup, 2026-06-06): the work
INSERT INTO ticket_history (ticket_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-986', 'description', 'zone_type_id from (ZoningType + economic_role + seed) -> one of the 31 D-142 RON files. BuildingEntryClass from (zone_type x layout_mode x prosperity) incl. Commission/Organic credential fork + U-curve degrade. era from founding_age+prosperity+seed; initial_condition from prosperity_baseline (D-217).', 'zone_type_id from (ZoningType + economic_role + seed) -> one of the 31 D-142 RON files. BuildingEntryClass from (zone_type x layout_mode x prosperity) incl. Commission/Organic credential fork + U-curve degrade. era from founding_age+prosperity+seed; initial_condition from prosperity_baseline (D-217). INSERT INTO ticket_history (ticket_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-986', 'description', 'zone_type_id from (ZoningType + economic_role + seed) -> one of the 31 D-142 RON files. BuildingEntryClass from (zone_type x layout_mode x prosperity) incl. Commission/Organic credential fork + U-curve degrade. era from founding_age+prosperity+seed; initial_condition from prosperity_baseline (D-217).', 'zone_type_id from (ZoningType + economic_role + seed) -> one of the 31 D-142 RON files. BuildingEntryClass from (zone_type x layout_mode x prosperity) incl. Commission/Organic credential fork + U-curve degrade. era from founding_age+prosperity+seed; initial_condition from prosperity_baseline (D-217).
Closed via board reconciliation (pql migration cleanup, 2026-06-06): zone_type_for / building_entry_class / construction_era / initial_condition all implemented + wired in server/src/atlas/skeleton_gen.rs; 31 D-142 zone-type RON files present. Implemented under T-957/T-1006; verified.', NULL, '2026-06-06 21:34:05', '2026-06-06 21:34:05', '2026-06-06 21:34:05', NULL, '3ec0178c5899bd68734ab0c06113fa49', 1) ON CONFLICT(hash) DO NOTHING; Closed via board reconciliation (pql migration cleanup, 2026-06-06): zone_type_for / building_entry_class / construction_era / initial_condition all implemented + wired in server/src/atlas/skeleton_gen.rs; 31 D-142 zone-type RON files present. Implemented under T-957/T-1006; verified.', NULL, '2026-06-06 21:34:05', '2026-06-06 21:34:05', '2026-06-06 21:34:05', NULL, '3ec0178c5899bd68734ab0c06113fa49', 1) ON CONFLICT(hash) DO NOTHING;
INSERT INTO ticket_history (ticket_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-984', 'status', 'backlog', 'in_progress', NULL, '2026-06-06 21:35:56', '2026-06-06 21:35:56', '2026-06-06 21:35:56', NULL, 'd7710baccc79933eece6c4be27d0b1eb', 1) ON CONFLICT(hash) DO NOTHING;
+1
View File
@@ -171,3 +171,4 @@ Closed via board reconciliation (pql migration cleanup, 2026-06-06): the work
INSERT INTO tickets (id, type, parent_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-986', 'task', 'T-957', 'zone_type_id selection + BuildingEntryClass / era / initial_condition derivation', 'zone_type_id from (ZoningType + economic_role + seed) -> one of the 31 D-142 RON files. BuildingEntryClass from (zone_type x layout_mode x prosperity) incl. Commission/Organic credential fork + U-curve degrade. era from founding_age+prosperity+seed; initial_condition from prosperity_baseline (D-217). INSERT INTO tickets (id, type, parent_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-986', 'task', 'T-957', 'zone_type_id selection + BuildingEntryClass / era / initial_condition derivation', 'zone_type_id from (ZoningType + economic_role + seed) -> one of the 31 D-142 RON files. BuildingEntryClass from (zone_type x layout_mode x prosperity) incl. Commission/Organic credential fork + U-curve degrade. era from founding_age+prosperity+seed; initial_condition from prosperity_baseline (D-217).
Closed via board reconciliation (pql migration cleanup, 2026-06-06): zone_type_for / building_entry_class / construction_era / initial_condition all implemented + wired in server/src/atlas/skeleton_gen.rs; 31 D-142 zone-type RON files present. Implemented under T-957/T-1006; verified.', 'done', 'high', NULL, 'server', 'D-229', '2026-05-25 19:11:15', '2026-06-06 21:34:05', NULL, 'eac3221ad05f8bfceee12ef66fe672d3', 1) ON CONFLICT(id) DO UPDATE SET type=excluded.type, parent_id=excluded.parent_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash); Closed via board reconciliation (pql migration cleanup, 2026-06-06): zone_type_for / building_entry_class / construction_era / initial_condition all implemented + wired in server/src/atlas/skeleton_gen.rs; 31 D-142 zone-type RON files present. Implemented under T-957/T-1006; verified.', 'done', 'high', NULL, 'server', 'D-229', '2026-05-25 19:11:15', '2026-06-06 21:34:05', NULL, 'eac3221ad05f8bfceee12ef66fe672d3', 1) ON CONFLICT(id) DO UPDATE SET type=excluded.type, parent_id=excluded.parent_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash);
INSERT INTO tickets (id, type, parent_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-984', 'task', 'T-957', 'BuildingPropertyTag + FloorExtent/FloorHeightProfile structs; replace BlockSkeleton String stubs', 'Define BuildingPropertyTag (zone_type_id, footprint, extent, entry_class, flavor_ref, era/era_cause, initial_condition) + FloorExtent{base_floor,floor_count,FloorHeightProfile::{Uniform|Variable}}. Resolves Q-104: floor_at_voxel_z / voxel_range_for_floor pure fns. Replaces era/society_profile/zone_palette/chunk_layout String stubs in generator.rs.', 'in_progress', 'high', NULL, 'server', 'D-229', '2026-05-25 19:11:10', '2026-06-06 21:35:56', NULL, '8fb7fbe395fbeb0f735effbed6a4b76f', 1) ON CONFLICT(id) DO UPDATE SET type=excluded.type, parent_id=excluded.parent_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash);
-3
View File
@@ -132,8 +132,6 @@ pub fn generate_quarter_skeleton(
z_levels, z_levels,
social_sites: Vec::new(), social_sites: Vec::new(),
access_points, access_points,
society_profile: String::new(),
zone_palette: Vec::new(),
boundaries: String::new(), boundaries: String::new(),
guarantee_audit: None, guarantee_audit: None,
} }
@@ -345,7 +343,6 @@ fn build_block_grid(
rotation_steps: 0, rotation_steps: 0,
}, },
hosted_sites: Vec::new(), hosted_sites: Vec::new(),
era_modifications: Vec::new(),
era_cause: None, era_cause: None,
density_pct: density, density_pct: density,
landmark: None, landmark: None,
+6 -10
View File
@@ -46,16 +46,12 @@ pub type WaterType = String;
pub type SpecializedFunction = String; pub type SpecializedFunction = String;
/// Cultural / architectural era tag. Stub. /// Cultural / architectural era tag. Stub.
pub type Era = String; pub type Era = String;
/// Single era modification applied to a block (conversion, overlay, hybrid). Stub.
pub type EraModification = String;
/// Landmark slot description within a block. Stub. /// Landmark slot description within a block. Stub.
pub type LandmarkSlot = String; pub type LandmarkSlot = String;
// `ChunkLayout`, `CorridorSpine`, `AccessPoint` are typed street-network structs // `ChunkLayout`, `CorridorSpine`, `AccessPoint` are typed street-network structs
// (D-234, #957) — see the "Street-network types" section below. // (D-234, #957) — see the "Street-network types" section below.
/// District context — neighboring districts, world position, system. Stub. /// District context — neighboring districts, world position, system. Stub.
pub type QuarterContext = String; pub type QuarterContext = String;
/// Society profile reference (Miri's cultural ingredients). Stub.
pub type SocietyProfileRef = String;
/// Zone definition — base palette + modifiers + zone name. Stub. /// Zone definition — base palette + modifiers + zone name. Stub.
pub type ZoneDefinition = String; pub type ZoneDefinition = String;
/// District boundary system — edge descriptors with neighbors. Stub. /// District boundary system — edge descriptors with neighbors. Stub.
@@ -1104,9 +1100,9 @@ pub struct BlockSkeleton {
pub reservation: Option<ReservationId>, pub reservation: Option<ReservationId>,
pub chunk_layout: ChunkLayout, pub chunk_layout: ChunkLayout,
pub hosted_sites: Vec<SocialSiteId>, pub hosted_sites: Vec<SocialSiteId>,
// Per-block `era: Era` (String stub) removed in #957 — construction era now // Per-block `era: Era` / `era_modifications` String stubs removed (#957, T-984) —
// lives per-footprint on `BuildingPropertyTag.era` (typed `ConstructionEra`). // construction era now lives per-footprint on `BuildingPropertyTag.era` (typed
pub era_modifications: Vec<EraModification>, // `ConstructionEra`); `era_cause` is retained as the block-level cause.
pub era_cause: Option<EraCause>, pub era_cause: Option<EraCause>,
/// Build density percentage (0 = open/empty, 100 = fully built-up). /// Build density percentage (0 = open/empty, 100 = fully built-up).
/// Integer to avoid f32 non-determinism (D-010). /// Integer to avoid f32 non-determinism (D-010).
@@ -1298,9 +1294,9 @@ pub struct QuarterSkeleton {
pub social_sites: Vec<SocialSitePlacement>, pub social_sites: Vec<SocialSitePlacement>,
pub access_points: Vec<AccessPoint>, pub access_points: Vec<AccessPoint>,
// ── Cultural / World Context ────────────────────────── // Cultural / zone String stubs (`society_profile`, `zone_palette`) removed
pub society_profile: SocietyProfileRef, // (T-984, D-229) — per-building culture and zoning now live on
pub zone_palette: Vec<ZoneDefinition>, // `BuildingPropertyTag` (`flavor_ref`, `zone_type_id`) in the district's `block_tags`.
// ── Boundary System ─────────────────────────────────── // ── Boundary System ───────────────────────────────────
pub boundaries: QuarterBoundaries, pub boundaries: QuarterBoundaries,