```python
"""Lay a straight eastward conveyor run across a factory floor plan."""


def lay_conveyor(floor: list, row: int, col: int, length: int) -> list:
    if row < 0 or row >= len(floor):
        raise ValueError("the run starts off the plan")
    
    # Check if the run would pass the last column
    if col + length > len(floor[row]):
        raise ValueError("the run passes the last column")
    
    # Check if any cell in the run is not open
    for i in range(length):
        if floor[row][col + i] != ".":
            raise ValueError(f"cell at [row, {col + i}] is not open")
    
    # Prepare a copy of the row to modify
    cells = list(floor[row])
    
    # Write the run's cells
    for i in range(length):
        cells[col + i] = "="
    
    # Return the updated floor plan with only that row changed
    return [row if index != row else cells for index, row in enumerate(floor)]
```