Item-duplication audit: bank, drop/pickup, equip, death-drop, Make-X #46

Closed
opened 2026-06-11 14:06:24 +00:00 by sickday · 0 comments
Owner

Problem

Trade is dupe-hardened (journal, deterministic completer, offer-time removal). The other classic RS dupe vectors have not been audited:

  • Bank deposit / withdraw (incl. withdraw-X, withdraw-all)
  • Drop / pickup (ground items, ownership + timers)
  • Equip / unequip (slot swap, stack merge)
  • Death-drop (item ordering, protect-item, gravestone)
  • Make-X skilling flows (mid-action inventory changes)

Task

Trace each surface for: item created without removal, removal without creation, race between two actions on the same slot, and inventory-full edge cases. Add property/regression tests where dupes are plausible.

Acceptance

  • Each surface has a documented dupe-safety argument + a test for the risky path.

Part of the Security & Data-Integrity Hardening epic.

## Problem Trade is dupe-hardened (journal, deterministic completer, offer-time removal). The other classic RS dupe vectors have **not** been audited: - Bank deposit / withdraw (incl. withdraw-X, withdraw-all) - Drop / pickup (ground items, ownership + timers) - Equip / unequip (slot swap, stack merge) - Death-drop (item ordering, protect-item, gravestone) - Make-X skilling flows (mid-action inventory changes) ## Task Trace each surface for: item created without removal, removal without creation, race between two actions on the same slot, and inventory-full edge cases. Add property/regression tests where dupes are plausible. ## Acceptance - Each surface has a documented dupe-safety argument + a test for the risky path. Part of the Security & Data-Integrity Hardening epic.
sickday added this to the v1 milestone 2026-06-11 14:11:16 +00:00
sickday self-assigned this 2026-06-11 14:11:26 +00:00
sickday added this to the v1 project 2026-06-11 14:11:48 +00:00
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
BlackLobster/Server#46
No description provided.