--- type: User Story title: "US-006: Configure and persist Leaf" description: Provide validated configuration and durable, defensive storage for Leaf behavior. status: done --- # US-006: Configure and persist Leaf As a **server operator**, I want Leaf settings and player state to be validated and durable so that protection remains predictable across restarts. ## Acceptance criteria - [x] Configuration supports the global enabled state, Resistance and Strength levels, leaf prefix, onboarding duration, and player-facing messages. - [x] Resistance strength defaults to level I and accepts only Minecraft Resistance levels I through V. - [x] Strength defaults to level I and accepts only Minecraft Strength levels I through V. - [x] Runtime changes made through `/leaf enabled` and `/leaf effect` are persisted for subsequent restarts. - [x] UUID-keyed player state persists the latest known name, saved opt-in choice, administrative lock, and first-join timestamp. - [x] Date-times use RFC 3339 UTC notation with a `Z` suffix. - [x] State is saved safely so that a failed write does not replace valid persisted state with a partial document. - [x] Invalid required configuration prevents partial plugin initialization and produces a clear server log message. - [x] Corrupt or invalid player records are handled defensively and cannot silently grant protection or privileges. - [x] Removing Leaf-managed Resistance or Strength does not remove a distinct corresponding effect that Leaf does not own when the API provides enough information to distinguish it. - [x] A temporary external Resistance or Strength effect is preserved instead of overwritten, and Leaf restores its configured effect after the external effect ends. - [x] The leaf prefix remains visible while an external effect temporarily replaces a Leaf-managed effect. - [x] Unknown forward-compatible configuration and player-state fields are preserved where practical. ## Related - [US-001: Opt into Leaf protection](us-001-opt-into-leaf-protection.md) - [US-004: Introduce new players to Leaf](us-004-introduce-new-players-to-leaf.md) - [US-005: Administer Leaf](us-005-administer-leaf.md) - [US-007: Build and release Leaf](us-007-build-and-release-leaf.md)