```python
def sift_down_run(heap: list[int], start: int) -> list[list[int]]:
    if not heap:
        raise ValueError("Heap cannot be empty")
    if start < 0 or start >= len(heap):
        raise ValueError("Start index out of bounds")
    if not isinstance(heap[start], int):
        raise ValueError("Heap element must be an integer")

    path = [start]
    i = start
    while True:
        left = 2 * i + 1
        right = 2 * i + 2
        smallest = i

        if left < len(heap) and heap[left] < heap[smallest]:
            smallest = left
        if right < len(heap) and heap[right] < heap[smallest]:
            smallest = right

        if smallest == i:
            break

        heap[i], heap[smallest] = heap[smallest], heap[i]
        path.append(smallest)
        i = smallest

    return [heap] + path
```