```python
def steer_forklift(aisles: int, bays: int, moves: list) -> list:
    """Steer a forklift on a grid and return its final position."""
    if not isinstance(aisles, int) or aisles <= 0:
        raise ValueError("aisles must be a positive integer")
    if not isinstance(bays, int) or bays <= 0:
        raise ValueError("bays must be a positive integer")
    if not isinstance(moves, list):
        raise ValueError("moves must be a list")

    aisle = 0
    bay = 0

    for move in moves:
        if not isinstance(move, str):
            raise ValueError("each move must be a string")
        if move == "north":
            bay -= 1
        elif move == "south":
            bay += 1
        elif move == "east":
            aisle += 1
        elif move == "west":
            aisle -= 1
        else:
            raise ValueError(f"invalid move: {move}")

        if aisle < 0 or aisle >= aisles:
            raise ValueError("move carries forklift off the floor (aisle)")
        if bay < 0 or bay >= bays:
            raise ValueError("move carries forklift off the floor (bay)")

    return [aisle, bay]
```