--- type: User Story title: "US-011: Configure and persist progression" description: Give operators validated configuration and durable, defensive storage for all base progression behavior. status: in-progress --- # US-011: Configure and persist progression As a **server operator**, I want progression behavior to be configurable and durable so that the plugin remains predictable across restarts and server changes. ## Acceptance criteria - [ ] Configuration supports all qualifying materials, progression thresholds, radii, vertical flight limits, warning-buffer distance, warm-ups, cooldowns, prices, particle settings, and notification durations. - [ ] Default values match the progression requirements documented by the related user stories. - [ ] Thresholds and levels are validated as nonnegative, representable, and sequentially coherent where required. - [ ] Radii, vertical ranges, durations, and prices reject unsafe or nonsensical values. - [ ] Invalid required configuration prevents partial plugin initialization and produces a clear server log message. - [ ] UUID-keyed state persists latest known names, base locations, counters, levels, relocation times, teleport times, visitor cooldowns, navigation preferences, flight preferences, boss-bar preferences, and visitor settings. - [ ] Cooldowns and relocation limits use real elapsed timestamps and continue while players are offline. - [ ] State is saved safely so a failed write does not replace valid persisted state with a partial document. - [ ] Corrupt, unknown, or invalid records are handled defensively and cannot silently grant progression or privileges. - [ ] Unknown forward-compatible configuration and state fields are preserved where practical. ## Related - [US-001: Unlock and establish Base I](us-001-unlock-and-establish-base.md) - [US-003: Expand the base](us-003-expand-the-base.md) - [US-010: Administer player progression](us-010-administer-player-progression.md) - [US-012: Build and release the plugin](us-012-build-and-release-plugin.md)