```python
def best_harvest(yields: list) -> int:
    """Return the maximum total yield from non-consecutive days."""
    if not isinstance(yields, list):
        raise ValueError("yields must be a list")
    
    for i, y in enumerate(yields):
        if not isinstance(y, int):
            raise ValueError(f"Yield on day {i} is not an integer")
        if y < 0:
            raise ValueError(f"Yield on day {i} is negative")
    
    n = len(yields)
    if n == 0:
        return 0
    
    # dp[i] represents the max yield considering days 0..i
    # For each day i, we either:
    # 1. Don't pick day i: max yield is dp[i-1]
    # 2. Pick day i: max yield is yields[i] + dp[i-2] (since we can't pick i-1)
    
    if n == 1:
        return yields[0]
    
    # Initialize dp for first two days
    prev2 = 0  # dp[i-2]
    prev1 = yields[0]  # dp[i-1]
    
    for i in range(1, n):
        current = max(prev1, yields[i] + prev2)
        prev2 = prev1
        prev1 = current
    
    return prev1
```