```python
def clause_order(a: str, b: str) -> int:
    def parse_mark(mark: str) -> tuple:
        if not isinstance(mark, str) or not mark:
            raise ValueError("Mark must be a non-empty string.")
        
        parts = mark.split('.')
        if len(parts) > 1:
            for part in parts:
                if not part.isdigit() or (part.startswith('0') and len(part) > 1):
                    raise ValueError("Mark contains invalid characters or leading zeros.")
        
        return tuple(map(int, parts))
    
, b = parse_mark(a), parse_mark(b)
    
 for i in range(min(len(a), len(b))):
        if a[i] < b[i]:
            return -1
        elif a[i] > b[i]:
            return 1
    
    return 0
```