def require_columns(columns: set[str], required: set[str]) -> None:
    missing = required - columns
    if missing:
        raise ValueError(f"Missing columns: {sorted(missing)}")
