+1 ^^^^
Welcome to TRS
"Lean" code is often confused by people thinking its Fuel related, it is "sort of" but not really
Computer calculates air/fuel mix based on engine RPMs, it "knows" its running a 2.3
liter engine so its a pretty simple calculation to get how many Liters of air are coming in at say 2,500rpms, just math
14.7:1 Air/fuel mix the WEIGHT based
14.7 pounds of air to 1 pound of gasoline
14.7 grams of air to 1 gram of gasoline
Again just math
Gasoline's weight doesn't change much with temperature
The big variables are Air TEMP and Air WEIGHT
Cold air is heavier than warm air, "hot air rises", because its LIGHTER that cooler air, so there is an IAT or ACT air temp sensor
Air is lighter(less dense) at 5,000ft elevation than it is a Sea Level, this is what the MAF sensor is for, it measures air density, the WEIGHT of the incoming air
Computer calculates the air/fuel ratio by RPM then off-sets that calculation based on air temp and air weight
This is called 0 STFT(short term fuel trim), and this is the OPEN TIME calculated for each fuel injector
Computer "knows" the size of the injectors, and since there is no fuel pressure sensor, computer assume 55psi(1998 and up Rangers)
Computer opens each injector and THEN..........it watches O2 sensor for feed back on STFT 0
O2 sensors can ONLY see Oxygen, not fuel
Too much oxygen in exhaust is "lean"
Too little oxygen in exhaust is "rich"
If "lean" the computer changes STFT 0 to STFT +2%, so it opens injectors 2% longer than it calculated, if O2 still shows "lean" then STFT +4%............ect, if it gets to STFT +15% or higher it will set a "lean" code
STFT -15% would set "rich" code
All this happens in less than 2 seconds, so engine was never running "lean"
If all the air is not passing thru the MAF sensor then computer calculations would be off, that's why Vacuum leaks can cause "lean" codes
MAF only samples 10% of the incoming air so small difference at MAF is a TIMES 10 difference at computer
Your issue reads like a "false lean"
Computer is seeing too much oxygen in exhaust and is adding more fuel, STFT +15%, but its "false" so engine is actually running Richer than it should
Misfires cause false leans because when a cylinder doesn't fire no oxygen is used up and its all dumped into exhaust manifold so O2 sees high oxygen, false lean.............computer adds more fuel
Exhaust manifolds SUCK IN AIR, so an exhaust leak at the engine gasket pulls in air and O2 sees extra oxygen, false lean........computer adds more fuel
Old O2 sensors, these last 150k miles or 12 years, then chemicals are used up, they show leaner and leaner oxygen levels as they age, so MPG gets lower and lower, worth while changing these at 100k miles
Loose O2 sensor, sucks in air around the threads, false lean
Clogged exhaust, prevents oxygen/exhaust from exiting, also limits RPM/power
Your Misfires are the likely issue for the false lean
I would do a compression test on each cylinder just to take that off the table, because if it is a compression issue you will just be wasting time(and money) looking for spark/fuel issues
Leaking injector, yes you would think that would cause "rich" code, but no, it causes Misfires so false lean
The smoke can be the unburned fuel being burned up by the Cat(s)