Being both B1 and B2 are reporting the same +10 to +20 % lean, then the problem is common to both
So you need to focus on what is common to both sides
1. MAF itself, faulty, dirty, not stock one ? Stock, not sure when replaced if ever.. now in the process of cleaning
2. Did you smoke test with aircleaner off and blocked, so you could see if the airbridge between that and throttlebody has and unmetered leak ? Yes
3. Put a fuel pressure gauge on fuel rail and see if the PSI reports normal for that engine ? Good point, I'll try this.. see if I can find my pressure gauge
4. How old is the fuel filter, as there could be proper pressure but low gas volume flow ? As far as I know, it is original. This is non-servicable, I believe
5. See if any senors are lying, does scanner show PCM going into "closed loop" if stays in open loop then PCM ignores feedback sensors and only uses predicted airmass via the VE table will have to check my data logs, I believe it goes into closed loop
6. If the LTFTs are reporting that lean, what are the STFTs reporting ? 0% at idle, and of course the change when engine load changes but they return to 0%
7. if scanner supports bidirectional, once in closed loop, send command to clear fuel trims.
(if not disconnect battery just for few seconds)
Do the trims go right back to that lean just at idle ?
8. Do the fuel trims stay that lean at different driving conditions, or maybe just at idle ? LTFT rise to +20% when engine speed is held at 2500rpm
9. If fuel trims that lean, something has to tell PCM is that lean or,
so the O2 sensors should be reporting high values (rich) to get PCM to command fuel injector pulse width much longer
At closed loop idle, A/C OFF
MAF should report like 1-2 pounds of air (about 3,000 Hz)
MAP about 35 KPA, (if close to sea level) TPS around 10% angle
Injector pulse width around 3 mSecs
Upstream O2 sensors around 0.500 mVolts
If your scanner supports GM's fuel cells, at idle should report cell 16 or 17 with an auto tranny
Scanner should at least do I/M smog test results, are all in a complete state and
should be an O2 tests, are results correct ?