The keyspace pattern, which is where the mistake is

The command permissions get the attention and the key pattern is where the actual isolation lives, because a service with write access to every key is not isolated by having fewer verbs.

> ACL SETUSER worker on >pw ~queue:* +@all

# looks scoped. is not:
#   ~queue:*  matches queue:jobs AND queue:../anything
#   there is no path semantics. it is a glob on a flat namespace.

# several patterns are allowed, and that is the correct shape
> ACL SETUSER worker ~queue:* ~locks:worker:* +@all

The flat namespace is the thing to internalise: keys have no hierarchy, the colon is a convention, and a pattern is a glob rather than a prefix with meaning. A service that needs two unrelated prefixes gets two patterns rather than a looser one. ACL DRYRUN arrives in 7.0 and until then the only way to check a pattern is to authenticate as the user and try, which is worth doing before the rollout rather than after.