I'm not very familiar with PSoC 6 programming. But hope ideas below may help on something..
1. What is burned into NAR? If some bits in NAR changed, pp will forbid programming it. Have you tried read NAR data and write same data into it and then can you read silicon ID?
2. I saw in the flow chart of acquire chip, it has a procedure every time to judge: data & 0x80000000 == 0x80000000, Is that related with your question? Suggest comparing SWD waveform of MiniProg-3 programming with SWD waveform of your programmer and code to check if it is normal.
Here is what I know:
a. There are two registers called NAR_MIN and NAR that are stored in SFLASH. NAR contains the current value of NORMAL access restriction and any update to NAR must be more restrictive than NAR_MIN.
b. The new restrictions must be more restrictive than what Cypress put in SFLASH originally or any permanent restrictions added by the customer.
Can you try reading them back and compare them with you'd like to update.
The log of using OpenOCD to program PSoC 6 is FYI:
Section 8 Usage Examples in