Root cause: context called inside lambdas (e.g. swap!) went through nested cek_run with empty kont, so provide frames weren't found and never tracked to *bind-tracking*. Three changes in evaluator.sx: - step-sf-context: track context names (not frames) to *bind-tracking* — names work across cek_run boundaries via scope-peek fallback - bind continue: resolve tracked names to frames via kont-find-provide on rest-k before registering subscribers - subscriber: use empty kont instead of kont-extract-provides — old approach created provide frames whose continue handlers called scope-pop!, corrupting the scope stack 2752/2768 OCaml tests pass (all 7 bind subscriber tests fixed). 32/32 WASM native tests pass. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
277 KiB
277 KiB