Looks like refine_key only captures options that are ever marked as correct---i.e. that appear at least once in the row_key.
math_char = math
math_char[,-1] = apply(math_char[,-1], 2, as.character)
math_char[2, 2] = "other option"
test_that("refine_key catches all response options", {
refined_key = QME:::refine_key(math_key, math_char)
expect_true("other option" %in% refined_key$response)
})