`Chef::ResourceReporter::ResourceReport#state` and `Chef::Resource#state` return equivalent hashes. What about calling `new_resource.state` instead of `state(new_resource)` in `for_json` (https://github.com/opscode/chef/blob/master/lib/chef/resource_reporter.rb#L55), and overriding `state` in `Chef::Resource::RegistryKey`?