From 651077d7b9a1af3ae5a939f265ed85d147e7fc34 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Sun, 3 May 2026 17:36:43 +0100 Subject: [PATCH] ci(antipattern): broaden TS allowlist v2 --- .github/workflows/rsr-antipattern.yml | 32 ++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/.github/workflows/rsr-antipattern.yml b/.github/workflows/rsr-antipattern.yml index 7b81df1..ffeff13 100644 --- a/.github/workflows/rsr-antipattern.yml +++ b/.github/workflows/rsr-antipattern.yml @@ -23,12 +23,38 @@ jobs: - name: Check for TypeScript run: | - if find . -name "*.ts" -o -name "*.tsx" | grep -v node_modules | grep -q .; then + # Allowlist (TS legitimate as a bridge/adapter to a non-ReScript ecosystem): + # bindings/ - language bindings (Deno/TS/AssemblyScript FFI) + # *.d.ts - TypeScript type declarations for ReScript FFI + # tests/, test/ - Deno test runners + # scripts/ - Deno build scripts + # mcp-adapter/ - MCP server adapters (MCP is Deno/TS-typed by spec) + # *vscode* - VSCode extensions (TS is the ecosystem default) + # cli/ - CLI entry points (Deno scripts) + # mod.ts - canonical Deno module entrypoint + # *lsp-server.ts, *lsp.ts - Language Server Protocol implementations + # deno-*/ - subprojects explicitly named for Deno + TS_FILES=$(find . \( -name "*.ts" -o -name "*.tsx" \) \ + | grep -v node_modules \ + | grep -v '/bindings/' \ + | grep -v '\.d\.ts$' \ + | grep -v '/tests/' \ + | grep -v '/test/' \ + | grep -v '/scripts/' \ + | grep -v '/mcp-adapter/' \ + | grep -Ev '/[^/]*vscode[^/]*/' \ + | grep -v '/cli/' \ + | grep -v '/mod\.ts$' \ + | grep -Ev 'lsp[-_]?server\.ts$' \ + | grep -Ev '[/-]lsp\.ts$' \ + | grep -Ev '/deno-[^/]+/' \ + || true) + if [ -n "$TS_FILES" ]; then echo "❌ TypeScript files detected - use ReScript instead" - find . -name "*.ts" -o -name "*.tsx" | grep -v node_modules + echo "$TS_FILES" exit 1 fi - echo "✅ No TypeScript files" + echo "✅ No TypeScript files outside allowlisted bridge/adapter paths" - name: Check for Go run: |