skillscript-runtime v0.26.3
Upgrade impact: none (additive). Completes the 0.26.2 #2 fix on the code path it missed; nothing that worked in 0.26.2 changes.
foreachover an empty/whitespace string now iterates zero times for the${V}brace form too, not just$(REF). The 0.26.2 guard was added insideresolveListExpr's$(REF)branch, but the${V}brace form (and any expression resolved via substitution) falls through to a different path that still wrapped an empty resolved value as[""]→ one empty iteration. Since a caller-supplied-list skill typically writesforeach A in ${V}and passesVas a runtime input, the deployed bug was exactly the case 0.26.2 set out to fix (found by Perry re-verifying on the published runtime,2db95446). The empty→zero guard now sits on both paths;foreach A in ${V}withV=""/V=" "iterates zero times, matching$(V),[], and an absent ref. Root cause was a test-coverage gap — the 0.26.2 tests all drove the paren form; new end-to-end tests now drive the brace form viaexecute-with-inputs (the real caller path).