We know from 1-dimensional theory that at the throat of the C-D nozzle the local Mach number should be exactly $1$, with a matching throat area $A_t$ specific to nozzle inlet $A_0$. However, in real-life rocket engines, throat area is always a little over or under $A_t$.
If we err on the side of opening up $A_t$, then gas will arrive at the throat slightly subsonic. However, we can simply make the throat a little longer, so that the gas leaks some heat and the local $T$ drops slightly, reaches Mach $1$ at the elongated throat section, then exit the throat and undergoes correct supersonic expansion.
If, on the other hand, $A_t$ is smaller than the theoretical value, then a shockwave will develop at the throat, which will compress the gas, raise local $T$ and decrease local $v$, therefore after shock the gas will be subsonic. But the shock maybe very weak, so that not a lot of entropy is added, and then the gas loses some heat, reaches chocked condition at the (once again slightly elongated) throat section, and undergoes correct supersonic expansion again.
Is my reasoning correct? Is this how the gas behave in real life rocket engines? Do most rocket engines err on the side of opening up rather than closing down the throat? Surely the rocket engine shouldn't have a throat that's vacillating between shock and no shock conditions, right?