Cache not invalidating when using pagination with cache
One issue I'm seeing, is that you're currently using craft.request.path as your cache key – however, that property doesn't actually include the pagination segment (i.e. the pageTrigger; p2, p3 or the like), which means that you're currently going to see the same, cached content across all of your pages, because you're caching globally using an identical key (i.e. the root URI of your paginated template).

For Craft 2, AFAIK there's no single property or method on the HttpRequestService that will give you the full URL including the pagination segment – so you'll need to append the pagination number using craft.request.getPageNum():  

{% cache globally using key craft.request.path ~ craft.request.getPageNum() until cacheUntil %}


For Craft 3, there's craft.app.request.getFullPath(), which does include the pagination segment – so the following should do the trick:

{% cache globally using key craft.app.request.getFullPath() until cacheUntil %}


As far as your solution for breaking the cache whenever "pending" entries are published, I'm not sure, but I'm not seeing any problems with it, at a glance.

The reason why you're not seeing the cache cleared when you create new entries, is probably because your second craft.entries query (the one that actually fetches the entries) is outside your {% cache %} tag (this would be a performance issue as well; your current code isn't really caching anything, except a bit of not too demanding Twig code). You should probably move the second craft.entries query, the {% paginate %} tag and the {% include '_includes/partials/pagination' %} statement inside the {% cache %} tag pair.

Also, you might want to re-think having a default cache duration of 1 year – that's a long time, and if your site builds up a lot of pages, it could balloon your database and possibly cause issues with stalled Deleting state template caches tasks. My advice would be to keep the duration to something sane like 1 month, max – there's little point in keeping year-old caches around, normally :)