feat(admin): complete configurable progression
Release / release (push) Successful in 3m57s
CI / build (push) Successful in 54s

This commit is contained in:
dmg
2026-08-09 15:12:04 -04:00
parent c87d923cad
commit 8b1064b971
41 changed files with 924 additions and 626 deletions
@@ -2,7 +2,7 @@
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
status: done
---
# US-011: Configure and persist progression
@@ -11,16 +11,16 @@ As a **server operator**, I want progression behavior to be configurable and dur
## 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.
- [x] Configuration supports all qualifying materials, progression thresholds, radii, vertical flight limits, warning-buffer distance, warm-ups, cooldowns, prices, particle settings, and notification durations.
- [x] Default values match the progression requirements documented by the related user stories.
- [x] Thresholds and levels are validated as nonnegative, representable, and sequentially coherent where required.
- [x] Radii, vertical ranges, durations, and prices reject unsafe or nonsensical values.
- [x] Invalid required configuration prevents partial plugin initialization and produces a clear server log message.
- [x] 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.
- [x] Cooldowns and relocation limits use real elapsed timestamps and continue while players are offline.
- [x] State is saved safely so a failed write does not replace valid persisted state with a partial document.
- [x] Corrupt, unknown, or invalid records are handled defensively and cannot silently grant progression or privileges.
- [x] Unknown forward-compatible configuration and state fields are preserved where practical.
## Related