Skip to content

ci(language-policy): carve out Kotlin/JVM consumer interop from banned-languages gate#417

Merged
hyperpolymath merged 1 commit into
mainfrom
carveout/kotlin-jvm-interop-language-policy
Jun 24, 2026
Merged

ci(language-policy): carve out Kotlin/JVM consumer interop from banned-languages gate#417
hyperpolymath merged 1 commit into
mainfrom
carveout/kotlin-jvm-interop-language-policy

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

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/ and clients/vscode/ carve-outs.

The gate

The single gate that flags these repos is the language-policy job's JAVA_FILES step in .github/workflows/governance-reusable.yml (the governance-reusable that all three repos call via their governance.yml). It globbed *.java *.kt *.kts and hard-failed any match outside the narrow Android-Java carve-out. (Hypatia's cicd_rules.ex has 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)

Repo Path Files Class
proven-servers bindings/kotlin/** ~102 consumer binding
proven bindings/kotlin/** + bindings/groovy/** ~5 consumer binding
universal-language-server-plugin clients/jetbrains/** 1 editor-host plugin (IntelliJ Platform API is Kotlin-native)

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/

*.groovy is added to the git ls-files set 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_FILES pipeline against each repo's tracked files: all .kt/.kts/.groovy under the three carve-out dirs are now excluded. universal-language-server-plugin is fully clean on this check.

Note: proven and proven-servers also carry bindings/java/** (JNI wrappers, ~100 / ~22 files) which the pre-existing *.java glob flags independently of this change. That is the same consumer-binding pattern but was out of scope for this task (Kotlin/Groovy/JetBrains only) and is left for an owner decision rather than silently broadening the Java ban.

No licence/SPDX headers touched.

🤖 Generated with Claude Code

…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>
@hyperpolymath hyperpolymath merged commit 7282b1a into main Jun 24, 2026
10 of 20 checks passed
@hyperpolymath hyperpolymath deleted the carveout/kotlin-jvm-interop-language-policy branch June 24, 2026 14:31
hyperpolymath added a commit that referenced this pull request Jun 24, 2026
… (#419)

Kotlin is not exempted. Removes the
bindings/kotlin/bindings/groovy/clients/jetbrains carve-out from #417.
FFI/interop must be Idris2-ABI -> Zig FFI (C last resort); the
proven/proven-servers JVM bindings are an architecture violation to
re-do as Zig FFI.
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