It turns out I have an errant pre_get_posts
function:
function fgw_parents_only( $query ) {
if ( ! is_admin() && $query->is_post_type_archive( 'project' ) ) {
$query->set( 'post_parent', 0 );
$query->set( 'posts_per_page', -1);
}
}
add_action( 'pre_get_posts', 'fgw_parents_only' );
Not exactly sure why is_post_type_archive
caused this to show up on a single-project.php template, but I managed to solve this by changing the test to:
if ( ! is_admin() && $query->is_post_type_archive( 'project' ) && ! is_single() ) {