Legend World Vertical Slice 003 — Living World Era Transition
Status: Draft v1.0 — logic and contracts only, no implementation. Two items flagged below require confirmation. Role boundary: Logic, contracts, invariants, and tests only — no code, no database migrations, no UI, no Supabase/Lovable access attempted. Authoritative inputs: LS-SPEC-005 (v1.2), LS-SPEC-006 (v1.4, §4.2–§4.4, §5, §8.2), DL-SPEC-014 (v1.4), LEGEND-WORLD-VERTICAL-SLICE-001 (v2.0), LEGEND-WORLD-VERTICAL-SLICE-002 (v1.1), DL-MASTER (v1.1). Scope discipline: Strictly stadium/world architecture — a franchise in Living World mode, world-driven change as Visual Year advances. No league, marketplace, valuation, or unrelated system content.
0. Two Flagged Items — Confirmation Required
0.1 Visual Year ↔ Season Mapping (Undefined Until Now)
Gap within LS-SPEC-006's own existing ownership (§4.2), not a missing-owner situation. §4.2 establishes that Living World "progresses with the dynasty" but never defines the actual mapping between simulated season number and Visual Year, or the cadence of transitions.
Recommendation (built on below, not yet adopted): a direct 1:1 mapping — visual_year = founding_visual_year + (current_season_number − founding_season_number). Every season advances Visual Year by exactly one year; there is no separate "transition cadence" to configure. This is the simplest rule consistent with DL-SPEC-004's existing season structure (one simulated season already represents one in-universe year) and requires no new configuration surface.
0.2 Landmark Status Transition Rule (Undefined Until Now)
Gap within LS-SPEC-006's own existing ownership (§4.3), not a missing-owner situation. §4.3 states landmarks "change status over time" in Living World mode but never defines when or why a specific landmark transitions — this is required for determinism (§4).
Recommendation (built on below, not yet adopted): a deterministic function of (landmark_id, architecture_family, provenance_tier, years_since_construction) — each architecture family carries a configured typical lifespan (LS-SPEC-005 data, not invented here); a landmark deterministically transitions status (active → renovated or demolished) the season its age first exceeds that lifespan, with the specific outcome (renovated vs. demolished) itself a fixed, documented function of the same inputs — never a runtime random draw.
1. Flow, Mapped to Owning Spec
1. Franchise in Living World mode, season advances → DL-MASTER (season progression, existing)
2. Era transition check (§0.1's mapping) → LS-SPEC-006 §4.2 (existing, made concrete here)
3. Re-query Legend Knowledge at new visual_year → LS-SPEC-005 (existing), via LS-SPEC-006 §1.1a/§1.1 (one door, unchanged)
4. Landmark persistence evaluation (§0.2's rule) → LS-SPEC-006 §4.3 (existing, made concrete here)
5. World Manifest regeneration → LS-SPEC-006 §6/§8.2 (existing, cache key naturally handles this)
6. Stadium itself: explicitly NOT auto-changed → DL-SPEC-014 (existing ownership, boundary restated in §3 below)
7. Persistent era history → LS-SPEC-005 §10 / LS-SPEC-006 (existing, composed)
2. Stage 1–2 — Season Advance and Era Transition Check
2.1 Contract
EraTransitionCheck -- evaluated once per season, per franchise in living_world mode
franchise_id: string
current_season_number: integer
founding_season_number: integer
founding_visual_year: integer
computed_visual_year: integer -- per §0.1's mapping
transition_required: boolean -- true whenever computed_visual_year differs from the
-- franchise's last-applied visual_year (always true under
-- the 1:1 mapping, since it advances every season)
2.2 Frozen Era Franchises Are Explicitly Unaffected
A franchise in frozen_era mode (LS-SPEC-006 §4.1) never runs this check — its Visual Year is fixed at founding and this entire document does not apply to it. Stated explicitly to avoid any ambiguity about scope.
3. Stage 3 — Re-Querying Legend Knowledge, and the World/Stadium Boundary
3.1 One-Door Rule, Unchanged
Re-querying settlement/era data at the new visual_year goes through LS-SPEC-006's existing interfaces exactly as initial creation does (LS-SPEC-006 §1.1, §1.1a) — this document introduces no new access path.
3.2 The Stadium Itself Is Never Auto-Changed — Explicit Invariant
This is the most important boundary in this document. Living World mode changes the surrounding world (zones, architecture, landmarks) automatically as Visual Year advances — it does not, and must never, automatically change the franchise's own stadium. The stadium's StadiumState (VERTICAL-SLICE-002 §2.1) is modified only through an owner-proposed, DL-SPEC-014-governed Facility Commitment (VERTICAL-SLICE-002) — never as a side effect of an era transition. This preserves LS-SPEC-006 §5.2's existing principle (franchise success drives development, world facts never unilaterally alter what a franchise owns) extended into the temporal dimension: time passing is a world fact, not a franchise-altering event on its own. See §7 INV-1.
4. Stage 4 — Landmark Persistence Evaluation
4.1 Contract
LandmarkTransitionEvaluation -- evaluated per landmark in the franchise's settlement, per era transition
landmark_id: string
architecture_family_id: string
provenance_tier: ProvenanceTier
years_since_construction: integer
outcome: 'unchanged' | 'renovated' | 'demolished' -- per §0.2's deterministic rule
4.2 Determinism (§0.2 Restated as a Formal Requirement)
Given identical inputs, the same landmark always produces the same outcome at the same years_since_construction — extending LS-SPEC-005 §14 INV-6 and LS-SPEC-006 §2.2a/§6.4 through this evaluation. No two runs of this evaluation against identical world state may diverge.
4.3 The Franchise's Own Stadium Is Excluded From This Evaluation
Per §3.2 — LandmarkTransitionEvaluation runs against the surrounding world's landmarks only, never against the franchise's own stadiums record, which is explicitly out of scope for automatic transition under any circumstance.
5. Stage 5 — World Manifest Regeneration
5.1 Always Regenerates, No New Mechanism Needed
A visual_year change is, by construction, a cache-key change under LS-SPEC-006 §8.2's existing (settlement_id, visual_year, site_id, orientation_bucket) key — every era transition is naturally a cache miss and triggers fresh generation without requiring any change to the caching contract. This document introduces no new caching logic.
5.2 What the New Manifest Reflects
The regenerated WorldManifest reflects: the new visual_year's era-appropriate asset availability (LS-SPEC-005 §3.4, unchanged logic, new year), and §4's landmark transition outcomes for that settlement. The franchise's own venue_footprint (§3.2) is passed through unchanged in the new VenueWorldRequest unless a separate, owner-initiated Facility Commitment has also changed it — these are two independent triggers for a new request, not conflated.
6. Stage 6 — Persistent Era History
6.1 What's Recorded
Each era transition's LandmarkTransitionEvaluation results are recorded per-settlement (LS-SPEC-005 §10's persistence discipline — never deleted, only appended), building a queryable history of how a settlement's landmarks changed across the eras any franchise has visited it during. This is settlement-level history (LS-SPEC-005's), distinct from franchise-level stadium history (DL-SPEC-014 §9.3/§10, VERTICAL-SLICE-002 §10), which remains entirely unaffected by this document.
7. Invariants
- INV-1: A franchise's own
stadiumsrecord is never modified by an era transition — only by an explicit, owner-initiated Facility Commitment (VERTICAL-SLICE-002). This is the formal statement of §3.2. - INV-2:
frozen_erafranchises never run any part of this document's evaluation (§2.2). - INV-3: Landmark transition outcomes are fully deterministic — identical
(landmark_id, architecture_family_id, provenance_tier, years_since_construction)always produces an identicaloutcome(§4.2). - INV-4: An era transition always produces a fresh
VenueWorldRequest/WorldManifestcache lookup — no era-transitioned world is ever presented from a stale, prior-era cached manifest. - INV-5: Visual Year for a Living World franchise strictly increases by exactly one per season, per §0.1's confirmed mapping — never skips, never reverses.
8. Acceptance Tests
| Test | Validates |
|---|---|
Advance a Living World franchise one season; confirm visual_year increases by exactly 1 |
§0.1, INV-5 |
Advance a Frozen Era franchise one season; confirm no EraTransitionCheck runs |
§2.2, INV-2 |
Advance a season and confirm the franchise's own stadiums record is byte-identical before/after, with no stadium_renovation_history entry created |
§3.2, INV-1 |
Run LandmarkTransitionEvaluation twice against identical world state |
Identical outcome both times — INV-3 |
Advance a season and confirm a new VenueWorldRequest is issued even when no landmark transitions occur |
§5.1, INV-4 |
| Advance a franchise from 1920 to 1948 across 28 seasons and confirm architecture-family availability differs appropriately at each queried year (per LS-SPEC-005 §3.4's region-scoped era rules, unchanged) | §5.2, integration with existing era-integrity logic |
9. Explicit Non-Goals
This document does not address: mid-dynasty Frozen Era ↔ Living World mode switching (LS-SPEC-006 §4.4 already flags this as an unaddressed future feature, unchanged here), franchise-level financial effects of an aging/changing settlement (DL-SPEC-008's territory, untouched), or any owner-facing UI for viewing era history. Strictly the deterministic world-transition logic and its boundary against stadium state.
10. Recommended Next Steps
- Confirm §0.1 (Visual Year mapping) and §0.2 (landmark transition rule) — both are load-bearing for this entire document.
- Once confirmed, the core stadium/world vertical slice trio (creation, facility commitment, era transition) is complete. Remaining stadium/world territory not yet given engineering-ready contracts: DL-SPEC-014's still-unconfirmed concessions/parking revenue link to DL-SPEC-008 (flagged since DL-SPEC-014 v1.0, never resolved), and the DL-SPEC-014 §2.1 stale cross-reference flagged in this session's consistency check — both smaller than a full vertical slice, better handled as targeted fixes than new documents.