State boundaries and progression¶
Permanent unlocks, selected loadouts, run upgrades and temporary effects have different lifetimes. Keep these boundaries explicit when adding features.
| State | Stage travel | Downing/revive | Final run end |
|---|---|---|---|
| Equipped weapons/abilities | Retained for run | Retained | Local selection preferences can remain |
| Core ranks/run inventory | Retained | Retained while run survives | Cleared after result snapshot |
| Temporary buffs/control/overflow | Follow effect and cleanup policy | Temporary effects are cleared/reset as authored | Cleared |
| Stage enemies/projectiles/pickups | Stage cleanup | Encounter continues while team survives | Cleared |
| Run result snapshot | Accumulates during run | Records downs/revives | Cached for results UI |
| Local FOV/sensitivity/settings | Local and persistent | Local and persistent | Persist independently |
| Permanent ability unlocks | Intended persistent progression | Intended retained | Intended retained; persistence milestone still pending |
Current menu unlock configuration falls back to all referenced definitions when no explicit unlock list is supplied. That convenience is not proof of a completed permanent-progression save system.
Do not infer permanent currency, permanent stat upgrades, retained loot or weapon progression. Those require a separate design request. Runtime mutable state belongs in player/run services, not shared ScriptableObject definitions.
Source: project progression brief, loadout state, unlock state, local loadout store, run director.