```python
def menu_pick(dishes: list, budget: int) -> list:
    """Return dish names costing no more than budget, sorted by price then name."""
    if not isinstance(dishes, list):
        raise ValueError("dishes must be a list")
    if not isinstance(budget, int):
        raise ValueError("budget must be an integer")
    
    # Filter dishes that are within budget
    affordable = []
    for dish in dishes:
        # Each dish is expected to be a tuple or list of (name, price)
        # Based on typical patterns, we assume (name, price) structure
        if len(dish) != 2:
            raise ValueError("Each dish must be a tuple of (name, price)")
        name, price = dish
        if price <= budget:
            affordable.append((name, price))
    
    # Sort by price (cheapest first), then by name (alphabetical) for ties
    affordable.sort(key=lambda x: (x[1], x[0]))
    
    # Extract and return just the names
    return [name for name, price in affordable]
```