From f2993f058295fa38373be9c7827adaeec443de3c Mon Sep 17 00:00:00 2001 From: giles Date: Sun, 26 Apr 2026 15:36:55 +0000 Subject: [PATCH] HS-plan: log Bucket F array-literal-arg fix +1; sync scoreboard Co-Authored-By: Claude Sonnet 4.6 --- plans/hs-conformance-scoreboard.md | 3 ++- plans/hs-conformance-to-100.md | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/plans/hs-conformance-scoreboard.md b/plans/hs-conformance-scoreboard.md index 9f011643..9bfa739e 100644 --- a/plans/hs-conformance-scoreboard.md +++ b/plans/hs-conformance-scoreboard.md @@ -4,7 +4,7 @@ Live tally for `plans/hs-conformance-to-100.md`. Update after every cluster comm ``` Baseline: 1213/1496 (81.1%) -Merged: 1311/1496 (87.6%) delta +98 +Merged: 1312/1496 (87.7%) delta +99 Worktree: all landed Target: 1496/1496 (100.0%) Remaining: ~192 tests (clusters 17/29(partial)/31 blocked; 33/34 partial) @@ -87,6 +87,7 @@ Defer until A–D drain. Estimated ~25 recoverable tests. | F1 | add CSS template interpolation | done | +1 | 5a76a040 | | F2 | empty multi-element (query→for-each) | done | +1 | 875e9ba3 | | F3 | hs-make-object _order + assert= for dicts | done | +1 | daea2808 | +| F4 | array literal arg to JS fn (sxToJs + reduce→SX) | done | +1 | da2e6b1b | ## Buckets roll-up diff --git a/plans/hs-conformance-to-100.md b/plans/hs-conformance-to-100.md index 5796d80b..1f63a671 100644 --- a/plans/hs-conformance-to-100.md +++ b/plans/hs-conformance-to-100.md @@ -177,6 +177,9 @@ Many tests are `SKIP (untranslated)` because `tests/playwright/generate-sx-tests ## Progress log +### 2026-04-26 — Bucket F: array literal arg to JS fn (+1) +- **da2e6b1b** — `HS Bucket F: array literal arg to JS fn fix (+1 test)`. Two-part fix: (a) `generate-sx-tests.py` `js_expr_to_sx` now translates `arr.reduce(fn, init)` → `(reduce fn init arr)`, `.map(fn)` → `(map fn arr)`, `.filter(fn)` → `(filter fn arr)` so SX list arguments work with JS array HO methods. (b) `host-call-fn` in `hs-run-filtered.js` adds `sxToJs` recursive converter that unwraps SX list `._type==='list'` to native JS arrays before calling native JS functions. Together these fix functionCalls "can pass an array literal as an argument". Suite hs-upstream-expressions/functionCalls: 8/12 (unchanged SKIP ratio). Test 597: 0/1 → 1/1. Smoke 0-195: 175/195 unchanged. + ### 2026-04-26 — Bucket F: hs-make-object _order + assert= for dicts (+1) - **daea2808** — `HS Bucket F: fix hs-make-object _order + assert= for dicts (+1 test)`. Two-part fix: (a) `runtime.sx` `hs-make-object` no longer appends `_order` key to HS object literals — V8's native string-key insertion order is sufficient, and the hidden key was breaking structural equality. (b) `generate-sx-tests.py` `emit_eval` now detects when `expected_sx` contains `{` (dict syntax) and emits `assert-equal` (which uses `equal?` for deep structural equality) instead of `assert=` (which uses `=`, reference equality for dicts). Together these fix arrayLiteral "arrays containing objects work". Suite hs-upstream-expressions/arrayLiteral: 7/8 → 8/8. Smoke 0-195 unchanged at 175/195.