get_the_title() is returning results from previous loop

The issue, I believe, is that if ($stories) is always returning true, een if there are no posts. It’s then looping through the WP-Query elements, not the actual posts. Try this instead:

if ( $stories->have_posts() ) {
  while ( $stories->have_posts() ) : $stories->the_post();

     echo get_the_title( get_the_ID() );

  endwhile; $query->reset_postdata();
}