Not able to see archive page of custom posts

has_archive was set to true and my understanding is that now when I goto /articles I am supposed to see all posts of type article.

Nowhere in your code is articleS mentioned, the slug of the post type is article, so the URL of its archive should be /article/. If you want it to be articles you have to say so.

In this case, it’s the classic mistake of registering a post type or taxonomy, but not flushing permalinks to add their rules. Go to the permalinks setting page, and resave.

As for the template archive.php, this is irrelevant to wether the page loads or not. The template hierarchy will fallback to index.php which is required for a theme if no other templats are found. Additionally, archive.php doesn’t make the URL an archive. The URL makes it an archive, and the fact it’s an archive makes WP load that template. WP has already figured out what posts to fetch before the template is chosen.