Files
Project-M/Docs/Vault/06_Roadmap/Lantern_Strip_Mothball_Inventory.md
kronic 4fa2cb0de4 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>
2026-07-15 16:37:14 -07:00

14 KiB
Raw Permalink Blame History

title, date, tags, permalink
title date tags permalink
LANTERN — Strip / Rework / Mothball Inventory (Phase 0.2) 2026-07-13
roadmap
lantern
salvage
inventory
phase-0
gamevault/06-roadmap/lantern-strip-mothball-inventory

LANTERN — Strip / Rework / Mothball Inventory

STATUS UPDATE 2026-07-15 (DR-051_Lantern_Realignment_Purge): every MOTHBALL-verdict row below was DELETED outright (operator overrode the reversibility stance — git history is the archive): automation chain, EB-2 turrets, END-1 Core, END-2 win/lose, CyclePhaseSystem/ThreatDirector, plus the legacy single-ability path (AbilityRef/AbilityCooldown/EffectiveAbilityStats), first-run onboarding, the old Synty biomes/scenes, and the 10 old-theme enemy prefabs. Save epoch is v7 (fresh). CharacterIdFrameKind. KEEP/REWORK rows remain the live quarry map.

Phase 0.2 of Roadmap_Lantern_Slice, adopted under DR-048_Lantern_Adoption_Full_Pivot. Inventories every current subsystem against the LANTERN vertical slice. Existing code is quarry, not foundation — this table records the salvage call, not a migration contract. The per-phase build specs (deeper technical pass) own the actual rework; this is the map.

Legend: KEEP = ports ~as-is (re-theme only). REWORK = the chassis/plumbing survives, the design on top changes. MOTHBALL = retire from the flow via baked toggles (ScheduleEnabled pattern), code + tests keep compiling for reversibility — do not delete. CUT = the design is gone from the slice (code may still be mothballed).

Headline calls (roadmap standing constraints): combat feel layer + telegraphs → KEEP; boon pipeline → REWORK into mutations; regions/relevancy, save, hub lifecycle → REWORK; sieges/economy leftovers → MOTHBALL.

Combat & player (the primary verb — strongest salvage)

Subsystem (current) Verdict LANTERN target / note
Combat feel layerCombatFeedbackSystem (+ split siblings), per-kind telegraph colours/voices/lights, hit-stop (camera punch), dash juice, damage numbers KEEP The single strongest asset. Roadmap: "combat feel layer + telegraphs: keep." Re-palette to warm/cold/lure; feed the SoD skillshot bar.
Player mover — CharacterController kinematic (collide-and-slide), PlayerControlSystem, CharacterProcessor, planar Y-lock, predicted-physics infra KEEP Suit-frames are weighted seafloor infantry (no swimming) — the top-down CC config is exactly right.
CameraPrototypeCameraRig (ARPG follow, look-ahead, zoom, shake/Hold) KEEP Unchanged; the warm-cone-in-dark framing is a camera+light job.
Projectile/melee plumbing — predicted AbilityFireSystem, ProjectileMoveSystem/ClassificationSystem, swept ProjectileDamageSystem, HealthApplyDamageSystem, MC-4 combo Step REWORK Keep the predicted-spawn + swept-hit + server-damage spine. Rebuild the ability grammar as 4-socket skillshot kits with real windups/telegraphs/aim.
AimPlayerAimSystem (client-derived), AimReticleSystem, scheme byte, soft auto-target REWORK (auto-target CUT) SoD-grade manual aim is the feel target — the in-arc soft auto-target ends. Reticle + client-derived aim plumbing reused.
Ability data modelAbilityDatabase blob, AbilityRef, StatModifier/EffectiveAbilityStats, StatRecomputeSystem (every-tick fold, rollback-correct) KEEP / REWORK The substrate for Sparks (abilities-as-organs) + mutationsStatModifier→EffectiveAbilityStats is exactly what buffs/tiers/mutations ride (Identity_Lantern).
Boon pipelineBoonEffects (SendToOwner Pierce/Fork/Chain/Flags), BoonOffer, offer dedup / dominated-protection / Family bias, KillRewardSystem, ProjectileEffectState REWORK → wild mutations The mechanic-changer architecture IS the wild-mutation warp substrate. Layer on: paced thresholds (pocket-clear beats), evaporate-at-homecoming, Tallow fix slots (1/Spark), culture library, raw-socketing. DR-047_Phase17_Boon_Overhaul_Mechanic_Changers is the salvage seed.
Enemy AI + directors — server-only EnemyAISystem (no-pathfinding collide-and-slide + Depenetrate/tangent-slide/EnemyNavState nudge backstop), RoomEnemyDirectorSystem, kind-indexed roster, Dying window, separation pass, poise byte REWORK Chassis kept (sole-position-writer, cover-aware nudge). Re-theme the roster to the bestiary: Drowners (Strider), Grindylow (Crawler leapers), Wreckers (Strider + fake-beacon/scan), Wisp-Choir (Drifter motes). Formalize spawn/rig path into CreatureKit (Workstream A2).
Boss — server-only BossState/BossAISystem (sole mover, telegraphed radial SLAM, phase-2 speed + summon), Health.Max [GhostField], party-HP scale REWORK Reused for the shelf-boss (Phase 6) — a real multi-phase skillshot fight.

World, netcode & lifecycle (the ★review-first zone)

Subsystem (current) Verdict LANTERN target / note
Regions / relevancyRegionTag{byte} (server-only), GhostRelevancy (SetIsIrrelevant), RegionRelevancySystem, untagged-global-ghost rule REWORK The seed for LANTERN's hardest idea: light-as-information relevancy (entities outside your lamp radius aren't replicated) + pocket streaming. Coordinate-region split → pocket-graph. Owned by the ★review-first Lantern_World_Model_Spike — no world code until that review passes.
Run / room lifecycleRunDirectorSystem (sole RunInfo writer), RunLifecycle/RoomExplore, RoomEpoch/RoomTag teardown, PortalCommand/PortalInteractRequest, ready-check, ClassSwapUtil, PrepCatalog/PrepPurchaseRequest REWORK Maps onto the descent lifecycle: muster at deepest lit waypoint → Bell down → pockets → Bell recall / lit-road walk home; ~3040 min cap. Rooms→pockets (seed-fresh re-knot); portal→Bell/waypoint transit; class-at-base→suit-frame pick; per-run prep kept. State machine is salvage; the pocket-graph replaces the linear route map.
Save systemSaveData (single-slot atomic JSON, versioned/additive, [MinLoadableVersion,Current]), SaveService, born-correct CycleDirectorSpawnSystem staging, BaseRestoreSystem (charge-free replay + remaining-tick cooldowns + HP) REWORK Persistence = seed-pinning: persist pinned-pocket seed + structure deltas + banked light + culture library. The versioned-additive JSON + born-correct load pattern is exactly what pinning needs — keep the HOW, change the WHAT. Hosting = "Wicks travel; worlds are saves" (Valheim contract).
Frontend / on-demand worldsGameBootstrap, WorldLauncher/SessionRunner/MainMenuController, UITK menu (Single/Host/Join), CreateClientWorld/CreateServerWorld KEEP The Valheim hosting model needs exactly this on-demand world lifecycle + menu flow. Re-skin the menu to the station.
Build / structures / gridBaseGridMath (locked coord space), StructureCatalog, co-op-atomic BuildPlaceSystem, PlacedStructure, EB-1 Health/Destructible structure loss-state REWORK Building v1 inside lit pockets (Phase 3) — the grid + atomic-placement RPC + catalog reused; structure-death (EB-1) reused for tide defense (severable fuel lines, garrisoned junctions).

Economy, resources & harvest

Subsystem (current) Verdict LANTERN target / note
Ledger + harvest — global StorageEntry ledger (ResourceLedger tag), personal InventorySlot bag (OwnerSendType.All), unified swept ResourceHarvestSystem (nodes + clutter, immortal-sink guard), G-deposit RPC REWORK Re-mean the currencies: Flame / Lumen / Gloam / Loudness / Salvage / Chum / Tallow (Identity_Lantern). Ledger + personal bag + swept harvest plumbing kept; carried-vs-banked cargo distinction is new; harvest = Lumen nodes + organ drops.
Resource ids — Ore / Aether / Biomass / Charge (ResourceId bytes) REWORK Re-meaned to the LANTERN currency set (bytes, not enums — Burst rule holds).
Inventory / equipmentEquipmentSlotAbilityRef swap, ItemDatabase blob, EquipSystem (atomic bag↔slot) REWORK / PARTIAL Already PAUSED. The slot→ability swap is the graft-into-socket substrate for Sparks; culture library (permanent per-station collection) is new.
AutomationHarvester/Conveyor/Fabricator chain, ProductionMath/ConveyorMath, deterministic offline catch-up, server-only I/O buffers MOTHBALL LANTERN cuts spatial production machinery (Identity_Lantern scope ladder). v1.0 automation is assignment-based (Tenders under the Klabautermann), not conveyors. Mothball the chain; keep the deterministic-catch-up math as reference for assignment production.

Sieges / win-condition (tower-defense layer — mothball-bound)

Subsystem (current) Verdict LANTERN target / note
Base-siege win — END-2 final siege + latching Victory/Loss, GoalReachedSystem, RunOutcome ([GhostField] server-only) MOTHBALL / REWORK-meter No base-siege win in LANTERN. GoalProgress/RunOutcome win-meter reworks into the Lamp brightness = campaign meter. The Dawn (final carry) is the v1.0 win, not the slice.
Losable Core — END-1 CoreIntegrity, CoreDamageSystem/CoreRestoreSystem, Core as AI fallback target MOTHBALL Already mothball-bound (Phase 2). No Core in LANTERN; the station is never destroyed — loss ceiling = frontier pockets, never a shelf.
Turret defense — EB-2 turret-ammo Charge, TurretFireSystem soft-fail spend, ledger-fed Fabricator mint MOTHBALL No turret auto-defense in the slice. Tide defense (defend a planted lantern / fuel line) is a different, later beat (Phase 6 scripted tide).
Cycle/phase directorCyclePhaseSystem (sole Phase writer), scheduled-siege / retaliation MOTHBALL / REWORK The auto-cycle retires. The forecast model (Siren sings tide windows in advance) replaces sprung sieges — a planned event, not an interrupt.

Presentation, world-feel & art (the LANTERN look is already here)

Subsystem (current) Verdict LANTERN target / note
Rendering identity — dark-ambient + dynamic-light-first (clean dark-Synty), DynamicLightSystem (projectile/portal/node/impact lights), per-biome dark palettes, ACES/HDR grade KEEP This is LANTERN. The rendering pipeline stops being a style and becomes the fiction (light carves playable space). Add the capture/photo grade (lifted profile for clips) + the readability law (value-first, flicker-cadence, 200px).
Atmosphere / ambientWorldAtmosphereSystem (fog/ambient cross-fade), AmbientMotionSystem (drift/sway/rustle), AmbientLifeSystem (critters + cloud shadows + weather beats) KEEP / REWORK Ports as water-column atmosphere (murk, silt-outs, plankton blooms, currents, whale-falls). Critters → light's-edge fauna; weather beats → the dark-as-weather language.
Hazards / breakables / decals / coverHazardExplosionSystem (barrels), GeyserEruptSystem (periodic AoE, born-correct tick), BlightClutter breakables, destructible cover (env-collider ghost), ScorchDecalSystem/CoverDamageSystem KEEP / REWORK The both-sides-telegraphed AoE chassis (barrels/geyser) ports to vent fields; breakables/cover → wreck/coral dressing; decals reused. BlightClutterpocket clutter (glow-flora/wrecks).
HUD / UIHudSystem (UITK, split siblings), MenuUi palette/PanelSettings/EventSystem, build palette, PauseMenuController, HudTheme SO REWORK UITK chassis + build palette kept; re-mean to Flame / Lumen / Gloam / Loudness pips + lamp-morse ping wheel. Station panels (Lamp meter, rack, graft-bench) are Phase 7.
Animation — Rukhanka 2.9 client-derived (PlayerAnimationDriveSystem, EnemyAnimationDriveSystem, ServerStripAnimationSystem), AnimatedLitShader, EnemyRigTools, humanoid muscle-clip pipeline KEEP / REWORK Client-derived pipeline kept wholesale (netcode replication OFF). Formalize into the 3 rig families (Drifter/Crawler/Strider, Workstream A1); AnimatedLitShader → the deformation-aware Skinned-Palette master shader (palette-atlas material decision).
World art assets — Synty biomes (BaseBiome Meadow / ExpeditionBiome Arid), ColliderFitTools, EnvArtTools (HDRP→URP) REWORK / QUARRY Synty = placeholder quarry during transition (Synty_Asset_Inventory). LANTERN's abyssal look is custom Blender + the 3 master shaders + one palette atlas (Workstream A0). ColliderFitTools reused for pocket collider fitting.
Dev toolingDebugOverlay/TuningConfig, DebugCommandSendSystem, class-switch, screenshot rig, validation-harness KEEP / REWORK Retooled per roadmap cross-cutting: pocket-graph visualizer, seed-pin inspector, Loudness/threat readout, descent-state overlay. The server-inject validation harness pattern stays.

What this leaves for Phase 1

The combat gym (Phase 1) can be built almost entirely from KEEP + light REWORK: player mover + camera + combat feel + projectile/melee spine + ability data model + telegraphs, with two suit-frames on the existing humanoid pipeline and 45 Sparks on the reworked boon substrate. The ★review-first items (relevancy → light-as-information, pocket streaming) are quarantined behind Lantern_World_Model_Spike and do not block the gym.