Предложение является утвердительным в начале ("You haven't finished the milk") и заканчивается вопросом, который должен подтвердить или опровергнуть сказанное. Это "question tag".
*Коррекция:* Если основное предложение "You haven't finished the milk", то тег должен быть have you?. Если основное предложение "You have finished the milk", то тег должен быть haven't you?.
*Пересмотр:* Давайте предположим, что в задании опечатка, и имеется в виду "You have finished the milk, ...?". Тогда правильный ответ будет B haven't you?.
*Альтернативная интерпретация:* Если же предложение "You haven't finished the milk" написано верно, то это эмоциональное утверждение, и тег должен быть утвердительным, но с нисходящей интонацией, выражающей удивление или недоверие, и он будет звучать как "have you?". Но такого варианта нет. Есть "did you?" (не подходит) и "haven't you?" (неправильно по правилу согласования отрицания).
*Наиболее вероятный сценарий:* Опечатка в основном предложении. Оно должно быть утвердительным, чтобы вопрос был отрицательным.
*Если предположить, что вопрос именно такой:* "You haven't finished the milk, ...?" . Самый близкий по форме и времени - B haven't you?, хотя это и нарушает правило согласования отрицания. Возможно, это намеренная проверка на исключения или нестандартные случаи, но вряд ли.
*Вывод:* Скорее всего, в исходном предложении пропущена частица "not" в вопросе, или утверждение должно было быть "You have finished...". Принимая формулировку как есть, и ища наиболее подходящий вариант по времени, B haven't you? является единственным вариантом, использующим Present Perfect.
Ответ: B haven't you?