```python
"""Replay tile requests against a size-limited cache of fresh renders."""


def tile_renders(requests: list, fresh_for: int, size: int) -> list:
    for count in (fresh_for, size):
        if isinstance(count, bool) or not isinstance(count, int) or count < 1:
            raise ValueError("fresh_for and size must be positive integers")
    held = {}
    renders = []
    for tick, name in requests:
        if tick in held:
            rendered_tick, rendered_name = held[tick]
            if rendered_tick >= tick:
                continue
            renders.append([rendered_tick, rendered_name])
            del held[tick]
        if len(held) >= size:
            oldest_tick, oldest_name = sorted(held.items(), key=lambda x: x[0])[0]
            del held[oldest_tick]
        held[tick] = (tick, name)
        renders.append([tick, name])
    return renders
```