It should be relatively easy to show why a .cbor control is unsatisfied. We have access to the validation trace of the encoded CBOR, so it's just a matter of adding a new constructor to ValidationTrace that stores that trace and then adding that constructor to the trace when the validation on encoded CBOR fails.
data ValidationTrace (v :: Validity) where
...
InvalidCborControl :: CTree ValidatorStageSimple -> ValidationTrace IsInvalid -> ValidationTrace IsInvalid