It appears that you can ask wp_insert_post()
to return a WP_Error
on failure by setting the 2nd parameter to true
(it defaults to false).
So if you change
$new_article_id = wp_insert_post($new_article);
to
$new_article_id = wp_insert_post( $new_article, true );
in your code, you should get WP_Error
objects back that you can then inspect.