Sleeves,
So look at injection pulse width between the two bikes, they’re nearly identical. Fueling is being controlled properly, so let’s move to the next three factors. The AFR sensor be ****ed, if the injector pulse with is the same, the fueling is the same, and the problem lies in the air supply.
1: Compression - test it, I had a feeling it was this upon initially reading the original post. If a hole is down on compression you’ll definitely see it on a wide band.
2: Ignition - if you’ve new plugs with good gap and all three coils are good move on.
3: Air - Don’t stress the not reaching 1100 RPM, but it should at least idle in the 850-900 range without issue. This makes me suspect IACV stepper motor as the key culprit. A control: swap on a known good Throttle Body assembly, my money is on this fixing the problem with the low idle.
The 99% value... you’ve a sensor backwards

. The main TPS and secondary TPS are physically interchangeable, however they work inverse internally. At max voltage the MTPS is read by the ECU as 100% but at max voltage the STPS is read as 0%. It appears that you’ve got a MTPS sensor installed on the STPS location.
I do not think that has anything to do with the idle low issue however.
Side Note: At the very low RPM he’s idling at you’ll start to get some strange effects because of the low air velocity and very long times for each of the 4 cycles of running. 640 is not far above the lower limit before it’ll stall out (around 550-570 in my experience).