You can paginate your custom loop on a page created inside WordPress, the issue with your code is that your are using "page" parameter instead of "paged" parameter; the former is used to paginate a single post parts, while the later is used to paginate post archives or multiple posts.
So a paginated query on your page template should be ...
It looks to me like you've gone too deep with your meta_query argument. The meta query should be an array of arrays; you've got an array of arrays of arrays.
$args['meta_query'] = array(
'key' => 'status',
'value' => 'Retained',
'compare' => '='
WP_Meta_Query class (which is ...
I had a similar issue and maybe this is also helpful when pagination is only working sometimes: e.g. /page/1/ and /page/2/ are working and /page/3/ not. Result: Error 404. Problem is: default value (12 items each page) for posts_per_page (WordPress Settings/Reading) is loaded always from database before the template is loaded. So $args=['posts_per_page' =>...
add_rewrite_rule('^foo/page/([0-9]+)/?$', 'index.php?category_name=category1&paged=$matches', 'top');
add_rewrite_rule('^foo', 'index.php?category_name=category1', 'top');
The order between these two lines here is important.
See also Permalink/Pagination issue: Category base name same as page name.