docs(design): define Leaf user stories

This commit is contained in:
dmg
2026-08-10 17:49:02 -04:00
commit aa6300fa23
10 changed files with 241 additions and 0 deletions
@@ -0,0 +1,32 @@
---
type: User Story
title: "US-005: Administer Leaf"
description: Give administrators command-based control over global and per-player Leaf behavior.
status: backlog
---
# US-005: Administer Leaf
As a **server administrator**, I want to control Leaf globally and per player so that I can support players, prevent misuse, and suspend protection for server events.
## Acceptance criteria
- [ ] Administrative commands require `leaf.admin`, which server operators receive by default.
- [ ] `/leaf enabled <on|off>` globally enables or disables Leaf.
- [ ] Global disablement immediately suppresses Leaf-managed Resistance, prefixes, and onboarding reminders without erasing player opt-in choices.
- [ ] Global enablement immediately restores protection and prefixes for eligible online opted-in players.
- [ ] `/leaf player <name|uuid> status` reports the player's identity, saved opt-in choice, active-protection state, lock state, and first-join time.
- [ ] `/leaf player <name|uuid> enabled <on|off>` changes the player's saved opt-in choice and immediately reconciles their online effect and prefix.
- [ ] `/leaf player <name|uuid> locked <on|off>` controls whether that player can change their own saved choice.
- [ ] A locked player receives a clear explanation when `/leaf on` or `/leaf off` is denied.
- [ ] PvP-triggered opt-out remains authoritative even for a locked player.
- [ ] Player targets resolve online names, previously known names, and UUIDs without confusing two players who used the same name.
- [ ] `/leaf strength <1-5>` changes the live Resistance level and immediately updates protected online players.
- [ ] Administrative autocomplete is permission-aware and suggests valid subcommands, known player targets, properties, levels, and `on` or `off` values for the current argument position.
- [ ] Every successful mutation reports exactly what changed, and invalid requests make no partial changes.
## Related
- [US-001: Opt into Leaf protection](us-001-opt-into-leaf-protection.md)
- [US-002: Relinquish protection when attacking](us-002-relinquish-protection-when-attacking.md)
- [US-006: Configure and persist Leaf](us-006-configure-and-persist-leaf.md)