Dry run and actual order differ

I’m working on a change to our Gradle build that requires fairly specific task ordering and I’m seeing a difference between the ordering of tasks when I do a dry run vs when I run for real. The “for real” run executes in the correct order but the “dry run” doesn’t.

The incorrect dry run has:

:qa:rolling-upgrade:v6.4.0-SNAPSHOT#oneThirdUpgradedTestCluster#start SKIPPED
... snip ...
:qa:rolling-upgrade:v6.4.0-SNAPSHOT#oneThirdUpgradedTestCluster#configure SKIPPED

The correct real run has:

:qa:rolling-upgrade:v6.4.0-SNAPSHOT#oneThirdUpgradedTestCluster#configure (Thread[Task worker for ':',5,main]) completed. Took 0.001 secs.
:qa:rolling-upgrade:v6.4.0-SNAPSHOT#oneThirdUpgradedTestCluster#start (Thread[Task worker for ':',5,main]) completed. Took 0.019 secs.

I played around with it for a while, printing out the dependencies all over the place and v6.4.0-SNAPSHOT#oneThirdUpgradedTestCluster#start always depends on v6.4.0-SNAPSHOT#oneThirdUpgradedTestCluster#configure when I look, but dry run is still doing them out of order. Any idea what is going on?