```python
def run_decode(coded: str) -> str:
    """
    Decode a string representing runs of characters into the full sequence of characters.
    
    Args:
    coded (str): A string where each character is followed by its count (e.g., 'A3B1' -> 'AAAB').
    
    Returns:
    str: The decoded string with characters repeated according to their counts.
    
    Raises:
    ValueError: If the input string is not well-formed.
    """
    if not coded:
        return ""
    
    decoded = []
    i = 0
    while i < len(coded):
        char = coded[i]
        count = 0
        i += 1
        while i < len(coded) and coded[i].isdigit():
            count = count * 10 + int(coded[i])
            i += 1
        if not count:
            raise ValueError("Invalid run format: missing count")
        decoded.extend([char] * count)
    
    return ''.join(decoded)
```