```python
from typing import List

def crate_fill(items: int, crates: int) -> List[int]:
    if items < 0:
        raise ValueError("Number of items must be non-negative")
    
    if crates == 0:
        return []
    
    avg = items // crates
    remainder = items % crates
    
    sizes = [avg] * crates
    for i in range(remainder):
        sizes[i] += 1
    
    return sizes

def crate_total(sizes: List[int]) -> int:
    if not sizes:
        return 0
    
    total = sum(sizes)
    
    # Ensure the total is a non-negative integer
    if total < 0:
        raise ValueError("Total size must be non-negative")
    
    return total
```