So, first off, this isn't a problem with backlash. My circles are still round, they're just ... not where they're supposed to be. They're consistently offset by about .08 inches in -X and +Y.
For instance, in the part whose g-code I've attached below, I have zero set at the inside left corner of the fixed jaw on my vise. I've got a piece of 1/2x6 hot rolled steel clamped up.
I drill out the center with a 1" bit, then a 5-bolt pattern around it with a 1/2" bit. This goes as expected.
Then things go a little abnormal.
The next operation takes a 5/16 end mill and bores the holes out by a few thousandths for clearance, then cuts out the whole thing. The boring operation is offset away from the center of the actual hole. So's the cutout. Everything is round ... it's just not centered.
This has been a problem for a while now, but I've never really done anything where the precision mattered as much as it does here so it wasn't quite as obvious. When I saw it happening with thread milling, I figured I was stuck on stupid with something in my operation and never put any more thought into it since I was just experimenting, but it's showing up everywhere else. If I am just milling my whole part everything's fine - the offset takes care of itself because everything is shifted ... but when I'm working with something where I have to index off an existing hole, or where I have tool changes, then there's issues.
Anyone got any ideas what's going on?