My view is that mixing desired and observed state is a problem in several of our APIs. So far, most of our discussions have focused on the node object APIs on the server, where, say, the run_list lives alongside ohai data. That particular case can be completely solved at the API layer without changing any part of the Chef DSL or framework.