```python
def stamp_build(major: int, minor: int, patch: int) -> int:
    """Build a numeric stamp from major, minor, and patch components."""
    # Validate types: reject booleans, floats, strings, etc.
    # Note: bool is a subclass of int, so we must explicitly check for it.
    if isinstance(major, bool) or isinstance(minor, bool) or isinstance(patch, bool):
        raise ValueError("Components must be integers, not booleans")
    
    if not isinstance(major, int) or not isinstance(minor, int) or not isinstance(patch, int):
        raise ValueError("Components must be integers")

    # Validate ranges
    if major < 0:
        raise ValueError("Major component must be non-negative")
    if minor < 0:
        raise ValueError("Minor component must be non-negative")
    if patch < 0:
        raise ValueError("Patch component must be non-negative")
    
    if minor >= 1000:
        raise ValueError("Minor component must be less than 1000")
    if patch >= 1000:
        raise ValueError("Patch component must be less than 1000")

    # Calculate stamp: major * 1,000,000 + minor * 1,000 + patch
    return major * 1_000_000 + minor * 1_000 + patch
```