wp_query loop with compare operator simply not working, why?

As stated in the documentation: (bold formatting was added by me)

Note that meta_query expects nested arrays, even if you only have
one query.

So your meta query should actually look like the following, and note that in a meta_query, we don’t use the meta_ prefix, e.g. we use just key and not meta_key:

$query_args['meta_query'] = array(
    array( // clause/query 1
        'key'     => 'expire_date',
        'value'   => date("Y-m-d"),
        'type'    => 'DATE',
        'compare' => '>=',
    )
);

Or use the root meta_xxx arguments instead, and note that I used meta_type instead of just type:

$query_args['meta_key']     = 'expire_date';
$query_args['meta_value']   = date("Y-m-d");
$query_args['meta_type']    = 'DATE';
$query_args['meta_compare'] = '>=';

Or did you actually mean to use $query_args['meta_query'][] (note the []), i.e. to add another clause to the existing meta_query array? But even so, make sure you use the correct array keys.

error code: 523