```python
from typing import List

def menu_pick(dishes: List[tuple], budget: int) -> List[str]:
    """
    Returns the names of dishes costing no more than a budget, cheapest first.
    Dishes at the same price are ordered by name.
    A budget below every dish yields an empty list.
    """
    if budget < 0:
        raise ValueError("Budget cannot be negative.")
    
    # Sort dishes by price, then by name
    sorted_dishes = sorted(dishes, key=lambda x: (x[1], x[0]))
    
    # Filter dishes that cost no more than the budget
    affordable_dishes = [dish[0] for dish in sorted_dishes if dish[1] <= budget]
    
    
    return affordable_dishes
```