```python
def run_patrol(width: int, start: int, moves: list) -> dict:
    """
    Walks through a corridor defined by width cells and applies a sequence of moves.

    Parameters:
    - width (int): The width of the corridor. Must be a positive integer.
    - start (int): The starting cell for the bot. Must be an integer inside [0, width-1].
    - moves (list): A list of signed integers representing moves to be applied.

    Returns:
    dict: A dictionary containing the final position, number of bumps, and count of visited cells.
    """
    if not isinstance(width, int) or width <= 0:
        raise ValueError("Width must be a positive integer.")
    if not isinstance(start, int) or start < 0 or start >= width:
        raise ValueError("Start must be an integer inside the corridor range [0, width-1].")
    if not isinstance(moves, list):
        raise ValueError("Moves must be a list of non-zero integers.")

    position = start
    bumps = 0
    visited = set([position])

    for delta in moves:
        new_position, is_bump = clamp_move(position, delta, width)
        if is_bump:
            bumps += 1
        position = new_position
        visited.add(position)

    return {
        "position": position,
        "bumps": bumps,
        "visited": len(visited) - 1  # Subtract 1 to exclude the start cell from counted visits
    }
```