Docs: DR-051 + session log — LANTERN realignment & purge bookend

DR-051 (delete-not-mothball, four-scene contract, one look, Bathynaut in),
session log w/ commit table + field notes, strip/mothball inventory status
banner (MOTHBALL rows -> DELETED), CLAUDE.md updated (scene contract, DR-051
purge bullet, LANTERN murk world bullet, save v7, retired bullets archived
07-15; 39.8 KB, under budget).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-15 16:37:14 -07:00
parent 210d307406
commit 4fa2cb0de4
5 changed files with 116 additions and 10 deletions
@@ -471,3 +471,14 @@ The project pivoted to **LANTERN** ([[DR-048_Lantern_Adoption_Full_Pivot]]; desi
- **Core loop = ready-check multi-room RUNS ★ (DR-044/045/046):** base = pure SPEND hub. `RunDirectorSystem` = sole `RunInfo` writer (`[UpdateBefore(CyclePhaseSystem)]`; nothing else in the room chain touches CyclePhase); banks Charge+retaliation once-per-`RunEpoch` on boss-clear ONLY; strips the boon band + `BoonOffer`s on exit; teleports ONLY launch-stamped `RunParticipant`s (released on Returning). Rooms spawn per `RoomEpoch`, `RoomTag`-torn-down, gate on a PORTAL (`RunLifecycle.RoomExplore=6` loot window; `PortalInteractRequest`→server `PortalCommand`). Class + per-run PREP spent at base (Staging-gated RPCs via shared `ClassSwapUtil`; prep `StatModifier` band stripped on Returning). `Health.Max` is a `[GhostField]`. Boss = server-only `BossState`/`BossAISystem` (sole boss mover). ★ **a serialized prefab bool ignores the C# initializer — flip the value in the prefab.** Feel/tuning detail → [[DR-044_Expedition_Redesign_Shipped_Demo_Polish]] · [[DR-045_Combat_Demo_Feel_Boss_Fight]] · [[DR-046_Base_Expedition_Ties_Portal_Class_Prep]].
The general gotcha "a serialized prefab bool ignores the C# initializer — flip the value in the prefab" is kept inline in CLAUDE.md (broadly applicable beyond this loop).
## 2026-07-15 — Realignment purge (DR-051): siege-era / automation / GoalProgress bullets retired from CLAUDE.md
Archived verbatim from CLAUDE.md when the systems they governed were DELETED (LANTERN realignment, DR-051).
The surviving invariants (ledger spend-in-place soft-fail; snapshot-above-early-return) stay inline in CLAUDE.md.
- **Siege-era systems ★ (EB-1/2 · END-1/2 — mothball-bound at Phase 2; these INVARIANTS outlive them):** ★ a Health-less machine silently drops OUT of the aggro snapshot (snapshot ABOVE the early-return; aggro weight <1 gets SQUARED) · spend from the ONE `GetSingletonEntity<ResourceLedger>`, afford→act else SOFT-FAIL (no cooldown-burn), read LIVE in-loop (no hoist) · `CyclePhaseSystem` = SOLE Phase writer (loss edges live there; transient flags, NOT latching) · **`RunOutcome{[GhostField] byte}` is REPLICATED — never client-derive the win/lose banner.** [[DR-032_EB1_Machines_Can_Die]] · [[DR-033_EB2_Felt_Spend_Charge_Economy]] · [[DR-034_END1_Losable_Core]] · [[DR-036_END2_Final_Siege_Win_Lose]].
- **`GoalProgress{[GhostField] int Charge,Target}`** (win meter — ≠ the `ResourceId.Charge` ammo) rides the CycleDirector ghost; buffs/tiers reuse `StatModifier``EffectiveAbilityStats`.
- **Automation (server-only):** catch-up `ProductionMath.CyclesDue` **lower-bound 0**; `RuntimePlacedTag`=player-built. [[DR-020_M7_Automation_Production_Chains]].
- (Persistence bullet, pre-v7 form): **born-correct load**`CycleDirectorSpawnSystem` stages `PendingSave` AT SPAWN; `BaseRestoreSystem` replays structures charge-free + REMAINING-tick cooldowns + HP. `SaveService.Load` = additive floor `[MinLoadableVersion=2, Current]` (old saves load; missing field 0-defaults).
- (Netcode bullet, pre-purge form): **Shared GLOBAL state (cycle phase, resource ledger, goal meter) rides an UNTAGGED ghost**, never a region-tagged one (`SetIsIrrelevant` would hide it cross-region). Resolve the ledger via its DISTINCT `ResourceLedger` tag (the multi-`StorageEntry` "multiple instances" rule — EB-2 line).