>CI should be deterministic That is an interesting view. One of the approaches that I have not considered earlier is "seed matrix randomization from PR index and the branch name". That would make the set of jobs consistent for each execution of the same PR.
However, based on my testng/testng experience, it is just fine if the set of CI jobs varies. The CI job description does clarify what was special (e.g. timezone, JVM, OS, etc). >And also tests with different Guava versions Do you suggest test all OS, all Guava versions, all timezones in CI? That is hard to maintain and it takes CI time >CI should be deterministic. So that if it breaks, the person to fix it is clear CI resources are limited, and we can't infinitely scale the build matrix. I do not really see why Guava versions are more important than operating systems. The users should prefer recent Guava versions, and the idea of supporting (and testing!) ancient Guava versions is doubtful. On the other hand, we might want to verify different cases like -XX:hashCode=2 that makes every Object#hashCode() to return 1 always. Vladimir