Two related Pattern 1 bugs:
1. The locals capture used `\\{([^}]+)\\}` (greedy non-`}` chars), so
`locals: { that: [1, 2, 3] }` truncated at the first `,` inside `[...]`
and bound `that` to `"[1"`. Switched to balanced-brace extraction +
`split_top_level` so nested arrays/objects survive.
2. `{ me: <X> }` was only forwarded to the SX runtime when X was a single
integer (eval-hs-with-me only accepts numbers). For `me: [1, 2, 3]`
or `me: 1` alongside other locals, `me` was silently dropped, so
`I contain that` couldn't see its receiver. Now any non-numeric `me`
value is bound as a local (`(list (quote me) <val>)`); a numeric
`me` alongside other locals/setups is also bound, so the HS expr
always sees its `me`.
comparisonOperator 79/83 → 81/83 (+2: contains/includes works with arrays).
bind unchanged (43/44).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
571 KiB
571 KiB