Skip to content

Commit 48f4808

Browse files
committed
revert(policy): Kotlin is goodbye — remove JVM-interop carve-out (#417)
Reverts the bindings/kotlin + bindings/groovy + clients/jetbrains exemptions added in #417. There is NO carve-out for hand-written JVM bindings: FFI/interop must be Idris2-ABI -> Zig FFI (or Idris2 -> C as a last resort). The proven / proven-servers Kotlin/Java/Groovy bindings are an architecture violation to be re-done as Zig FFI (owner directing the proven-servers bot). Mobile = Tauri/Dioxus. Only the minimal Android Java platform shim carve-out remains.
1 parent 49ed471 commit 48f4808

1 file changed

Lines changed: 10 additions & 23 deletions

File tree

.github/workflows/governance-reusable.yml

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -309,29 +309,16 @@ jobs:
309309
# delegating wrapper (typically <10 LoC) that JNIs into Rust/Zig
310310
# immediately.
311311
#
312-
# Kotlin/JVM INTEROP carve-out 2026-06-24 (parallel to the TS
313-
# `bindings/typescript/` / `bindings/deno/` / `clients/vscode/`
314-
# interop carve-outs): Kotlin/Groovy is banned for MOBILE app code
315-
# (→ Tauri/Dioxus), but is PERMITTED as consumer-facing JVM interop
316-
# — directories where we author bindings that expose an estate
317-
# library to JVM consumers, or an IDE-host plugin whose plugin API
318-
# is Kotlin-native. Tauri/Dioxus cannot replace a consumer binding
319-
# or an editor-host plugin. Three path classes are exempt:
320-
# * **/bindings/kotlin/** — Kotlin bindings exposing a library to
321-
# JVM consumers (exemplars: proven-servers, proven).
322-
# * **/bindings/groovy/** — Groovy bindings, same rationale
323-
# (exemplar: proven).
324-
# * **/clients/jetbrains/** — JetBrains IDE plugin; the IntelliJ
325-
# Platform plugin API is Kotlin-native (exemplar:
326-
# universal-language-server-plugin).
327-
# Unblock condition: never (consumer binding / editor-host plugin).
328-
# `.groovy` is included in the ls-files set ONLY so the carve-out is
329-
# explicit and future Groovy bindings outside these dirs are caught.
312+
# Kotlin/Groovy: NO JVM-interop exemption (reverted 2026-06-24).
313+
# Kotlin is goodbye. There is NO carve-out for hand-written JVM
314+
# bindings: FFI/interop to other ecosystems MUST be authored as
315+
# Idris2-ABI → Zig FFI/API (Idris2 → C only as an absolute last
316+
# resort if Zig genuinely cannot reach the boundary), never as
317+
# Kotlin/Java/Groovy `bindings/*`. Mobile uses Tauri/Dioxus. The
318+
# only remaining Java carve-out is the minimal Android platform
319+
# shim above. `.groovy` is detected so it is banned everywhere.
330320
JAVA_FILES=$(git ls-files '*.java' '*.kt' '*.kts' '*.groovy' \
331-
| grep -vE '(^|/)android/.*/src/.*\.java$' \
332-
| grep -vE '(^|/)bindings/kotlin/' \
333-
| grep -vE '(^|/)bindings/groovy/' \
334-
| grep -vE '(^|/)clients/jetbrains/' || true)
321+
| grep -vE '(^|/)android/.*/src/.*\.java$' || true)
335322
SWIFT_FILES=$(git ls-files '*.swift' || true)
336323
DART_FILES=$(git ls-files '*.dart' 'pubspec.yaml' || true)
337324
# V-lang detected by manifest (v.mod / vpkg.json); the .v extension
@@ -344,7 +331,7 @@ jobs:
344331
enforce "Go files" "use Rust/WASM instead" "$GO_FILES"
345332
enforce "Python files" "Python is fully banned — use AffineScript/Rust/SPARK/Julia (SaltStack carveout removed 2026-01-03)" "$PY_FILES"
346333
enforce "Makefiles" "use Mustfile/justfile instead" "$MAKE_FILES"
347-
enforce "Java/Kotlin/Groovy files" "use Rust/Tauri/Dioxus instead (consumer JVM interop is exempt under bindings/kotlin, bindings/groovy, clients/jetbrains)" "$JAVA_FILES"
334+
enforce "Java/Kotlin/Groovy files" "Kotlin is goodbye — apps use Tauri/Dioxus; FFI/interop must be Idris2-ABI -> Zig FFI (or Idris2 -> C as a last resort), NOT hand-written JVM bindings" "$JAVA_FILES"
348335
enforce "Swift files" "use Tauri/Dioxus instead" "$SWIFT_FILES"
349336
enforce "Flutter/Dart files" "use Tauri/Dioxus instead (Google lock-in)" "$DART_FILES"
350337
enforce "V-lang manifests (v.mod / vpkg.json)" "V-lang is banned since 2026-04-10 — migrate to Zig" "$VMOD_FILES"

0 commit comments

Comments
 (0)