I am officially missing something about transient posts

Say you have 10 pages of posts, 10 posts per page. When you load the first page and the transient doesn’t yet exist, your query loads the first page (10 posts) and you put that in a transient.

Now you navigate to page 2, and check if the transient exists. it does (you set it on page 1), so you load that instead of running a new query. Except your transient still contains posts 1-10, not 11-20 which you’re supposed to see on page 2.

You need to set a unique transient key for each page of posts, something like:

set_transient( 'posts_' . get_query_var( 'paged' ) , $query, 60);

and then fetch them by page:

get_transient( 'posts_' . get_query_var( 'paged' ) );