Reduce Kotlin CI flakiness by caching Gradle
Conformance (Kotlin) went red on main at 85baf92 (run 34485516201) before it ran a single case:
Could not GET 'https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-gradle-plugins-bom/2.4.10/kotlin-gradle-plugins-bom-2.4.10.pom'. Received status code 403 from server: Forbidden
The same plugin had resolved for the Kotlin job minutes earlier in the same run. The working hypothesis was that the runner or SDK still encoded the fixture shape #164 corrected (string ids, PUT for the two entropy cases, the account prefix on the notification tray); that is refuted — at 85baf92 the Kotlin runner passes all 127 cases against the corrected fixtures locally. Re-running the failed job (attempt 2 of the same run, 14:04–14:06Z) passed, so this was a flake, not a fixture mismatch. The mechanism is Maven Central refusing a shared runner address during plugin resolution, which the Kotlin jobs invite because each one resolves the Gradle distribution, the Kotlin plugins and the SDK's dependencies from scratch on every run.
This is flake hardening, not a fix: it adds gradle/actions/setup-gradle (pinned, v6.3.0) to the Kotlin and Conformance (Kotlin) jobs. It restores the Gradle user home — the wrapper distribution and the modules-2 dependency cache — from the cache main writes (read-only on branches, the action's default). Every plugin and dependency version here is pinned, so a warm job never sends Central the request that failed; only a cold cache or a version bump goes back to Central, which shrinks the exposure rather than removing it.
Verified locally at 85baf92 with the corrected fixtures:
- Kotlin conformance: 127 passed, 0 failed, 0 skipped
- Go conformance: 127 passed, 0 failed, 0 skipped
- Rust conformance: 127 passed; runner tests 18 passed
- Kotlin unit tests (
:fizzy-sdk:allTests): 41 tests, 0 failures - actionlint and zizmor on
test.yml: unchanged from main (the one pre-existing low finding is the./.github/workflows/smithy-verify.ymlself-reference)
Unrelated and pre-existing: the default-setup CodeQL Analyze (java-kotlin) check fails on every main run since at least 1f1c3ca ("CodeQL could not process any code written in Java/Kotlin" — its autobuild does not see the multiplatform SDK). It lives outside this repo's workflows and this change does not touch it.
Babysitting the review loop here until Copilot and Codex converge.