I think you need to be more precise with your collection definitions. Collections are assembled in the order they appear in the routes file. If a post matches the criteria of the first collection that’s where it’ll reside. In your definitions the first collection doesn’t have any filtering, meaning that technically all posts will go into this collection, leaving none left for your blog. Being more specific will solve your issue:
The first collection here is filtering for any post that doesn’t have ‘blog’ as the primary tag. This will leave the posts with the primary tag of ‘blog’ to fall into the /blog/ collection.
Hope this helps!