```python
def cheapest_pass_plan(trip_days: list, passes: list) -> dict:
    if not trip_days or not passes:
        return {"total": 0, "purchases": []}
    
    for day in trip_days:
        if not isinstance(day, int) or day <= 0:
            raise ValueError("Trip days must be positive integers")
    
    if any(trip_days[i] >= trip_days[i + 1] for i in range(len(trip_days) - 1)):
        raise ValueError("Trip days must be strictly increasing")
    
    for pass_ in passes:
        if not isinstance(pass_, dict) or "span" not in pass_ or "cost" not in pass_:
            raise ValueError("Passes must be mappings with 'span' and 'cost'")
        
        span = pass_["span"]
        cost = pass_["cost"]
        
        if not isinstance(span, int) or span <= 0:
            raise ValueError("Span must be a positive integer")
        
        if not isinstance(cost, (int, float)) or cost < 0:
            raise ValueError("Cost must be a non-negative number")
    
    n = len(trip_days)
    dp = [float('inf')] * (n + 1)
    dp[0] = 0
    purchases = [[] for _ in range(n + 1)]
    
    for i in range(1, n + 1):
        for pass_ in passes:
            span = pass_["span"]
            cost = pass_["cost"]
            if trip_days[i - 1] >= trip_days[i - span]:
                if dp[i - span] + cost < dp[i]:
                    dp[i] = dp[i - span] + cost
                    purchases[i] = purchases[i - span].copy()
                    purchases[i].append([trip_days[i - span], span])
    
    return {"total": dp[n], "purchases": purchases[n]}
```