The device is not entering program mode; it does not respond at all. But there's nothing wrong in the code. Did you try on the main board without LV? Is it a classic unsoldered DIP8 device? Is it brand new? Contact issues?
12F1572 is still untested. More than firmware it is the programming algorithm, which resides in the PC app. Can you provide the read log?
V 0.12.4 May 2025:
Version 0.12.4 of OP/OPGUI was released today. Changes: added 18F04-05-06-14-15-16Q20; fixed config write on 18FXXQ10; fixed erase and write on 16F131XX,16F152XX,16F171XX,16F18XXX
For reasons I really cannot understand, the progression of config# and address is interrupted after config8 (0x300007); next is config10 (0x300008), 11 and 12. Another jump and you get config14 (0x300018) and finally config9 (0x300019). This is only on Q20 devices. Clearly I did not implement a custom counter, and probably never will. By the way, SAFSZ is not written unless also SAFLOCK is. So in your case everything seems fine and exactly as expected.
Application crash is very strange; I don't remember it ever doing so. I tried Win10 and Win11 on multiple hardware. Do you see anny error message when started from command line?
These sources should support Q20. Write of SAFZ and SAFLOCK is only attempted if they are not empty and if error count is zero.
You should connect AVDD and AVSS as well. In you drawing, the ICSP connector follows a different pinout; make sure to route the correct signals.