feat(tamer): limit custody to one mob
This commit is contained in:
@@ -6,6 +6,18 @@ description: Chronological record of material decisions affecting the Spigot Tyr
|
||||
|
||||
# Spigot Tyrant Design Log
|
||||
|
||||
## 2026-08-21 — Single-mob Tamer custody completed
|
||||
|
||||
- Completed US-007 with an authoritative one-mob custody limit that rejects a second capture before inventory, entity, or state mutation and tells the Tamer to release the held mob first.
|
||||
- Releasing or dropping custody permits another capture immediately, while durable state preserves the limit across logout, restart, recovery, and repeated interaction.
|
||||
- Legacy excess custody retains the oldest mob and safely releases extras; offline or failed releases remain durable for periodic retry.
|
||||
- Verified domain rejection, listener ordering, legacy reconciliation, compiler warnings, tests, and packaging with `./gradlew clean check jar`.
|
||||
|
||||
## 2026-08-21 — Single-mob Tamer custody started
|
||||
|
||||
- US-007 begins a test-first one-mob custody limit for active Tamers.
|
||||
- New captures will be rejected before mutation while custody exists, and legacy excess custody will be released safely with failed releases retained for retry.
|
||||
|
||||
## 2026-08-21 — Former Tamer automatic release completed
|
||||
|
||||
- Completed US-004 and US-007 so every captured mob is released automatically after its holder loses the Tamer class, regardless of the class-removal path.
|
||||
|
||||
@@ -28,10 +28,16 @@ As the **Tamer**, I want to capture a mob and release it elsewhere so that I can
|
||||
- [x] If the former Tamer is offline or no safe release location is available, release is deferred without losing the captured mob.
|
||||
- [x] A deferred release is retried when the former Tamer next logs in or reaches a safe location.
|
||||
- [x] Tyrant death, class reassignment, opt-out, administration, and other Tamer-removal paths use the same release behavior.
|
||||
- [x] A Tamer can hold custody of at most one captured mob at a time.
|
||||
- [x] Attempting to capture another mob while one is held is rejected before changing either mob.
|
||||
- [x] The Tamer is told to release the currently captured mob before capturing another.
|
||||
- [x] Releasing or dropping the held mob immediately allows another capture.
|
||||
- [x] The one-mob limit survives logout, restart, item recovery, and repeated or concurrent interaction.
|
||||
- [x] If legacy state contains multiple captured mobs, extras are safely released when possible; custody is retained until release succeeds so no mob is lost.
|
||||
|
||||
## Validation
|
||||
|
||||
Automated tests verify that only former Tamers are processed, offline custody remains deferred, successful releases remove only their corresponding custody records, and failed releases remain available for retry. The complete `./gradlew clean check jar` lifecycle passes.
|
||||
Automated tests verify that only former Tamers are processed, offline custody remains deferred, successful releases remove only their corresponding custody records, and failed releases remain available for retry. Additional tests verify pre-mutation rejection of a second capture, clear player guidance, and safe reduction of legacy excess custody. The complete `./gradlew clean check jar` lifecycle passes.
|
||||
|
||||
## Related
|
||||
|
||||
|
||||
Reference in New Issue
Block a user