That being said, as someone who struggles with maintaining large amounts of context when I’m debugging, I’d find context-specific execution hard to follow and debug. As a concrete example, the switch to an Admin context could appear far away from the call to GetPermissions without any obvious way to figure that out. Contexts end up being a sort of global state.
If you continue with this route, it would be nice if there was a way to print out the stack of the current contexts in play and where they were set in the code.
Are contexts scoped at all? Can they be layered?