What's in this release:
- 8a2f93e430 reflection: add `val`/`var` to canonical `KEYWORDS` table
so `%stryke::keywords` / `%k` exposes them alongside every other
declarator (87 entries; byte-sorted; `is_stryke_keyword` invariant
preserved).
- e23c708cf1 fix(vm/fusevm): bail block-region bridge on 2-arg `index`
/ `rindex` over captured outer-scope strings — same i64-seeding
hazard the StrEq/StrNe bail right above documents. Surfaced as the
Rosetta `pangram` task returning every letter as "missing" for the
canonical "the quick brown fox …" string. Bridge still lowers
`index(LITERAL, _) < N` and other plain-remap-free shapes.
- 188c21c1c7 tests/docs(var/val): audit gaps — extended sample
keyword lists in `keywords_hash_tests.rs` + `reflection_pin.rs`,
added `rejects_eof_after_{var,val}_sigil` parse-error parity tests
(contextual-keyword aware), pinned `var`/`val` highlight class in
the IntelliJ lexer integration test, and updated `ast.rs::MyExpr`
doc to note the `var`/`val` → `"my"` parse-time normalization.
Verification:
- All 1648 Rosetta files: 18090 assertions, 8091 tests — ALL PASS
(was 1647/1648 in v0.16.15 — pangram failed)
- `cargo test --lib keywords_hash_tests` 20/20 green
- `cargo test --tests rejects_eof_after` 4/4 green
- `demos_no_interop::demo_var_val{,_kotlin_port}` green