The thermostat housing was leaking. There's no weep hole on the top of the water pump. I installed the new thermostat but I had to make my own gasket, and it's tight.
I don't have any heat but that may be because there's still air in the system. I'll let her cool down overnight and check the overflow tank tomorrow; it was full when I closed the hood but I bet it won't be after the engine's gotten cold.
If I still don't have heat, then I may have gotten the thermostat in wrong. I know it's installed in the correct orientation--there's only one way to put it in--but it may have shifted between the time I put the gasket over it and got the thermostat housing on.
But that's not my big problem.
Once I'd buttoned up the cooling system I started the truck and let it idle to make sure there were no leaks. The engine warmed up to its regular operating temperature and everything seemed fine, so I shut it off and began cleaning up my mess.
...and saw that there was a damp spot under the tailpipe. A pretty big one.
I moved the Jeep down the driveway and let it idle there, and I could watch the damp spot forming where the exhaust hit the pavement.
The truck is not obviously smoking but if you have a very slight coolant leak into a combustion chamber the smoke from it won't necessarily be visible. It does not take very much.
Yes, it is entirely possible that I have a warped cylinder head, or worse.
I kept an eye on the truck's temperature all the way home last night and it never exceeded the normal operating range. But then I have to wonder: if the sensor wasn't immersed in coolant, what would the gauge say?
...but the truck showed no signs of overheating whatsoever, either.
Apparently some castings crack in use and the 2000 model year is the most effected. So maybe that's it? My XJ does have the 0331 head, which is the one prone to cracking.
As long as it's not leaking coolant into the oil, it sounds as if I can keep driving it. On the plus side, I just checked it, and it doesn't show any of the signs of having coolant in the oil. This makes sense to me; if the head is cracked such that coolant is coming out the tailpipe, then one would hope that coolant wasn't also going into the crankcase.
Which is a good thing, because a new cylinder head is expensive--$422 from Rockauto.com.
As if I needed something else to worry about.