Skip to content

ci: cool down Kotlin bumps to match CodeQL extractor lag - #10

Merged
aoreshkov merged 1 commit into
mainfrom
ci/kotlin-cooldown-codeql-lag
Jul 26, 2026
Merged

ci: cool down Kotlin bumps to match CodeQL extractor lag#10
aoreshkov merged 1 commit into
mainfrom
ci/kotlin-cooldown-codeql-lag

Conversation

@aoreshkov

Copy link
Copy Markdown
Owner

Why

PR #4 (org.jetbrains.kotlin.jvm 2.4.0 → 2.4.10) has a red Analyze (java-kotlin) check:

Kotlin version 2.4.10 is too recent. CodeQL currently supports versions below 2.4.10

This is not fixable in this repo. The check lives in CodeQL's Kotlin extractor, which runs
inside the Kotlin compiler, so no Gradle flag avoids it. The fix is already merged upstream —
github/codeql#22194 (2026-07-15) raises the ceiling
to < 2.4.20 — but it missed the CodeQL 2.26.1 cut by a day (verified: the merge commit is not an
ancestor of codeql-cli/v2.26.1), so it ships in 2.26.2, expected early August.

What this changes

CodeQL's Kotlin support has consistently trailed Kotlin releases:

Kotlin release CodeQL support Lag
2.3.20 (2026-03-16) 2.25.2 (2026-04-15) 30 days
2.4.0 (2026-06-03) 2.26.0 (2026-07-08) 35 days
2.4.10 (2026-07-14) 2.26.2 (~early Aug) ~21-25 days

So Dependabot proposing Kotlin the week it ships just parks a red PR for a month. A 30-day
cooldown scoped to org.jetbrains.kotlin* lines the PR up with when it can actually merge.
Everything else in the gradle ecosystem keeps the 3-day default.

Kotlin's .10/.20 releases are semver-patch bumps relative to each other, so
semver-patch-days does most of the work; semver-minor-days matches it so a 2.5.0 doesn't slip
through. Gradle supports both sub-options.

This is preventative — it does not unblock #4, which stays open until CodeQL 2.26.2. It matters
because Kotlin 2.4.20-Beta2 is
already out and, per github/codeql#22189, "2.4.20
contains compiler plugin changes"
— so it will need real extractor work and will block again.

Rejected alternatives

  • build-mode: none — turns the job green instantly, but the docs are explicit: "if
    build-mode is set to none and Kotlin code is found in the repository, the Kotlin code will not
    be analyzed and a warning will be produced."
    This codebase is 100% Kotlin, so CodeQL would scan
    nothing. A silent security regression, not a fix.
  • Bypassing the version check — no supported escape hatch exists (no override env var in
    github/codeql; the only CODEQL_EXTRACTOR_KOTLIN_* references are logging/telemetry).
  • Pinning tools: on the init step to grab 2.26.2 ahead of a codeql-action release — the
    action bumps its default bundle within hours of a bundle publish (2.26.1: bundle 09:06 UTC, action
    15:35 UTC), so this buys nothing and costs reproducibility.

🤖 Generated with Claude Code

CodeQL's Kotlin extractor runs inside the Kotlin compiler and hard-errors on
versions it does not yet support ("Kotlin version 2.4.10 is too recent"), so
the CodeQL workflow cannot compile a too-new Kotlin at all. Support has
consistently trailed Kotlin releases by ~21-35 days (2.3.20: 30d, 2.4.0: 35d,
2.4.10: merged upstream in github/codeql#22194, ships in CodeQL 2.26.2).

Dependabot proposing Kotlin the week it ships therefore just parks a red PR
until the next CodeQL CLI release lands, as with #4. A 30-day cooldown scoped
to org.jetbrains.kotlin* lines the PR up with when it can actually merge; the
rest of the Gradle dependencies keep the 3-day default.

Kotlin's .10/.20 releases are semver-patch bumps relative to each other, so
semver-patch-days carries most of the weight; semver-minor-days matches it so
a 2.5.0 does not slip through the gap.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@aoreshkov
aoreshkov merged commit a6a400a into main Jul 26, 2026
3 checks passed
@aoreshkov
aoreshkov deleted the ci/kotlin-cooldown-codeql-lag branch July 26, 2026 05:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant