I have basically the same question :). I was hoping to hear the opinion from more experienced riak people here.  I have not found any kind of backend contract anywhere, so matching against a specific error like bad_crc doesn't sound right.  Unless, of course, it was part of an official backend contract, in which case it would be a much better option.  In any case, even if the put crashes on every read, there is nothing in place to mark the node or vnode as useless that I know of.