def is_valid(planning):
    """Validates planning, returns True on valid list.
    - planning is expected to: be a parsed planning (see self.parse)
        events in planning must be sorted by date from old to new.
    """
    if not isinstance(planning, list):
        return False

    if len(planning) < 2:
        return False

    # datetimes must be sorted by date from old to new.
    previous_ts = planning[0][0]
    for row in planning[1:]:
        curr_ts = row[0]
        if curr_ts < previous_ts:
            return False

    return True