Explanation
This does appear to be a result of new_session which in turns uses render_new_session() that ends up generating a bunch of .md files. Those .md files are what's being passed to render(), so specifying the clean option there won't remove the files, because they're the original from the perspective of this call.
It appears differentiating between which files were originally .md and which were .Rmd rendered to markdown is difficult at that point in the execution.
Desired behavior
Does the following describe the desired behavior when keep_md: false is specified in _output.yml and new_session: yes in _bookdown.yml:
- The .md corresponding to chapter .Rmd files should be removed.
- Chapter files originally .md, it should be preserved.
I think that can be accomplished in the bookdown package. Perhaps put in a feature request?
Band Aid
For the current setup it appears to be on you to all the .md files from your docs directory. If you're calling render_book from a script, you could add a line after the call
unlink(list.files('docs', '\\.md$', full.names = T))
If you're building this using the Rstudio button... dunno yet. I'll come back to this if I come up with an approach less involved that writing and add-in to do it.
Minimal Example Github Organization
Did you really create a github organization called 'minimalexample' just to post the gist? If so, I'm entertained.