Commit 7282b1a
ci(language-policy): carve out Kotlin/JVM consumer interop from banned-languages gate (#417)
## 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](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>1 parent d135b05 commit 7282b1a
1 file changed
Lines changed: 27 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
200 | 200 | | |
201 | 201 | | |
202 | 202 | | |
203 | | - | |
| 203 | + | |
204 | 204 | | |
205 | 205 | | |
206 | 206 | | |
| |||
307 | 307 | | |
308 | 308 | | |
309 | 309 | | |
310 | | - | |
311 | | - | |
312 | | - | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
313 | 335 | | |
314 | 336 | | |
315 | 337 | | |
| |||
322 | 344 | | |
323 | 345 | | |
324 | 346 | | |
325 | | - | |
| 347 | + | |
326 | 348 | | |
327 | 349 | | |
328 | 350 | | |
| |||
0 commit comments