Skip to content

qa: harden new-language support + release prep (v2.0.4)#94

Merged
clay-good merged 1 commit into
mainfrom
qa-release-readiness
May 27, 2026
Merged

qa: harden new-language support + release prep (v2.0.4)#94
clay-good merged 1 commit into
mainfrom
qa-release-readiness

Conversation

@clay-good
Copy link
Copy Markdown
Owner

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 analyze CLI on a polyglot repo revealed that
web-tree-sitter is a singleton emscripten module with a shared heap — loading
both 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/orient surface them via the MCP layer.

Changes

  • Per-grammar WASM module isolation in loadWasmGrammarSoft (the fix).
  • New regression test wasm-multigrammar.test.ts (Dart + Lua in one build, both orders).
  • Pin ABI-sensitive deps exactly: web-tree-sitter@0.25.0, tree-sitter-wasms@0.1.13 (a fresh install can't drift the WASM ABI match).
  • Version 2.0.3 → 2.0.4.
  • Docs: document per-grammar WASM isolation in docs/languages.md; refresh Dart comment.

Verification

  • lint / typecheck / 2907 tests / build all green
  • Real CLI openlore analyze on a 10-language polyglot repo: every language produces complete nodes + edges
  • search_code (spans 8 languages, language filter works) and orient verified via MCP handlers
  • Self-analyze on the OpenLore repo itself (1517 fns / 1370 edges) runs clean
  • Determinism: byte-identical graph across two full analyze runs (incl. WASM path)
  • README languages section + "45 MCP tools" claim confirmed accurate
  • Grammar deps confirmed runtime dependencies (ship to consumers); release workflow on node 24

🤖 Generated with Claude Code

….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>
@clay-good clay-good merged commit 787483b into main May 27, 2026
4 checks passed
@clay-good clay-good deleted the qa-release-readiness branch May 27, 2026 21:12
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