Files
spigot-tyrant/design/user-stories/us-010-handle-inactivity-and-selection.md
T
dmg a195658be4
Release / release (push) Successful in 2m19s
CI / build (push) Successful in 1m0s
feat(roles): maintain inactive and pending roles
2026-08-14 22:50:43 -04:00

29 lines
1.6 KiB
Markdown

---
type: User Story
title: "US-010: Handle inactivity and pending selections"
description: Replace absent or unconfirmed role holders using recently active eligible players.
status: done
---
# US-010: Handle inactivity and pending selections
As a **participant**, I want inactive central roles to be replaced fairly so that the game does not stall around absent players.
## Acceptance criteria
- [x] A Tyrant or Vigilante who has not logged in for 48 unpaused hours loses the position.
- [x] Random candidates are drawn from eligible opted-in players who logged in during the preceding 24 hours.
- [x] The Tyrant is always excluded from Vigilante selection.
- [x] A previous role holder is excluded when another eligible candidate exists and may be reused only as a fallback.
- [x] Tyrant inactivity ends the reign, clears all assignments, and invokes normal random Tyrant succession followed by Vigilante selection.
- [x] Vigilante inactivity clears Followers and rerolls only the Vigilante position.
- [x] An offline randomly selected candidate must log in within 24 unpaused hours to confirm the assignment.
- [x] An unconfirmed selection expires and rerolls automatically under the same eligibility rules.
- [x] Selection remains vacant and retries periodically when no valid candidate exists.
- [x] Candidate selection cannot assign conflicting roles or choose an opted-out player, including during concurrent joins and deaths.
## Related
- [Tyrant game state machine](../concepts/game-state-machine.md)
- [Inform players and manage participation](us-011-inform-and-manage-participation.md)