Enum ItemOperationFailureReason
Why the server refused an item operation. Deliberately coarse.
public enum ItemOperationFailureReason : byte
Fields
The server declined the operation. Covers every validation failure: bad slot, locked slot, dead character, out-of-range banker, destination full, item not where the client thought it was.
The server's async worker queue was saturated when the operation was persisted.
TREAT THIS AS "OUTCOME UNKNOWN", NOT AS "DID NOT HAPPEN".
EnqueuePersistencenever discards work — a false return means it ran on the thread-pool fallback instead of the worker — so the server-side mutation has in fact been committed and written. What is missing is only the acknowledgement. A client that reverts its optimistic change on this reason will disagree with the server until the next login; it should request a full container refresh instead. Paired withServerBusyBroadcast.The request arrived faster than the per-connection ingress debounce allows, or an identical request is still in flight. The client should release its pending lock and may retry.
No reason given.
Remarks
These are UI hints, not diagnostics. A reason must never let a client distinguish states it is not otherwise entitled to know about, so there is no "that slot is empty on the server" or "no such character" value here — everything the server declines for a validation reason collapses into Rejected.