```python
def best_harvest(yields: list) -> int:
    if not isinstance(yields, list):
        raise TypeError("yields must be a list")
    if not all(isinstance(y, int) and y >= 0 for y in yields):
        raise ValueError("all yields must be non-negative integers")
    if not yields:
        return 0

    n = len(yields)
    # dp[i] = max total harvest considering days 0..i-1
    # dp[0] = 0 (no days considered)
    # dp[i] = max(dp[i-1], dp[i-2] + yields[i-1])
    dp = [0] * (n + 1)
    for i in range(1, n + 1):
        dp[i] = dp[i - 1]
        if i >= 2:
            dp[i] = max(dp[i], dp[i - 2] + yields[i - 1])
    return dp[n]
```