On cold start the computer runs Choke mode, yes open loop but also the equivalent of a Choke.
High idle, 1,100+ RPM(based on engine temp, colder temp higher idle)
Rich Fuel mix
Advanced spark timing
An engine is still an engine, so needs a rich fuel mix and high idle to run smoothly until it warms up, that is what a choke plate did on a carb, fuel injection can't change that, but can't use a choke plate either, no jets, so computer has to run the equivalent of a Choke until engine warms up.
Choke mode is based solely on ECT(engine coolant temp) sensor temp.
As temp rises idle will start to go down until warm engine "target idle" is reached
There would be no sudden drop in cold idle rpms, it is all gradual changes.
When you turn on the key, at any engine temp, the computer will open the IAC valve all the way for starting, so when engine starts there should be a surge in RPMs, above 1,500, and then RPMs will drop to ECT sensor temp RPMs.
It reads like your ECT sensor may not be reporting cold temps accurately, which would cause idle RPMs to be too low and fuel mix not rich enough so engine is stumbling until it is warm enough to run at that idle and fuel mix.
If you have a scanner then check temp cold, before starting, then check it just after starting.
ECT sensor gets 5volts from computer on 1 wire, that 5 volts passes thru the variable resistor in the ECT and goes back to the computer on the other wire:
3volts = 65degF
2volts = 110degF
1volt = 150degF
.5volt = Operating temp, 195degF
So as engine warms up Return voltage goes down.
If there was a wiring problem then ECT might not be getting the full 5 volts, this 5 volts is shared by other sensors, or if Return voltage wire had corrosion then its voltage would be lower, giving computer a "false warm" voltage reading.
ECT sensor should be driver side front of engine just below intake, easier to see thru wheel well, it has 2 wires.
There is also an ECT SENDER, it has 1 wire, it is only used for the dash board temp gauge, sensor is only used by computer.