W14: pin K49 void-elements spec fix; discover sx_render.ml regen drift (test-only)
K49: area/base/embed/param/track were in VOID_ELEMENTS but missing from
HTML_TAGS — render fell through to "Undefined symbol: base". dc7aa709 fixed
spec/render.sx; add suite gate-K49-void-elements-renderable (3 tests): the
spec registry contains all five, and render-to-html renders each as a
self-closing void. 264 passed / 0 failed under OCaml run_tests.
DISCOVERY (recorded in the briefing's Blocked section): the generated
hosts/ocaml/lib/sx_render.ml was never regenerated after the spec fix — its
stale html_tags_list still lacks the five tags, so the runner's native
render-html path STILL errors. Fix is a bootstrap_render.py regen (hosts
lane, out of scope for this test-only loop). Live evidence for F13
(regen-diff CI gate). Pin covers the spec side only for now.
Also corrects the checklist label: K49 = void elements; the depth/cycle
guard is K16 (OPEN, W8).
Test-only: no semantics edits, no push.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -47,7 +47,9 @@ Pin each confirmed-and-fixed finding with a minimal repro. Add suites to
|
||||
- [x] K18 [W7] — `expt` overflow now float-promotes (no 63-bit wrap)
|
||||
- [x] K20 [W7] — `contains?` now supports dict key membership
|
||||
- [x] K09/K11/K39 [W5] — longhand `unquote-splicing`, guard sentinel gensym, `do` IIFE-head
|
||||
- [ ] K49 [W8] — render depth/cycle guard (infinite recursive component)
|
||||
- [x] K49 [W8] — five void elements (area/base/embed/param/track) renderable
|
||||
(spec side; native regen drift → see Blocked). NB: the depth/cycle guard
|
||||
is K16 [W8], still OPEN — not a W14 pin target until its fix lands
|
||||
- [ ] crit-2 [W1] — signal-return frame key (verify the pin is non-vacuous)
|
||||
- [ ] C1/C1b [W3] — HTTP-mode concurrency fixes, pin
|
||||
- [ ] S4 [conformance] — housekeeping repro, pin
|
||||
@@ -77,6 +79,18 @@ Pin each confirmed-and-fixed finding with a minimal repro. Add suites to
|
||||
|
||||
## Progress log (newest first)
|
||||
|
||||
- 2026-07-03 — **K49 void-elements pin (item A.4) + regen-drift DISCOVERY**.
|
||||
Corrected the checklist label first: K49 is "five void elements
|
||||
unrenderable" (core.md:335), not the depth guard (that's K16, OPEN). Added
|
||||
suite `gate-K49-void-elements-renderable` (3 tests): spec `HTML_TAGS`
|
||||
contains all five; `(render-to-html '(base :href "x") (make-env))` →
|
||||
`<base href="x" />`; all five render self-closing. Runner-env gotchas:
|
||||
`current-env`/`symbol` are not bound in run_tests — use `(make-env)` and
|
||||
literal quoted forms. **Discovery:** the first draft pinned via the
|
||||
runner's native `render-html` and FAILED — `hosts/ocaml/lib/sx_render.ml`
|
||||
(generated) was never regenerated after dc7aa709's spec fix, so the native
|
||||
render path still errors on the five tags. Recorded under Blocked; live
|
||||
evidence for F13 (regen-diff gate). 264 passed / 0 failed. Test-only.
|
||||
- 2026-07-03 — **K09/K11/K39 W5 special-form pins (item A.3)**. Three suites
|
||||
added to `spec/tests/test-gate-pins.sx`: `gate-K09-longhand-unquote-splicing`
|
||||
(R7RS longhand `(unquote-splicing X)` now splices, incl. empty-list case;
|
||||
@@ -102,4 +116,15 @@ Pin each confirmed-and-fixed finding with a minimal repro. Add suites to
|
||||
promotion). Verified 4/4 green under the OCaml run_tests kernel. Test-only.
|
||||
|
||||
## Blocked
|
||||
- (none)
|
||||
- **K49 native path — sx_render.ml regen drift** (found 2026-07-03 while
|
||||
pinning A.4): dc7aa709 fixed HTML_TAGS in `spec/render.sx` but never re-ran
|
||||
`hosts/ocaml/bootstrap_render.py`, so the generated
|
||||
`hosts/ocaml/lib/sx_render.ml` still carries a stale `html_tags_list`
|
||||
without area/base/embed/param/track. The runner's native `render-html`
|
||||
convenience (and any native fast-path render) therefore STILL throws
|
||||
`Undefined symbol: base` — dc7aa709's "verified on the native binary" claim
|
||||
did not cover this path. Fix = regen (hosts lane, semantics-adjacent — out
|
||||
of scope for this test-only loop). This is a live instance of **F13**
|
||||
(regen-diff CI gate, section-B/D territory): a regen-diff check would have
|
||||
caught it at commit time. The K49 pin covers the spec side only; when the
|
||||
regen lands, extend the suite with `render-html`-path assertions.
|
||||
|
||||
Reference in New Issue
Block a user