```python
def drive_bridge(commands: list) -> str:
    if not isinstance(commands, list):
        raise ValueError("commands must be a list")
    
    state = "lowered"
    allowed_commands = {
        "lowered": ["raise"],
        "raised": ["lower", "lock"],
        "locked": ["unlock"]
    }
    
    for command in commands:
        if command not in allowed_commands[state]:
            raise ValueError(f"command '{command}' not allowed in state {state}")
        
        state = allowed_commands[state][0]
    
    return state
```