What I presented to you is more or less standard approach to how things are done in machining, if you follow that concept each operation makes logical progression towards finished product.
Software intended for use in manufacturing takes into account these logical chains of activities and coincides with how we do things.
I pointed out that using "rest machining" in some operations in your original file has no logical purpose because you misplaced order of operations that reference such function to previous operation, causing warning flags and / or empty tool paths.
If you go against the grain because you don't have appropriate tools or intend to cut down on machining time by avoiding removal of stock in multiple passes, you must understand function of each strategy and use it in a clever way to achieve your objective.
For example, 2D adoptive is a roughing strategy, you don't use it after finish contour, if you call your tool bullnose, you need to define corner radius value,..., you cannot plunge to top of the small hole thru solid stock because you will break the tool on contact,.......... etc.
So looking at your original file, I removed some clutter and using only 2 mm flat end mill, reprogrammed job in a way that works to preserve tool and finish each step in logical order.
I raised bottom height for small hole bore by .25 mm to prevent middle slug from breaking lose, that would break your tool if you cut all the way thru.
