OR for a single taxonomy in a tax_query

So in the comments you said:

We’re in the middle of an address system migration and this query
needs to return objects where one of these matches. Either the old
system (county field) is set to an id, or the address value has a
match to the search word

If you look at the documentation, custom term fields like the county and ads_value (or JSON_EXTRACT()) in your case are not supported, and the LIKE is also not a standard value for operator; however, since you said that “Separately, yes they work.“, then let’s assume you’ve got some custom code which handle those custom fields and operator? 🤔

And I think all that you need to do is place those two conditions/clauses into a single clause with an OR relation like so:

$tax_query = (array) ( $query->query_vars['tax_query'] ?? array() );

// Add a (named) top-level clause with an OR relation.
$tax_query['location'] = array(
    'relation' => 'OR',
);

// Sub-clause 1: Search in the 'county' field.
// *You should check if $_REQUEST['s-location'] is set.
$tax_query['location'][] = array(
    'taxonomy'         => 'location',
    'include_children' => true,
    'field'            => 'county',
    'terms'            => array( $_REQUEST['s-location'] ),
    'operator'         => 'IN',
);

// Sub-clause 2: Search in the ads_value field.
$tax_query['location'][] = array(
    'taxonomy'         => 'location',
    'include_children' => true,
    'field'            => "JSON_EXTRACT(ads_value, '$.paadress')",
    'terms'            => '%' . $cname . '%',
    'operator'         => 'LIKE',
);

$query->query_vars['tax_query'] = $tax_query;

/* Or short version:
$query->query_vars['tax_query'][] = array(
    'relation' => 'OR',

    // sub-clause 1
    array(
        'taxonomy' => 'location',
        'field'    => 'county',
        'terms'    => array( $_REQUEST['s-location'] ),
        'operator' => 'IN',

    ),

    // sub-clause 2
    array(
        'taxonomy' => 'location',
        'field'    => "JSON_EXTRACT(ads_value, '$.paadress')",
        'terms'    => '%' . $cname . '%',
        'operator' => 'LIKE',
    ),
);
*/

Or did I get it wrong? If so, let me know and I’ll adjust my answer accordingly.

tech