```python
def build_min_heap_by_insertion(values: list[int]) -> list[int]:
    if not isinstance(values, list):
        raise ValueError("Input must be a list")
    
    for value in values:
        if not isinstance(value, int) or value < 0:
            raise ValueError("All elements in the list must be non-negative integers")
    
    heap = []
    for value in values:
        heap.append(value)
        i = len(heap) - 1
        while i > 0 and heap[i] < heap[(i - 1) // 2]:
            heap[i], heap[(i - 1) // 2] = heap[(i - 1) // 2], heap[i]
            i = (i - 1) // 2
    
    return heap
```