diff --git a/plans/lua-on-sx.md b/plans/lua-on-sx.md index b0b6ea53..9607c63a 100644 --- a/plans/lua-on-sx.md +++ b/plans/lua-on-sx.md @@ -82,6 +82,7 @@ Each item: implement → tests → tick box → update progress log. _Newest first. Agent appends on every commit._ +- 2026-04-25: lua: scoreboard iteration — tried two-phase eval (extract top-level `function f` decls, evaluate them BEFORE the guard so they leak to top-level env, then run the rest inside guard). Broke method-decl tests because `function a:add(...)` requires `a` to exist, and `a = {...}` was in the deferred phase-2. Reverted. Real fix needs `_G` table or AST-level rewriting of top-level returns into chunk-result mutations. 393/393 green. - 2026-04-25: lua: scoreboard iteration — `string.dump` stub (returns string-of-fn). Diagnosed calls.lua: file ENDS with `return deep` (line 295), which makes my `lua-has-top-return?` correctly return true, triggering the guard, which scopes user defines and breaks loadstring's lexical capture of `fat`. The fix would require either rewriting top-level returns into a different mechanism (post-processing the AST) or implementing a real `_G` global table for global assignment/lookup. Both larger. - 2026-04-25: lua: scoreboard iteration — `math.mod` (Lua 5.0 alias for `fmod`), `math.frexp` (mantissa/exponent split), `math.ldexp` (m·2^e). math.lua moves past line-103 `math.mod` call. Timeouts 6→3, asserts 5→7. 393/393 green. - 2026-04-25: lua: scoreboard iteration — `unpack(t, i, j)` now treats explicit nil for `i` or `j` as missing (defaults to 1 and `#t`). vararg.lua-style `unpack(args, 1, args.n)` works when `args.n` is nil. Asserts 4→5, timeouts 8→6 (more tests reach assertions instead of timing out). 393/393 green.