```python
def run_reservoir(capacity: int, start: int, ticks: list) -> dict:
    if not isinstance(capacity, int) or capacity <= 0:
        raise ValueError("Capacity must be a positive integer")
    if not isinstance(start, int) or start < 0 or start > capacity:
        raise ValueError("Start level must be an integer from 0 to the capacity")
    if not all(isinstance(tick, list) and len(tick) == 2 for tick in ticks):
        raise ValueError("Each tick must be a two-item pair")
    if any(not isinstance(value, int) or value < 0 for tick in ticks for value in tick):
        raise ValueError("Inflow and demand must be non-negative integers")

    level = start
    spilled = 0
    shortfall = 0
    served = 0

    for inflow, demand in ticks:
        level += inflow
        if level > capacity:
            spilled += level - capacity
            level = capacity
        served += min(level, demand)
        level -= min(level, demand)
        if level < demand:
            shortfall += demand - level
            level = 0

    return {"level": level, "spilled": spilled, "shortfall": shortfall, "served": served}
```