I should be able to programmatically set permissions

(User Story, Investigate , Priority: High, Test Status: No automated tests yet , Reported By Justin du Coeur, )
Summary: That is, I want to be able to give a QL expression for something like Who Can Read. A Respectful Calm demonstrates this need vividly, where I've hacked in a relatively subtle version of this with the I Can Read Game flag, but doing it in user code isn't remotely as secure as doing it in-engine.
Note that this is High mainly for design -- I'd like to figure out how plausible it is. But it might have to be Medium to actually implement if it proves too large.
In practice, this is really a desire for a more general feature -- wanting to be able to substitute an expression for a Property value arbitrarily. This would be a huge win for Querki in principle, making the engine more powerful than damned near anything else out there.
It has real problems, though. In particular, evaluating a QL expression is a fundamentally asynchronous operation, whereas all of the calls to fetch a Property value are currently synchronous. So this would require an enormous and painful engine rewrite, and might well impose enough overhead in the general case to become A Problem. Certainly, I don't think we can solve this in the general case until we begin to compile expressions.