Reproducible Example
Start this workflow paused (it helps if you have as many platforms as possible to choose from in the subshell):
[scheduling]
[[graph]]
R1 = foo
[runtime]
[[foo]]
script = cylc message -- "$(hostname)"; false
platform = $(python -m random -c platform1 platform2 platform3 platform4)
Trigger the task - you will see the scheduler report it is on one platform but the actual platform it is submitted to will be revealed to be different by the message that comes in.
Expected Behaviour
The unexpected behaviour is that the platform subshell is being re-evaluated when it should be cached.
The expected behaviour is that the the task remote inits on the platform that has already been evaluated. Subsequent submissions should re-evaluate it once on each submission.