Might be retraction, but just so you know, it might not be.
I did a significant amount of work to dial in my retraction. I have a part on Thingiverse specifically to help with that calibration (deterministic retraction calibration). After getting to the point where I was certain that my retraction was about as good as it could get, I tried to print a torture test that had some strong similarities to the part you show. My part failed partway through, just like yours. Since I had confidence that it was not retraction, I started looking at what else could be the issue.
My best guess is that it has something to do with the amount of filament that ends up in a melted state within the hotend, versus how much gets fed out. The problem only shows up with parts that need a lot of small prints, followed by retract, followed by small print, etc. I think there is an overall accumulation of melted filament inside the nozzle that is not getting purged during the small print section (and melted filament is not pulled back with retraction). That excess increases and increases until it is enough to jam the filament and the print fails.
I was able to fix the problem with just a very small amount of cooling (even though I print ABS). I have a cooling fan that I run at only about 10% power. That provides just enough cooling to allow me to print that sort of part. I already had a fan on the cold side of the hotend running all out all the time. If you don't, then that also could be the problem. It is also possible that it really is retract, so make sure that is correct before trying anything else.
Hope that helps.