Variables don't update in loop??

Hello, I am using a loop: to SpawnCar() every x seconds at a position that updates every x seconds. I was confused that the cars were always spawning at the same location even though the variable they reference for position is getting updated. To double check that I’m not tweaking, I print out the variable when it gets updated, as well as when it gets referenced in the spawner function. AND IT PRINTS TWO DIFFERENT VALUES! It does not get changed anywhere else, and starts at -50k. Here is the code and debug log, is this a bug or am I missing something? I even tried assigning the value to a new variable every loop with same results.

TrafficLoop()<suspends>: void =
        Print("Traffic Started!")
        loop:
            if(trafficActive = true and Cars.Length < maxCars):
                SpawnCar()

            #check if race still going
            if(raceActive = true): 
                Print("end!")
                break
            #sleep before spawning next
            else Sleep(loopFreq)

    SpawnCar(): void =
        lane : int = GetRandomInt(0, 2)

        if(chosenLane := lanes[lane]):
            #where we spawning?
            xPos := chosenLane.GetTransform().Translation.X
            yPos := carSpawnPos
            zPos := 1.0
            spawnPos := vector3{X:= xPos, Y := yPos, Z:= zPos}

            #spawn car!
            newSpawn := SpawnProp(carProp, transform{Translation := spawnPos })
            #store
            if:
                newCar := newSpawn(0)?
                newArray := Cars + array{newCar}
                set Cars = newArray
            then:
                Print("{carSpawnPos}")

#This gets called from another verse device TrafficManager every x seconds
    ReceiveFirst<public>(posY : float): void =
        set carSpawnPos = posY - trafficSpawnDistance
        Print("{carSpawnPos}")

I tried a whole round of debugging and using claude couldn’t figure this out still, but it seems like the problem is that ReceiveFirst() is called by another Verse Device, and that somehow restricts access to variables that seem like they should be in scope. I moved my spawn function into ReceiveFirst but found that cars wouldn’t spawn because trying to access lanes[lane] failed even though the array can be accessed in SpawnCar with no problems. Wondering if this is a bug or intended…

Alright finally figured it out… the verse device editable reference to this TrafficManager script got reset to null at some point but I hadn’t thought of that being an option because somehow it was successfully calling ReceiveFirst in the Traffic Manager without a reference. Very strange, I guess this means in Verse functions called from another device are actually called from the device doing the calling?