decision
The current decision — a SINGLE volatile read, so Decision.allowed and Decision.reason are coherent (no torn read where a caller sees allowed==false but a stale/flipped reason).
The current decision — a SINGLE volatile read, so Decision.allowed and Decision.reason are coherent (no torn read where a caller sees allowed==false but a stale/flipped reason).