```python
def tile_renders(requests: list, fresh_for: int, size: int) -> list:
    if not (isinstance(fresh_for, int) and fresh_for > 0):
        raise ValueError("fresh_for must be a positive whole number")
    if not (isinstance(size, int) and size > 0):
        raise ValueError("size must be a positive whole number")

    cache = {}
    renders = []

    for tick, tile in requests:
        if tick < max(cache.keys()) if cache else float('-inf'):
            continue

        while len(cache) >= size:
            oldest_tile = min(cache.items(), key=lambda x: (x[1][0], x[0]))[0]
            del cache[oldest_tile]

        cache[tile] = (tick + fresh_for, tick)
        renders.append([tick, tile])

    return renders
```