feat(participation): add opt-out and role status
Release / release (push) Successful in 2m15s
CI / build (push) Successful in 58s

This commit is contained in:
dmg
2026-08-14 22:55:43 -04:00
parent a195658be4
commit 96c0c0014c
22 changed files with 542 additions and 33 deletions
+11
View File
@@ -6,6 +6,17 @@ description: Chronological record of material decisions affecting the Spigot Tyr
# Spigot Tyrant Design Log
## 2026-08-14 — Participation completed
- Completed US-011 with `/tyrant status`, `optout`, `optin`, and confirmed `relinquish` flows plus comprehensive join messages for lifecycle, roles, classes, abilities, and cooldowns.
- Opt-out clears ordinary classes and Follower membership, persists until the player explicitly opts back in, and enforces the configurable seven-day unpaused waiting period.
- Central role holders must safely relinquish first; Tyrant relinquishment performs full succession and Vigilante relinquishment performs a normal Vigilante reroll.
- Updated all assignment and candidate paths to exclude opted-out players and verified status, persistence, cleanup, cooldown, and relinquishment behavior with the Gradle suite.
## 2026-08-14 — Participation implementation started
- US-011 begins with test-first opt-out/opt-in state, seven-day re-entry gating, safe role relinquishment guidance, and complete join status messages.
## 2026-08-14 — Role maintenance completed
- Completed US-010 with configurable periodic role maintenance, exact 48-hour inactivity handling, and 24-hour recently-active candidate filtering.
@@ -2,7 +2,7 @@
type: User Story
title: "US-011: Inform players and manage participation"
description: Tell players their current place in the game and let unassigned players opt out.
status: backlog
status: done
---
# US-011: Inform players and manage participation
@@ -11,15 +11,15 @@ As a **player**, I want to understand my status and control my eligibility so th
## Acceptance criteria
- [ ] On join, a player is told the game status and their role, class, subclass, abilities, and relevant cooldowns.
- [ ] An unassigned opted-in player is told that they are eligible and shown the opt-out command.
- [ ] An opted-out player is told when they may opt back in.
- [ ] An unassigned player can opt out through a command.
- [ ] Opting out removes an ordinary class or Follower assignment immediately; the Tyrant and Vigilante must relinquish through a safe role command before opting out.
- [ ] Opted-out players cannot be randomly selected, recruited, or assigned a class.
- [ ] A player cannot opt back in until seven days have elapsed by default.
- [ ] The opt-out duration is configurable, uses unpaused elapsed time, and survives restart.
- [ ] Participation commands are idempotent and clearly report current status and remaining time.
- [x] On join, a player is told the game status and their role, class, subclass, abilities, and relevant cooldowns.
- [x] An unassigned opted-in player is told that they are eligible and shown the opt-out command.
- [x] An opted-out player is told when they may opt back in.
- [x] An unassigned player can opt out through a command.
- [x] Opting out removes an ordinary class or Follower assignment immediately; the Tyrant and Vigilante must relinquish through a safe role command before opting out.
- [x] Opted-out players cannot be randomly selected, recruited, or assigned a class.
- [x] A player cannot opt back in until seven days have elapsed by default.
- [x] The opt-out duration is configurable, uses unpaused elapsed time, and survives restart.
- [x] Participation commands are idempotent and clearly report current status and remaining time.
## Related