```python
def shelf_fit(widths: list, shelf: int) -> int:
    if not isinstance(widths, list):
        raise ValueError("widths must be a list")
    if any(not isinstance(width, int) or width <= 0 for width in widths):
        raise ValueError("spine widths must be positive integers")
    if not isinstance(shelf, int) or shelf < 0:
        raise ValueError("shelf width must be a non-negative integer")
    
    if not widths:
        return 0
    
    book_widths = sorted(widths)
    shelf_left = shelf
    book_count = 0
    
    for book_width in book_widths:
        if book_width > shelf_left:
            break
        shelf_left -= book_width
        book_count += 1
    
    return book_count
```