Is it absolutely unconditionally true that Start runs BEFORE the FIRST Update?

I appreciate there are numerous questions / doco pages on the various aspects of what-comes-first.

But, is it absolutely true that Start() runs BEFORE the FIRST Update() ?

Is this always the case, even if the gameObject enters the scene inactive, it comes from a prefab, or whatever the hell else happens?

(You could almost ask: IS THERE ANY CASE where the first Update() WILL come prior to Start() ?)

Thanks.

FTR, this in relation to the astounding Jessy Insight here:

Astounding method to delay runloop until after Start()

Start is always called before the first Update (hence why it is called start). You can even test if for yourself by putting in Debug.Log(“This is start”) and Debug.Log(“This is update”) in each function.

Well Start won’t necessarily complete before the first Update, if Start is a coroutine, only the code before the yield will execute before Update, then Update, then Update again, then whatever comes after the yield. Thereafter the code will continue to run after Update.

IEnumerator Start()
{
     Debug.Log("Before Update");
     yield return null;
     Debug.Log("After Update");
     yield return null;
     while(true)
     {
         Debug.Log("Start coroutine");
         yield return null;
     }
}

void Update()
{
     Debug.Log("In Update");
}