Thanks for the reply!
I tried a couple things and got MUCH closer than I was.
1) The machine does not move where it's commanded to move.
I agree with you that the machine is doing fine on movement.
2) The contact sensing circuits are not working correctly so you can't do a correct touch off.
The only time I'm having issues is when I'm NOT using a central start hole as my 0, meaning when I'm cutting in relation to existing geometry. This might be an issue, but I haven't noticed any errors in holes that are very close to the final dimension. For example when cutting into a start hole that's <0.010 smaller than the final diameter, I'm cutting everything both to size and on location. I typically measure a start hole twice, once at a relative angle of 0 and once at a relative angle of 30 or 45 degrees. Typically I see a deviance of ~0.00004-0.00007 between the two measurements with a drilled hole, so I'm not too concerned with the sensing circuit.
3) There is a burr or the fixture is not square or there is some other geometric imperfection that wrecks your pickup or the positioning of your part in it.
I chamfer all my edges and then gently sand all sides of my fixtures with 800-1500 grit specifically to avoid burrs, and I've double checked my fixture dimensions. Typically I model both and create an assembly so that I can take accurate theoretical measurements to ascertain my 0 properly. The fixture in question here is +/-.0002in on all relevant locating features.
4) The fixture is not as good as you think it is, at positioning the part.
This one is a possibility, I suppose. I've double checked everything, but there's always the possibility I miss something. I'll review it again.
5) You're setting the offset wrong after you do your touch off and set your part origin.
In what way do you mean? Are you talking about my machining offset? If so, I would imagine the dimensions of my pocket would be coming out incorrectly, no? If you're talking about the withdrawal offset of the wire from the fixture surface, that is actually something I fixed that made a pretty big difference. I redid my calculations for the measurement spark gap and a couple other things, and that helped a lot. I'm currently down from 0.010 off to ~0.002 off. Not perfect, but good enough for the prototype I'm making.
6) You've made an error in your code and it doesn't cut your feature where you thought it would.
HUGE possibility. I've reviewed my code and don't see anything wrong, but it might be worth reprogramming it entirely just to be sure. I'm no expert in programming EDM yet.
7) You've used G92 inappropriately and the program is re-setting your origin when you didn't want it to.
This is something that I actually have very little idea about, actually. I'm mostly self-taught through the manuals and whatever training I can find online. I know that G92 sets the part origin in relation to the machine origin, but I don't know exactly what the proper use is. In general, I will set G92 to where the program origin should be in relation to the part 0. So for example if I need to cut a pocket in close relation to an existing, reamed hole, I set my 0 in the center of the existing hole and then move the wire to the theoretical center of the feature to be cut. I then write the program in relation to the 0 centered in the existing hole. The resulting G92 code would look something like, for example, G92 X0.11684 Y-0.37500. Should I not be doing this? I have no idea what standard practice for programming this stuff is.
As a first step, try single point boring your wire start hole and deburring it carefully so you know exactly where it is.
My start hole needs to be small enough to create the feature that this isn't realistically possible. I'm using 17-4PH in condition H950, so the fact that it's been hardened already makes it a little more difficult as well. It was drilled with carbide while it was still in condition A, though, so it should be reasonably accurate. Given the aspect ratio being 12:1, however, I don't know if I trust it enough to use as a measured start hole. That's why I'm using the fixture or other related features to set my 0.
Rewrite your code so your wire start hole is directly over the origin.
I think this is my next step.
Thank you for all the troubleshooting help so far. If you have any other thoughts based on what I've added here, they would be greatly appreciated.