Removed our truck engine intake and valve cover to get to fuel injectors...
Rough idle at 285k miles. Only sometimes would it set a misfire code P0301 (cylinder #1). The engine computer fuel trims would go negative indicating that the oxygen sensor(s) are detecting a rich condition. The computer tries to dial back the fuel to compensate but it results in a rough idle.
Careful disassembly, a lot of cleaning, replaced a fuel regulator, replaced one fuel injector (likely wasn't needed, but just in case), intake and valve cover gaskets and careful reassembly. Most of my time was spent cleaning and being careful not to drop any debris into the engine.
What cost me just under $200 would have likely been an over $1000 charge by a repair shop. Also, the shop would likely not go to the cleaning extent that I did.
Silky smooth inline six cylinder engine idle again.
Word of advice: If you have a rough running engine and the engine is running rich with fuel, get it repaired soon. This is how expensive catalytic converters are poisoned/ruined.
Proper diagnosis skills are valuable.