```python
def index_map(labels: list) -> dict:
    """
    Given a list of labels, return a mapping from each label to every position it holds,
    the positions counted from zero and given in increasing order. A label appearing once still gets a list.
    
    :param labels: List of labels
    :return: Dictionary mapping each label to a list of positions it holds
    """
    if not labels:
        return {}
    
    label_positions = {}
    for i, label in enumerate(labels):
        if label not in label_positions:
            label_positions[label] = [i]
        else:
            label_positions[label].append(i)
    
    return label_positions
```