```python
def column_digest(rows: list, column: int) -> dict:
    """Summarize a column from a ragged sheet of rows."""
    if not isinstance(rows, list):
        raise ValueError("rows must be a list")
    if not isinstance(column, int):
        raise ValueError("column must be an integer")
    
    # Handle negative column index: treat as invalid or out of bounds
    # Since the contract doesn't specify, we'll treat negative indices as
    # yielding an empty column (count=0, all zeros) to be safe,
    # or we could raise ValueError. Given "How a negative column index is treated is not stated",
    # let's raise ValueError to be explicit about the ambiguity.
    if column < 0:
        raise ValueError("Negative column index is not supported")
    
    # Collect values from rows that are long enough
    values = []
    for row in rows:
        if isinstance(row, list) and len(row) > column:
            cell = row[column]
            # Only consider numeric values
            if isinstance(cell, (int, float)):
                values.append(cell)
    
    count = len(values)
    
    if count == 0:
        return {
            "count": 0,
            "min": 0,
            "max": 0,
            "mean": 0,
            "median": 0
        }
    
    min_val = min(values)
    max_val = max(values)
    mean_val = sum(values) / count
    
    # Calculate median
    sorted_values = sorted(values)
    if count % 2 == 1:
        median_val = sorted_values[count // 2]
    else:
        mid1 = sorted_values[count // 2 - 1]
        mid2 = sorted_values[count // 2]
        median_val = (mid1 + mid2) / 2
    
    # Round mean and median to two decimal places, rounding half up
    def round_half_up(value: float, decimals: int = 2) -> float:
        """Round to given decimal places, rounding half up."""
        multiplier = 10 ** decimals
        return int(value * multiplier + 0.5) / multiplier
    
    rounded_mean = round_half_up(mean_val)
    rounded_median = round_half_up(median_val)
    
    return {
        "count": count,
        "min": min_val,
        "max": max_val,
        "mean": rounded_mean,
        "median": rounded_median
    }
```