```python
def key_path(store: dict, head: str) -> list:
    """Return the names standing directly under a stated head."""
    if head not in store:
        raise ValueError(f"Head '{head}' not found in store.")
    
    parts = head.split('.')
    current = store
    
    for part in parts[:-1]:
        if part not in current:
            raise ValueError(f"Part '{part}' not found in store.")
        current = current[part]
    
    if not isinstance(current, dict):
        raise ValueError(f"Expected a dictionary at '{head}', but got {type(current).__name__}.")
    
    return list(current.keys())
```