We are doing some unchecked type assertions that could cause a panic with bad record data. We can use temporary types to decode into to get an actual error we can return.
We should also move the individual record decoding to that object, but we need to be able to get a constructor's CBOR bytes.