ci(language-policy): carve out Kotlin/JVM consumer interop from banned-languages gate#417
Merged
Conversation
…d-languages gate
The governance-reusable.yml `language-policy` job's JAVA_FILES check globs
`*.java *.kt *.kts` and hard-fails any match outside the narrow Android
carve-out. This flagged three repos that carry Kotlin/Groovy as legitimate
consumer-facing JVM interop (NOT primary mobile app code), which Tauri/Dioxus
cannot replace:
- proven-servers -> bindings/kotlin/** (~102 files)
- proven -> bindings/kotlin/** + bindings/groovy/**
- universal-language-server-plugin -> clients/jetbrains/** (Kotlin-native
IntelliJ Platform plugin API)
Add three path-exclusion carve-outs to JAVA_FILES, exactly parallel to the
existing TS bindings/typescript/ + bindings/deno/ and clients/vscode/
editor-host carve-outs:
- bindings/kotlin/ (consumer binding)
- bindings/groovy/ (consumer binding)
- clients/jetbrains/ (editor-host plugin)
.groovy is added to the ls-files set so the carve-out is explicit and future
Groovy outside these dirs is still caught. Mobile Kotlin/Swift remains banned.
The carve-out and its rationale are documented inline in the workflow comment
block (the single source of truth). No licence/SPDX edits.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds a policy carve-out so legitimate Kotlin/Groovy JVM interop is no longer flagged by the estate banned-languages check — exactly parallel to the existing TS
bindings/typescript//bindings/deno/andclients/vscode/carve-outs.The gate
The single gate that flags these repos is the
language-policyjob'sJAVA_FILESstep in.github/workflows/governance-reusable.yml(the governance-reusable that all three repos call via theirgovernance.yml). It globbed*.java *.kt *.ktsand hard-failed any match outside the narrow Android-Java carve-out. (Hypatia'scicd_rules.exhas no Kotlin/Java rule, so there is no hypatia carve-out to add — this workflow is the only gate.)Affected repos (Kotlin/Groovy interop, NOT mobile app code)
proven-serversbindings/kotlin/**provenbindings/kotlin/**+bindings/groovy/**universal-language-server-pluginclients/jetbrains/**Tauri/Dioxus cannot replace a consumer binding or an IDE-host plugin, so these are exempted, not deleted.
Change
Three path-exclusion carve-outs added to
JAVA_FILES:bindings/kotlin/bindings/groovy/clients/jetbrains/*.groovyis added to thegit ls-filesset so the carve-out is explicit and any future Groovy outside these dirs is still caught. Mobile Kotlin/Swift remains banned (the Mobile Development policy is unchanged). Full rationale + unblock conditions are in the workflow comment block (the single source of truth).Verification
Simulated the post-change
JAVA_FILESpipeline against each repo's tracked files: all.kt/.kts/.groovyunder the three carve-out dirs are now excluded.universal-language-server-pluginis fully clean on this check.No licence/SPDX headers touched.
🤖 Generated with Claude Code