Finishes T-984. Per D-229, BuildingPropertyTag is 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.
Found via /whats-next + Si refinement, which also surfaced that T-985/T-986 were already implemented (drift) — those were reconciled to done on main separately.
Removed (dead, unread)
BlockSkeleton.era_modifications: Vec<EraModification> — era is per-footprint on BuildingPropertyTag.era now; era_cause retained as the block-level cause
## Summary
Finishes **T-984**. Per **D-229**, `BuildingPropertyTag` is 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.
Found via `/whats-next` + Si refinement, which also surfaced that **T-985/T-986 were already implemented** (drift) — those were reconciled to `done` on main separately.
## Removed (dead, unread)
- `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` (D-232)
- `QuarterSkeleton.zone_palette: Vec<ZoneDefinition>` — zoning → `tag.zone_type_id` (D-142)
- the now-orphaned `EraModification` and `SocietyProfileRef` String aliases
## Kept (real, consumed — NOT stubs)
- `chunk_layout: ChunkLayout` (D-234 street network)
- `FloorZone.zone_palette: ZonePalette` (D-101 palette — distinct from the removed Vec stub)
- `z_band_zones` (still uses the `ZoneDefinition` alias)
- `boundaries: QuarterBoundaries` (separate stub, not in D-229 scope)
## Verification
- `cargo check` + `cargo clippy --all-targets -D warnings` clean
- full server lib suite: **1325 passed / 0 failed**
- Net: 8 insertions, 13 deletions across generator.rs + skeleton_gen.rs
🤖 Generated with [Claude Code](https://claude.com/claude-code)
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>
Review: t984-skeleton-stub-cleanup → main (type: code) — APPROVED ✅
Tyre (architecture) + Hoshe (QA), clean first pass, no change requests.
Tyre (Architecture): APPROVE
D-229 names exactly era/society_profile/zone_palette/chunk_layout as the stubs BuildingPropertyTag replaces, with exact substitutions (era→ConstructionEra, culture→flavor_ref, zoning→zone_type_id). Kept fields correctly distinguished — chunk_layout (D-234), FloorZone.zone_palette: ZonePalette (D-101, distinct from the removed Vec stub), z_band_zones + the retained ZoneDefinition alias, boundaries (out of D-229 scope); era_cause rightly retained as the block-level cause. No serialization-format risk (D-85 saves are Phase 5+).
Hoshe (QA): APPROVE
Removal complete across struct defs, construction sites, and the whole codebase (remaining grep hits are explanatory comment tombstones). ZoneDefinition alias retained + still used by z_band_zones. cargo check + clippy -D warnings + cargo test --lib all clean: 1325 passed / 0 failed. No comments.
Verdict: APPROVED
## Review: t984-skeleton-stub-cleanup → main (type: code) — APPROVED ✅
Tyre (architecture) + Hoshe (QA), clean first pass, no change requests.
### Tyre (Architecture): APPROVE
D-229 names exactly `era`/`society_profile`/`zone_palette`/`chunk_layout` as the stubs `BuildingPropertyTag` replaces, with exact substitutions (era→ConstructionEra, culture→flavor_ref, zoning→zone_type_id). Kept fields correctly distinguished — `chunk_layout` (D-234), `FloorZone.zone_palette: ZonePalette` (D-101, distinct from the removed Vec stub), `z_band_zones` + the retained `ZoneDefinition` alias, `boundaries` (out of D-229 scope); `era_cause` rightly retained as the block-level cause. No serialization-format risk (D-85 saves are Phase 5+).
### Hoshe (QA): APPROVE
Removal complete across struct defs, construction sites, and the whole codebase (remaining grep hits are explanatory comment tombstones). `ZoneDefinition` alias retained + still used by `z_band_zones`. cargo check + clippy -D warnings + cargo test --lib all clean: **1325 passed / 0 failed**. No comments.
### Verdict: APPROVED
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Finishes T-984. Per D-229,
BuildingPropertyTagis 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.Found via
/whats-next+ Si refinement, which also surfaced that T-985/T-986 were already implemented (drift) — those were reconciled todoneon main separately.Removed (dead, unread)
BlockSkeleton.era_modifications: Vec<EraModification>— era is per-footprint onBuildingPropertyTag.eranow;era_causeretained as the block-level causeQuarterSkeleton.society_profile: SocietyProfileRef— culture →tag.flavor_ref(D-232)QuarterSkeleton.zone_palette: Vec<ZoneDefinition>— zoning →tag.zone_type_id(D-142)EraModificationandSocietyProfileRefString aliasesKept (real, consumed — NOT stubs)
chunk_layout: ChunkLayout(D-234 street network)FloorZone.zone_palette: ZonePalette(D-101 palette — distinct from the removed Vec stub)z_band_zones(still uses theZoneDefinitionalias)boundaries: QuarterBoundaries(separate stub, not in D-229 scope)Verification
cargo check+cargo clippy --all-targets -D warningsclean🤖 Generated with Claude Code
Review: t984-skeleton-stub-cleanup → main (type: code) — APPROVED ✅
Tyre (architecture) + Hoshe (QA), clean first pass, no change requests.
Tyre (Architecture): APPROVE
D-229 names exactly
era/society_profile/zone_palette/chunk_layoutas the stubsBuildingPropertyTagreplaces, with exact substitutions (era→ConstructionEra, culture→flavor_ref, zoning→zone_type_id). Kept fields correctly distinguished —chunk_layout(D-234),FloorZone.zone_palette: ZonePalette(D-101, distinct from the removed Vec stub),z_band_zones+ the retainedZoneDefinitionalias,boundaries(out of D-229 scope);era_causerightly retained as the block-level cause. No serialization-format risk (D-85 saves are Phase 5+).Hoshe (QA): APPROVE
Removal complete across struct defs, construction sites, and the whole codebase (remaining grep hits are explanatory comment tombstones).
ZoneDefinitionalias retained + still used byz_band_zones. cargo check + clippy -D warnings + cargo test --lib all clean: 1325 passed / 0 failed. No comments.Verdict: APPROVED
Pull request closed