Secondary WP_Query being overriden in archive page

I believe the error lies in

$topic_query['tax_query'] = $topic_tax_query;

which should be

$topic_query_args['tax_query'] = $topic_tax_query;

A simple variable mixup, so your taxonomy query makes it into WP_Query.