qa: harden new-language support + release prep (v2.0.4)#94
Merged
Conversation
….0.4 QA pass over the new languages (spec-07 IaC + spec-08 general-purpose) ahead of release. End-to-end testing of the real `openlore analyze` CLI on a polyglot repo surfaced a production bug not caught by unit tests: - BUG: web-tree-sitter is a singleton emscripten module with a shared heap, so loading both WASM grammars (Dart + Lua) into one instance silently corrupted the second grammar's parses — a polyglot Lua+Dart repo lost half its Lua functions. FIX: load each WASM grammar in its own module instance (bust the require cache per grammar), giving each an isolated runtime + heap. Verified end-to-end: all 10 new languages now graph fully and deterministically in one analyze run; search_code/orient surface them via the MCP layer. - Regression test (wasm-multigrammar.test.ts) building Dart+Lua together, both orders. - Pin ABI-sensitive deps exactly (web-tree-sitter 0.25.0, tree-sitter-wasms 0.1.13) so a fresh install can't drift the WASM ABI match. - Bump version 2.0.3 → 2.0.4. - docs/languages.md: document the per-grammar WASM isolation; refresh Dart comment. Verified: lint, typecheck, 2907 tests, build all green; self-analyze on the OpenLore repo (1517 fns / 1370 edges) runs clean; determinism holds across runs. Co-Authored-By: Claude Opus 4.7 (1M context) <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.
Summary
QA / release-readiness pass over the new-language work (spec-07 Infrastructure-as-Code and spec-08 general-purpose languages) ahead of tagging a release.
Production bug found via real end-to-end testing (not caught by unit tests):
Running the actual
openlore analyzeCLI on a polyglot repo revealed thatweb-tree-sitteris a singleton emscripten module with a shared heap — loadingboth WASM-backed grammars (Dart + Lua) into one instance silently corrupted the
second grammar's parses. A polyglot Lua+Dart repo lost half its Lua functions
(2 → 1), producing a confidently-wrong graph.
Fix: load each WASM grammar in its own module instance (bust the require
cache per grammar) → isolated runtime + heap per grammar, so they never interfere.
Verified end-to-end: all ten new languages now graph fully and deterministically
in a single analyze run, and
search_code/orientsurface them via the MCP layer.Changes
loadWasmGrammarSoft(the fix).wasm-multigrammar.test.ts(Dart + Lua in one build, both orders).web-tree-sitter@0.25.0,tree-sitter-wasms@0.1.13(a fresh install can't drift the WASM ABI match).docs/languages.md; refresh Dart comment.Verification
openlore analyzeon a 10-language polyglot repo: every language produces complete nodes + edgessearch_code(spans 8 languages, language filter works) andorientverified via MCP handlersdependencies(ship to consumers); release workflow on node 24🤖 Generated with Claude Code