Skip to content

widgets: native pages in .t27 -- html writer, json reader, jtag-verdict and race-the-bee - #10965

Merged
gHashTag merged 17 commits into
masterfrom
claude/t27-widgets-catalog-3e2d7f
Oct 19, 2026
Merged

gHashTag merged 17 commits into
masterfrom
claude/t27-widgets-catalog-3e2d7f

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Closes #10960. Epic #10937.

The stage "page" of the widget factory: html_out.t27 (stateless HTML writer), json_scan.t27 (JSON as byte spans, 284965 values of the widgets' 143 data files against JSON.parse, 6 known last-digit float differences), and two tools drawn natively from .t27 to wasm: jtag_verdict.t27 (3015 DOM comparisons against tool.js, 0 differences) and race_the_bee.t27 (59 comparisons including 13 data variants, 0 differences). Also gatle_rule.t27 (866178 comparisons against rule.js, 0 mismatches) and the logic stage's route (wasm through t27c gen and zig, since gen-js lowers no bodies, #10943). catalog.t27 records gatle at PORT_LOGIC and jtag-verdict and race-the-bee at PORT_DRAW.

Measured with t27c 0.5.2 test-report and t27b test. Not claimed: the pages in gHashTag/trinity still load the hand-written files until that repo's migration PR; the shared host (32 lines of glue) lives outside this repo.

🤖 Generated with Claude Code

claude and others added 16 commits October 19, 2026 14:25
…ols carry 22833 hand lines, 2775 of them pure logic (Closes #10938)

specs/widgets/catalog.t27 pins the census measured at trinity origin/main.
specs/t27f/widget_factory.t27 states six stages, the t27c-seal build key and the port gate.
specs/t27f/frontend.t27 registers SF_WIDGET_FACTORY. Epic #10937.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…wers no fn bodies, so the logic stage waits (Closes #10938)

specs/widgets/gatle_rule.t27 replaces rule.js as the single source. widget_factory.t27
records that gen-js/gen-ts emit declarations only. Epic #10937.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…s and embed sizes run native under t27b, 3 of 3 (Closes #10938)

specs/widgets/gallery_rules.t27 holds the decisions of scripts/widgets-from-spec.mjs
(trinity); the gallery data stays in trinity gallery.t27. Epic #10937.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…lOf, exit codes and hud views over bytes; 8 of 8 under t27c and t27b, byte-identical to metaOf on all 337 corpus files (Closes #10938)

specs/widgets/page_reader.t27 replaces the reading half of widgets-from-spec.mjs. Epic #10937.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…en-c and zig, 866178 comparisons against rule.js, 0 mismatches (Closes #10938)

gen-js lowers no fn bodies (#10943), but the path the Queen's app.wasm takes works: 490 bytes.
Epic #10937.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…nded buffer, escaping, en-US grouped numbers; 4 of 4 under t27c and t27b (Closes #10938)

Stage "page" of the widget factory: a view writes HTML into a fixed buffer and the host sets innerHTML.
Epic #10937.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…les and page in one .t27, a 9269-byte wasm, 3015 DOM comparisons against tool.js, 0 differences (Closes #10938)

specs/widgets/jtag_verdict.t27 holds the trinity spec's words and a native page (w_init, w_input,
w_click, w_hash, w_render, w_hash_out); html_out.t27 becomes a stateless writer (a pub var does not
cross a use). catalog.t27 records gatle at PORT_LOGIC and jtag-verdict at PORT_DRAW. Epic #10937.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…idget data files match JSON.parse except 6 numbers of 16-17 digits; html_out gains named fill (Closes #10938)

json_scan.t27 gives spans of values (obj_get, arr_at, str_byte with UTF-8 decoding, num_f64) so a
native view needs no tree. html_out.t27 gets fill_named and dec_to. Epic #10937.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…m, 59 DOM comparisons including 13 data variants, 0 differences (Closes #10938)

specs/widgets/race_the_bee.t27: the trinity spec's words plus the page (tabs, snapshot, lanes, head to
head, open issues) over json_scan spans; catalog.t27 records it at PORT_DRAW. Epic #10937.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…isons vs treemap.js, 0 mismatches (Closes #10938)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…sons vs lut.js, 0 mismatches (Closes #10938)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… vs ltpparse.js, 0 mismatches (Closes #10938)

specs/widgets/lut_depth_logic.t27 ports every function of
apps/website/public/widgets/lut-depth/ltpparse.js (parseLtp, classOf, bare;
listsOf is only a renaming of the spec constants and is left to the glue).
Built to wasm (4430 bytes with a thin C-ABI wrapper) and compared field by
field with the original JavaScript on the shipped sample, its prefixes and
variants, mutations and grammar fuzz: 0 mismatches; a negative control
(class_of min -> max) gives 2838.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… vs statparse.js, 0 mismatches (Closes #10938)

specs/widgets/stat_card_logic.t27 ports parseStat (with a strict JSON.parse
reader and the JS object rules it leaned on: duplicate keys, key order,
Number() of counts, the module expansion of flatten) and badgeSvg. listsOf is
a renaming of spec constants and is left to the glue. Cases the port does not
carry (string/array counts, numbers not exactly rounded here, lone surrogates,
integer-like or Object.prototype type names) answer status 9, listed in the
header. Built to wasm (13741 bytes with a thin C-ABI wrapper) and compared
field by field with the original JavaScript: 0 mismatches; a negative control
(group priority reversed) gives 2469.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…sons vs skyline.js, 0 mismatches (Closes #10938)

specs/widgets/fasm_skyline_logic.t27 ports every export of
apps/website/public/widgets/fasm-skyline/skyline.js: parseFasm, decodeGrid
(split into grid_* calls the glue makes from grid.json, plus grid_lookup and
grid_at), familyOf and summarize. Built to wasm (8390 bytes with a thin C-ABI
wrapper) and compared with the original JavaScript on the real grid.json (every
cell, every sample tile name, 60000 random names), FASM texts built from the
two shipped samples, line-grammar fuzz, 6000 random small grids and random
family lists: 0 mismatches; a negative control (zero test of a constant
reversed) gives 6165.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…epth, stat-card, fasm-skyline, lut-treemap, lut-explain (Closes #10960)
…catalog-3e2d7f

# Conflicts:
#	specs/t27f/widget_factory.t27
#	specs/widgets/catalog.t27
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-19 09:37:03 UTC

Summary

Status Count
Total Open PRs 50
PRs with Failing Checks 43
PRs with All Checks Green 7
READY 2
FAILING 43
PENDING 0
NO CHECKS YET 0

These columns do not partition: 2 + 43 + 0 + 0 = 45, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=2d301cdb4a58 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag enabled auto-merge (squash) October 19, 2026 09:37
@gHashTag
gHashTag merged commit b92f6f1 into master Oct 19, 2026
31 of 36 checks passed
gHashTag added a commit that referenced this pull request Oct 19, 2026
…berate (Closes #11013) (#11014)

Master was red on duplicate-bodies since b92f6f1 (#10965): digits_val,
ws_at, ws_back, ws_before, ws_fwd, ws_len_at and ws_len_before each exist
twice across the widget logic ports (lut_explain/lut_treemap,
fasm_skyline/stat_card/lut_depth). The earlier hex_digit copy named in the
first brief was already removed by #10296.

Each widget logic spec compiles to its own wasm module with module-level
state, so a cross-module use is a design change that belongs to the widget
epic (#10937), not to a red-master fix. The copies are recorded with
python3 tools/dupe_scan.py --bless, run on the Railway lab: exactly seven
lines added, dupe_scan exits 0 after, and a new duplicate still fails.

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

widgets: native pages in .t27 -- html writer, json reader, jtag-verdict and race-the-bee (epic 10937)

2 participants