feat(quests): add atomic block delivery completion
Release / release (push) Successful in 2m26s
CI / build (push) Successful in 1m6s

This commit is contained in:
dmg
2026-09-05 07:48:59 -04:00
parent a09a0a3163
commit 9344390599
25 changed files with 1087 additions and 49 deletions
@@ -2,7 +2,7 @@
type: User Story
title: "US-005: Deliver blocks and complete a quest"
description: Let a player deliver requested blocks at a quest board and receive the escrowed reward.
status: backlog
status: done
---
# US-005: Deliver blocks and complete a quest
@@ -11,17 +11,17 @@ As a **player**, I want to deliver requested blocks to a quest board so that I r
## Acceptance criteria
- [ ] An active quest offers a Complete Quest action through every registered board.
- [ ] Completion requires the delivering player to possess the full requested quantity of the exact block material.
- [ ] Successful completion removes the requested blocks from the delivering player's inventory and stores them as a claim for the issuer.
- [ ] Successful completion gives the exact escrowed reward items to the delivering player.
- [ ] Reward items that do not fit are dropped safely at the delivering player's feet with a clear message.
- [ ] The issuer is notified immediately when online or on their next login when offline that delivered blocks can be claimed at a quest board.
- [ ] When player commands are enabled, `/quests complete <quest>` provides equivalent behavior with contextual autocomplete.
- [ ] Completion is atomic and exactly one player can complete a quest, including simultaneous attempts.
- [ ] Validation or persistence failure does not consume delivered blocks, release rewards, or change quest state.
- [ ] Completed quests are no longer shown as active or completable.
- [ ] Automated tests verify inventory validation, settlement, overflow, notifications, rollback, and concurrent completion protection.
- [x] An active quest offers a Complete Quest action through every registered board.
- [x] Completion requires the delivering player to possess the full requested quantity of the exact block material.
- [x] Successful completion removes the requested blocks from the delivering player's inventory and stores them as a claim for the issuer.
- [x] Successful completion gives the exact escrowed reward items to the delivering player.
- [x] Reward items that do not fit are dropped safely at the delivering player's feet with a clear message.
- [x] The issuer is notified immediately when online or on their next login when offline that delivered blocks can be claimed at a quest board.
- [x] When player commands are enabled, `/quests complete <quest>` provides equivalent behavior with contextual autocomplete.
- [x] Completion is atomic and exactly one player can complete a quest, including simultaneous attempts.
- [x] Validation or persistence failure does not consume delivered blocks, release rewards, or change quest state.
- [x] Completed quests are no longer shown as active or completable.
- [x] Automated tests verify inventory validation, settlement, overflow, notifications, rollback, and concurrent completion protection.
## Related