Absolutely, almost fabulous.

Everything works, up to the verify stage of the programmer without so much as a burp, but then:

Code verify error at 0000
3FFF should be 2828

and on and on it goes 3FFF at 0001, 3FFF at 0002 etc etc.
Erasing the target doesn't clear it.