Do you know what vacuum and fuel pressure yours runs at?
My engine is now far from original, so the numbers won't translate, but the engine you see in the picture was a fresh rebuild as OE a few years ago. It idled at 18 in/Hg.... don't know what the fuel pressure was, since it so much trouble to test it.
Also if you have ever checked your stall speed?
If you mean the torque converter stall speed, yes, my original transmision was somewhere around 2200 rpms. I now have a rebuilt transmission with a lockup converter and I haven't remembered to check the stall speed on launch.... and I can't right now because I have a blown engine (in more ways than one).
I got to digging in the FSM and found in the "Engine Adjustment" section, where it says engine vacuum should be 20 in.Hg. I'm only getting 15. It is steady (no bounce what so ever) The book says this means the timing is retarded.
15 is not terrible, but I'd hope for a little more once the idle quality is good. I don't know if you noticed, but the lower intake manifold has a habit of warping up from the middle toward the ends - sometimes allowing an air leak and/or a coolant leak. I don't know if yours is a problem - just passing along the results of what I've seen on a few 3.0L engines.
I'd check every vacuum line thoroughly. Check the nipples on the vacuum switch located on the front of the intake manifold water box.... they have a habit of cracking/breaking. Check the EGR system operation. Check the purge valve solenoid operation. You can find those tests in the emission section of the FSM.
Test the coil with a meter.
What about the o2 sensor?
If you can find a junkyard truck of the same year, try swapping the ECU, distributor and MAF sensor.
The 3.0L truck combination is quite peppy below 3000 rpms, so you still have some work to do. Once you sort through it, I think you and your son will be very impressed with the truck. I think it's one of the best and toughest vehicles around for it's size and price. Once you understand the systems, it becomes very easy to maintain.
Frank