One off rewrite for single post-type slug (show normal page with same URL instead)

I installed Monkeyman Rewrite Analyzer https://wordpress.org/support/plugin/monkeyman-rewrite-analyzer/ which helped a great deal. I saw this referenced on Jan Fabry’s detailed answer on this post which also helped me.

First thing that I found out with the plugin was that my rewrites weren’t actually getting added; they didn’t appear in the logic. It turns out the add_rewrite_rule() function is useless unless rewrites have just been flushed. I took out the flush_rewrite_rules(); line from my code but I flushed permalinks manually in the admin panel every time I tested a change.

Once I had renamed the custom post and page back to the same URL sectors/hotels-hospitality, I was able to resolve the issue. As @WebElaine explained in the comments, extra redirects are created if any _wp_old_slug fields are saved in the wp_postsmeta table, which helped me solve the related/secondary redirect issue after I edited the post slug.

This is my final function and it only works after flushing rewrites (clicking Save in Settings > Permalinks). I also used pagename instead of page_id in the query, but you can use either.

add_action( 'init', 'addMyRules' );
function addMyRules(){
    add_rewrite_rule('sector/hotels-hospitality','index.php?pagename=sector/hotels-hospitality','top');
}

The top parameter is important as it means this pattern to match will be checked before the system post-type check (check the order of rewrites when using the above mentioned plugin, screenshot below).

enter image description here

So, when I go to the matching URL, WordPress shows the page and not the post, because this is the first pattern match reached in the list.