import math

def route_answer(answer, threshold=0.85):
    if isinstance(threshold, bool) or not isinstance(threshold, (int, float)) or not math.isfinite(threshold) or not 0 <= threshold <= 1:
        raise ValueError("Threshold must be between 0 and 1")
    allowed = {"quote", "schedule", "complaint", "other"}
    if not isinstance(answer, dict):
        return {"action": "review", "reason": "invalid-answer"}
    choice, confidence = answer.get("choice"), answer.get("confidence")
    if not isinstance(choice, str) or choice not in allowed or isinstance(confidence, bool) or not isinstance(confidence, (int, float)) or not math.isfinite(confidence) or not 0 <= confidence <= 1:
        return {"action": "review", "reason": "invalid-answer"}
    if choice == "other" or confidence < threshold:
        return {"action": "review", "reason": "uncertain-or-other"}
    return {"action": "route", "label": choice}
