skillscript-runtime v0.26.6
Upgrade impact: none (additive; help-content + server-instructions only). No runtime behavior change.
The 0.26.5 error-handling topic taught a broken containment pattern: its flagship Rule 2 example put a per-leg (fallback:) on execute_skill legs and claimed it prevents a gather abort. It does not — and shipping it canonicalized the exact pattern that sank the 2026-07-05 morning brief (Perry c052581b, verified on the deployed 0.26.5 runtime).
- Corrected the mental model to two failure shapes → two tools. A MISSING VALUE (dispatch error,
shellspawn-fail/timeout, empty result, unresolved ref) is contained by(fallback: "…")/ afallbackfilter. A RAISED THROW ($ json_parseon off-shape input;execute_skillwhose child throws — e.g. the child's output template references an unset var) is NOT caught by(fallback:)— the throw propagates past the trailer and aborts the target. A raised throw is contained by anelse:handler, or prevented by a structural guard (pre-bind degraded defaults + acontains/shape check before the risky op). - Every prescription was gate-dogfooded on the runtime before shipping (the whole bug was a doc that confidently prescribed an unverified mechanism): confirmed
(fallback:)catches neither an execute_skill child-throw nor a json_parse malformed-throw; confirmedelse:catches both; confirmed the structural guard degrades cleanly.# OnError:was found inert (itsfallbackSkillExecutoris never wired in the runtime) and is therefore flagged as not-a-reliable-throw-container rather than prescribed. - Rule 2 now carries the corrected worked example (a throw-proof
get-weatherchild), and the quickstart + server-instructions robustness lines were corrected to the same two-shapes framing.