And for flow versions:
Flow versions are user-provided strings that are supposed to help with managing code changes, especially for flows that you operationalize yourself (i.e., flows and flow runs that aren't generated from a deployment). For example, maybe it's a machine name, git commit sha, or just a string "testing".
Because they are user-provided, they only get set after the run has begun -- the scheduler can't set the version on the run.