Its hard to discuss the fuel calcs without the overall picture of the ECU engine model, and I will write up a more detailed explanation of the fuel calcs soon.
After a cold start the ox sensor reads lean (0V) and won't do anything until it heats up to about 300C. During this time the ECU uses 4 cold start trim counters to add fuel to the basic model. These counters are set to specific values (from internal maps) at startup depending on coolant temp, and rapidly count down with time and temperature until they reach 0, at which point cold start enrichment is over. The longest one lasts until a coolant temp of 60C is reached, the others are faster. They also drop with time.
Now, the switch from open loop to closed loop happens when the ECU sees the O2 sensor switch from lean to rich. For this morning, which was 7C here in So Cal, it took 2 minutes before the ECU switched to closed loop. At that point the mixture will be forced to stoichiometric unless the ECU is forced open loop for other reasons (like high load). So, after cold startup, you will be running open loop, but the ECU is calibrated to get the fuel pretty close on startup to help with lightoff emissions.
Vf will read 0V when open loop. You should not see 2.5V right after a cold start.
You can see a datalog of my cold start this morning. Warning: this will waste 2 min of your life. Note that the purple line (short term fuel trim) stays at 100% for most of the datalog because fuel control is open loop after a cold start. At about 1:56 it starts to move indicating closed loop fuel control has started. Even though it in closed loop, the fuel enrichment continues to help the model stay close to the actual required values.
[video=youtube;cu6TJqXtBV4]http://www.youtube.com/watch?v=cu6TJqXtBV4&feature=youtu.be[/video]