This is a proposal to split witnesses into 2 complementary parts:
proofs, allowing for stateless clients to process just the necessary data without the merkle proofs (and thus greatly reducing network traffic) and without proving the
stateRoot, while retaining a high degree of certainty for the data being processed thanks to a new
witnessHash field in the block header (a hash of the hashes of the data and the merkle proofs) secured by the consensus layer, with the option to retrieve the proofs as well and fully validate the state transition.
The biggest motivation for this is the reduction of witness sizes, which are dominated by merkle proofs. An additional benefit might be faster stateless client execution and faster beam sync (a new-ish take on it) if the
stateRoot check is postponed (compared to constantly re-merkelizing the state trie all the way up to the top after every block).