Nishi FamilyCompare › Nishi Browser -- sovereign, hardware-up, all-OS

Nishi Compare · measured, not asserted

Nishi Browser -- sovereign, hardware-up, all-OS

Nishi vs the field — every Nishi cell is measured against real organ source at emit time; each gap names the watch contract that will close it.

Nishi vs Chrome+Edge (Blink/V8) / Firefox (Gecko/SpiderMonkey) / Safari (WebKit/JavaScriptCore) and the independent engines Ladybird (LibWeb/LibJS) / Servo (Servo/SpiderMonkey) -- one auditable render core from the assembler up, judged against the August-2026 field. Every rival ships one of five engine families; ours is the sixth.

Overview

The purpose, declared position and evidence coverage of this domain. Source presence and completed acceptance are different measures.

Where we are. Measured 2026-08-18. The top-20 real-site census (bench/top20, Chrome-151 headless + Windows OCR oracle, sovereign graders) reads 486 permil mean OCR reading recall over the 12 measured rows -- records x 965, linkedin 958, example 947, wikipedia 877, hackernews 744 -- with 6 FETCH-EMPTY (youtube, reddit, bing, instagram, duckduckgo, craigslist: the JS-SPA + fingerprint class) and 2 CHROME-BLOCKED (amazon, stackoverflow: the ORACLE was blocked, not us). This is the first census of the 07-29 binary (dot-collapse fix); the prior binary read 424-432 on 07-28/29 with a 13-row set, so the delta carries live-page and oracle variance and is NOT published as an engine gain. Structural axis, RE-MEASURED 2026-08-26 on saved bytes with the instrument stated: the deep window ay=by=800 h=2000 on bench/selfpage/wiki_aug.html against bench/top20/wikipedia_chrome_tall.png reads 845 permil matched, mean dy 7, mean dx 80 over 84 oracle bands at layout width 1024 -- which REPRODUCES the 846/dy8 this row used to quote and is how that window was identified rather than guessed -- and 892 permil, dy 8, dx 104 at layout width 1000. The 47-permil spread is not page variance and not an engine change, and its SCOPE was measured rather than assumed -- the first draft of this sentence generalised from wikipedia alone and the population refuted it the same hour. The code fact stands: br_shot_png hardcodes a 1000-pixel paint canvas while br_layout wraps at the callers viewport and struct Page carries no width field at all, so the two widths are independent constants (also a Rule-11 magic number). The measured EFFECT is page-dependent, 1 of 4 (the denominator moved from 3 to 4 when the CSS-OFF wikipedia capture was added, and it did not change the conclusion): the CSS-ON wikipedia page moves 845 to 892 permil between layout width 1024 and 1000 and its page height moves with it (7304 to 7406), while hackernews reads 769 at BOTH widths, linkedin 545 at BOTH, and even the CSS-OFF wikipedia capture 916 at BOTH -- their page heights barely move. Note what DOES move on that CSS-OFF page: matched holds at 916 while mean_dx swings 71 to 100 and dy 8 to 6, so the matched-permil is width-robust there while the drift columns are not, and a claim about one is not a claim about the other. So the defect fires on content that REFLOWS and is invisible on content that does not, which makes it a blocker for grading wikipedia-class pages and not a uniform instrument bias. The free discriminator is page_h: if it moves with the viewport, the width mismatch is in play. Which of 845 and 892 is the true reading is still OPEN -- the oracle was captured at 1024, so the control that settles it is a 1024-wide shot canvas, which is the fix (debt browser-shot-width). Full-page window 826 permil dy 9 dx 68 over 294 bands; first screen 533 permil dy 16 over 15 bands, so THE FIRST SCREEN IS THE WORST REGION, not the deep page. The renderer is deterministic (same bytes twice = bit-identical PNG). The shipping-tree Linux build was COMPILE-FAIL from 08-16 until 2026-08-18, when the cause was proven to be the COMPILER, not the browser: a fixed 262,144-token lexer pool (nx_compile_x86.nx) feeding an unguarded push_tok (nx_tokenizer.nx) silently overran on the estate's largest unit. FIXED BY DERIVATION (pool sized from the post-expansion byte count -- tokens <= bytes is an invariant, not a knob -- plus a fail-loud guard), proven by the equivalence net (10/10 byte-equal + self-host) and shipped through the canaried lane; nx_browser now BUILDS (7,127,960 B asm), and nx_browser.elf is PROMOTED LIVE (b2ce1f8e, 1,447,483 B) -- the first promoted Linux browser binary. The field: Chrome 151 (28 Jul 2026), Firefox 153 (21 Jul 2026), Safari 26.x, Edge (Chromium 151) [chrome151] [firefox153]; Interop 2026 = 20 focus areas + 4 investigations at wpt.fyi/interop-2026 [interop2026]; the two independent from-scratch engines publish their standards conformance -- Ladybird 2,067,263 WPT subtests passing (Apr 2026), alpha 2026 [ladybird26]; Servo 0.3 (Jun 2026) [servo03] -- and we HAVE now run WPT -- that clause read "we have NEVER run WPT" until 2026-08-26 while the answer row on this same board already reported per-directory counts from 08-18, so the board contradicted itself and the stale half was the alarming one. Re-measured 2026-08-26 on the COMPLETE upstream dom/lists directory (5 files, mirrored from web-platform-tests under 3-Clause BSD): 5 ran, render_or_read_fail=0, tests_pass=0 tests_fail=14, controls pass=1 fail=1, dur_ms=42 -- reproducing the previously published 0/14 exactly, which is itself a determinism result. The harness is now a ROW IN browser.gates rather than a sentence in this plan, and every counted run appends to knowledge/status/wpt_history.tsv so the next reading can say improving or regressing rather than only a level. Agentic browsers (Comet, Atlas, Claude for Chrome) exist at under 1 percent share [browsershare26]; Chrome holds 69.65 percent. 2026-09-02: REAL FONT FILES render through the sovereign TrueType engine (rung BR26) -- Liberation Sans outlines, hmtx advances and kern pairs from one file, measure and paint sharing one ruler. Re-measured with ONE instrument run twice on the same saved bytes (nx_browser_render_shot 1024, then 1024 face; nx_struct_diff deep window 800 800 2000): stroke font 880 permil dy 9 dx 45 page_h 7027; face 892 permil dy 9 dx 53 page_h 7048 against Chrome 7582; first screen 578 both, dx 185 to 155. The 845 and 892 figures earlier in this row are the 2026-08-26 binary at two widths and are superseded by that same-day pair, whose stroke-font reading (880) is the honest baseline for every later font rung. The reason the NAS census cannot yet grade any of this is now a named rung, BR29: the promoted Linux browser paints text through its own bitmap render core, not the shared one.

Where we need to go. SOTA and best-of-breed FOR A SOVEREIGN BROWSER means four things, in this order. (1) The shipping tree builds it -- a browser that cannot be built on the tree that deploys is not a product. (2) The honest yardstick is RUN: a sovereign WPT harness publishes OUR pass count per directory beside Ladybird's and Servo's, so the standards distance is a number, not an adjective. (3) The operator ratchet of 2026-07-28 stands: EXACT structural match to Chrome, Edge and Firefox on the top-20 -- same boxes, positions, visibility and order; the only licensed difference is font rasterization -- measured by struct_diff matched permil toward 1000 with dy and dx toward 0, CSS ON, oracle-metric advances on. (4) The dynamic web opens: the six FETCH-EMPTY sites render content. Throughout, the sovereign exceeds (own TLS, no JIT, one core from the assembler up, never-brick, WARC, doc omnitool, agent drive lane) are SHIPPING CRITERIA that no rung may trade away.

The unit. 1 u = one measured session-leg. Calibration from the record: the 07-28 day landed flex-basis, flex-shrink, table column layout, HTML5-lite end-tag matching and the UA-sheet correction in ONE leg with a census after each (300 to 432 permil in a day); the WEBP VP8L codec went from wrong to byte-exact in one leg on 07-29; the compile-fault hunt consumed one leg on 08-16 without landing (eight refutations). Compiler-class rungs carry more risk than organ rungs.
Where we are: 486 permil OCR recall; WPT RUN and published per directory. 2026-08-18/19 (v2+reftests, laptop-run, engine sha16 0f570c01e8ce4c68): dom/nodes 31 pass / 1217 fail / 178 unsupported-assert, dom/collections 5 / 41 / 2, dom/lists 0 / 14, html/syntax/parsing-html-fragments 0 / 20. SUPERSEDED FOR dom/nodes 2026-08-26 (engine sha16 0d9285dc9de7ebc0, corpus d49aee870a338154 -- IDENTICAL to the 08-18 corpus, so the two runs are directly comparable): 32 pass / 1361 fail / 188 unsupported-assert / 56 INCOMPLETE, against 32 / 1222 / 178 / 202 before. PASS IS UNCHANGED AT 32 AND THAT IS THE POINT: async_incomplete fell 202 -> 56 and JUDGED assertions rose 1432 -> 1581, so the entire fail rise is assertions that were previously UNJUDGED and are now scored. An unjudged assertion can never have been passing, so judging more can raise fail and can NEVER lower pass. The harness got honest; the engine did not move. Files rendered 171 -> 174. The remaining 56 incomplete are event patterns beyond load, which is the next rung stated as a number rather than an adjective, reftests css/CSS2/floats 13 match-pass / 51 match-fail, css/css-tables 60 / 56. 2026-08-26, ALL FOUR DIRECTORIES RUN NAS-SIDE against a corpus ingested by BR21 (nx_wpt_ingest, symbol wsp_ingest_dir) and pinned to WPT commit a7b5671e50ee3610ec3ad2e1278a33b2cb11339c, engine sha16 a1c4bd45d4eac1ec (promoted nx_wpt_runner.elf, 597,353 B). Per directory, files then ran then render-or-read-fail then the counters the harness actually emits: dom/lists 5 files, 5 ran, 0 fail-to-render, 0 pass, 14 fail, 0 unsupported-assert, corpus_sha16 54e90b086e0c6530. dom/collections 10 files, 10 ran, 0 fail-to-render, 5 pass, 41 fail, 2 unsupported-assert, corpus_sha16 1819a1dcd3030f03. html/syntax/parsing-html-fragments 13 files, 13 ran, 0 fail-to-render, 0 pass, 20 fail, 0 unsupported-assert, 2 files yielding no result, corpus_sha16 a075ffa0af05ccd7. dom/nodes 178 files, 174 ran, 4 fail-to-render, sync 31 pass and 1219 fail and 178 unsupported-assert, async 1 pass and 142 fail and 10 unsupported-assert and 56 incomplete, 40 files yielding no result, corpus_sha16 d49aee870a338154. ALL FOUR corpus hashes reproduce the 2026-08-18 rows EXACTLY, so the whole yardstick is now reproducible from the pin alone rather than two directories of it. THE dom/nodes COUNTS DIFFER FROM 08-18 AND THE DIFFERENCE IS PUBLISHED RATHER THAN SMOOTHED: the durable 08-18 spine row (engine sha16 0f570c01e8ce4c68) records 178 files, 171 ran, 7 fail-to-render, 32 pass, 1222 fail, 178 unsupported-assert, 202 incomplete, 39 no-result; today on the SAME corpus d49aee870a338154 with engine a1c4bd45d4eac1ec it is 178, 174, 4, 32 pass, 1361 fail, 188 unsupported-assert, 56 incomplete, 40 no-result. Three MORE files now render, incomplete falls by 146, fail rises by 139 and unsupported-assert by 10, and PASS IS UNCHANGED AT 32. The harness stamped REGRESSION-vs-1787144749 on the FIRST run at those counters (epoch 1787784581), and a repeat run at 1787784613 with byte-identical counters recorded plain COUNTED -- because the check compares against the NEWEST same-corpus row, which by then was the flagged one. So THE REGRESSION FLAG FIRES EXACTLY ONCE, ON THE FIRST RUN AFTER AN ENGINE CHANGE, and a seat who runs a directory twice sees a clean COUNTED and never learns there was one. The flag also keys on the fail counter, which cannot on its own distinguish tests that used to hang unfinished and now complete-and-fail from tests that used to pass and now fail. The pass column is the conjunct that discriminates and it did not move, so nothing that passed on 08-18 fails today. nx_wpt_runner's source has since grown to 30,269 bytes under a concurrent seat and already carries exactly that reasoning -- a fail rise fully accounted for by an incomplete fall is the harness getting honest, not the engine getting worse -- so that half is being closed in the harness and was deliberately NOT edited from this lane while it was in flight. html/syntax/parsing-html-fragments matches its 08-18 row on EVERY counter. Note also that the number this row previously published for dom/nodes, 31 pass and 1217 fail and 178 unsupported-assert, is not what the durable history row records for 08-18, which is 32 pass and 1222 fail aggregated over sync and async. Neg control fired on every counted run (WPT-CONTROL pass=1 fail=1), and --twice ran every directory twice with the divergence marker WPT-NONDETERMINISM ABSENT-PROVEN across the whole output tree at coverage_complete=1. The engine binary moved three times during this session under a sibling seat (9a97da75d... then 3a6c48264dc7cc45 then a1c4bd45d4eac1ec), which is exactly why every count above carries the engine sha it was measured on.. Real exceeds on sovereignty and reach; parity of KIND on the static content web; the standards yardstick now RUNS (BR0 + BR1 done, ver 0.1) and the low counts are the honest distance; behind on JS depth and every product-surface row (tabs, devtools, video, a11y, sandbox, BiDi). The distance is the roadmap, and no wording on this page narrows it. Board re-keyed 2026-08-23: BR1 watches wpt_run, which is now the harness's real entry (nx_wpt_runner.nx), and BR0 gained the matrix row it never had, so the ranker can count both done.
Cost to unblock: 3 u. BR0 the shipping-tree build + BR1 the WPT harness. Everything else on this page either deploys through BR0 or is graded through BR1.
Cost to the operator ratchet: 13 u. BR2 the CSS-on structural exactness loop, BR14 lazy-load images, BR4 real font files with shaping (first half landed 2026-09-02 as BR26), BR27 family, weight and style resolution, BR29 one render core -- the visible-page chain, each graded by struct_diff on saved bytes (render_ab), never by the live census alone.
Cost to a Windows daily driver that reads wikipedia and google images like the incumbents: 13.5 u beyond BR26. Today nishi.exe renders the static content web in real Liberation Sans through our own TrueType engine (BR26, landed 2026-09-02). Wikipedia-class parity needs BR27 (faces by family, weight and style), BR30 (Unicode beyond ASCII), BR17 (the SVG figures the page skips) and BR29 (one render core, so the NAS census can grade what the daily driver paints); google images is the JS-SPA class and needs BR3 then BR16 (storage and the origin model). The ranker orders these from the boards; this row only sums them so the distance is a number.
Cost to open the dynamic web: 16.5 u. BR3 ES2024 core + fetch/DOM API surface, BR7 HTTP/2, BR9 wasm, BR8 video -- measured by FETCH-EMPTY rows turning CONTENT-OK.
Cost to product parity of KIND with the Ladybird alpha: 23 u. adds BR5 tabs, BR6 WebDriver BiDi, BR15 devtools protocol, BR11 accessibility tree. Beyond that, BR10 Interop-2026 CSS, BR12 process sandbox and BR13 canvas GPU are the 2026 field bar (31 u), and the 2026-08-18 breadth inventory adds BR16-BR20 (storage+origin model, canvas2d+SVG raster, web components, the WebSocket wire, product surfaces) for the FULL platform at 39.5 u cumulative -- each absent subsystem is a measured watch row on the matrix, none hidden.

Research bar. Interop 2026 (wpt.fyi) is measured on the pass rate over 20 focus areas + 4 investigations, one dashboard for Chrome, Edge, Firefox and Safari. Theirs: the four vendors converge on the same areas each year (Interop 2025 ended at 95); advanced attr() still Chromium-only, container style queries bottlenecked in Firefox. Ours: 0 -- never run; BR1 publishes our directory-level pass counts on this page.

Research bar. Ladybird (independent engine, alpha 2026) is measured on WPT subtests passing + JS conformance. Theirs: 2,067,263 WPT subtests passing (Apr 2026), 97.8 percent JS conformance, style engine in Rust, profiles + private browsing, alpha 2026 for Linux + macOS, beta 2027. Ours: our peer class -- same from-scratch ambition, larger team, no OS-reach or own-crypto exceed; BR1 makes the comparison numeric.

Research bar. Servo 0.3 (Linux Foundation Europe) is measured on the wpt.servo.org focus-area dashboard. Theirs: 0.3 (Jun 2026): CSS font features, new DOM APIs, SpiderMonkey update, accessibility in flight, embedding API -- on under 8k USD a month. Ours: our peer for embeddability and honesty of measurement; ours adds the sovereign fetch stack Servo does not have.

Research bar. Chrome 151 and Firefox 153 (the content-web oracles) is measured on the census oracles: headless captures + OCR reading recall + struct_diff bands. Theirs: Chrome 151 stable 28 Jul 2026, Firefox 153 stable 21 Jul 2026, four-week cadence. Ours: 486 permil mean recall over 12 measured rows (2026-08-18); struct_diff 846 permil on the deep wikipedia page; the ratchet target is 1000 / dy 0 / dx 0.

Research bar. WebDriver BiDi (the 2026 automation standard) is measured on which browsers a standard driver can drive. Theirs: Firefox removed CDP at 141 and drives over BiDi; Puppeteer defaults to BiDi for Firefox; Selenium 5 removes CDP-only APIs; Ladybird and Servo run WPT through their own WebDriver servers. Ours: synthetic-user driver only, no standard endpoint; BR6.

Research bar. Lighthouse (page-quality audit) is measured on performance, accessibility, SEO and best-practice audits over a rendered page. Theirs: the incumbents ship it in DevTools and CI. Ours: nx_uiq_perf (static predictor), nx_uiq_contrast and nx_uiq_atree exist; the composed runtime audit is BR38.

Research bar. WebPageTest (synthetic lab) is measured on waterfalls, filmstrips and Core Web Vitals on real browsers at real connection profiles. Theirs: the field's lab bench for any URL. Ours: render_shot plus struct_diff plus the census column are the pieces; the one-command lab with a time spine is BR31.

Research bar. Speedometer 3.0 (responsiveness) is measured on simulated user interactions on representative web workloads, co-developed by the four vendors. Theirs: every incumbent publishes a score. Ours: cannot run until the JS lane opens (BR3); BR35 names it so the absence is a number, not silence.

Research bar. Perfetto (trace, memory, power) is measured on system-wide tracing with CPU, memory and power-rail counters on one timeline. Theirs: Chrome and Android profile with it. Ours: nx_trace_emit, nx_frame_budget, nx_resmon and nx_energy_probe are the sovereign pieces; wiring them to a page run is BR33.

Research bar. Web Vitals (LCP, INP, CLS) is measured on the three user-facing metrics with field thresholds. Theirs: reported by every incumbent in the field and the lab. Ours: computable from our own layout and paint passes with no rival present; BR32.

Research bar. text-rendering-tests (shaping oracle) is measured on shaping and positioning cases across scripts with expected output. Theirs: HarfBuzz, CoreText and DirectWrite grade against it. Ours: the third-party oracle for BR4 shaping and typography R3 (rung R6 on the typography plan).

Research bar. Media Capabilities (codec support) is measured on supported, smooth and power-efficient per codec configuration. Theirs: every incumbent answers decodingInfo. Ours: BR34 emits the same shape from actually running our decoders.

Research bar. test262 (JS conformance) is measured on the official ECMAScript conformance suite. Theirs: Ladybird publishes 97.8 percent. Ours: BR36 publishes a pre-declared slice for js_eval.

Research bar. browser-compat-data (compat ledger) is measured on machine-readable support per feature per browser version. Theirs: the incumbents' feature support is data. Ours: BR37 emits our column in the same shape.

Windows daily-driver browser and native engine target, operator 2026-09-12: Required end state; current completion unverified. Deliver an installable Windows Nishi Browser backed by Nishi frontend and backend emitting/rendering capabilities competitive with Chrome and Firefox. Installation or a third-party browser wrapper alone does not establish this target. Distinguish estate page emission from browser standards execution: catalogue ownership and dependencies for DOM/CSS/layout, script execution, graphics/compositing, networking, media, input, accessibility, profiles, privacy, recovery and updates. Measure representative real sites and Beach against dated competitor versions on comparable hardware; retain correctness, responsiveness, resource usage and user-task evidence separately. API/MCP and user UI must call the same qualified capabilities. Prefer capable available hardware with explicit user battery-saving choice and graceful recovery. Reuse existing browser implementation and shared estate owners; inventory verified executables/installers and missing release steps before rebuilding. Beach remains the primary product proof; browser work should advance shared capabilities and the eventual actual Windows daily-driver experience.
Priority and shared Beach WebGPU proof, operator 2026-09-12: Beach first; Nishi Browser second. Run the same versioned emitted Beach scene, asset set and representative interactions in reference browsers and Nishi Browser through a verified WebGPU backend. Record actual backend, adapter/device, shader and asset identities, frame timing, resource cost, input latency, image/interaction correctness and recovery; label fallback explicitly. Do not substitute a different simplified scene as parity evidence. Nishi frontend and backend should deliver a superior user experience while retaining shared native API/MCP ownership. Steam-class and beyond gaming is a broader ladder: dependable play, library/install/update where applicable, saves, input/device support, collaboration and discovery, measured as user journeys rather than claimed from WebGPU availability. Browser investment follows Beach and should unlock shared rendering/testing/product capabilities; swarm remains the means to improve delivery quality and efficiency.
Native implementation boundary, operator 2026-09-12: Standing requirement. Nishi Lang, OS, Browser and estate are the native implementation target. JavaScript and other foreign formats may be emitted for third-party compatibility; MCP wrapping of a foreign runtime alone does not satisfy native implementation. Catalogue core versus compatibility-output versus benchmark/test dependencies and the evidence for replacing each temporary dependency. Preserve reference-browser comparison while growing native capability. Do not claim an installable shell, standalone software cube or renderer gate proves the same emitted Beach runs in Nishi Browser through WebGPU. Local/NAS producer identity must be reconciled before adopting historical code: current NAS nishi_gui.nx42489B differs from worker-observed local66661B; no overwrite is authorized by a size comparison alone. Beach first, native browser second.

Latest recorded release

2026-09-05 · BR48

THE PROBE THREAD IS CLOSED WITH A REFEREE (2026-09-05): the ruler defect this rung surfaced is now proven fixed and permanently watched -- nx_sigfixture + nx_behaveprobe self mode + nx_behaveprobe_gate 11/11 GREEN on the deployed binaries (details and the retraction on engineshift ES25); every later promote on this board is judged by a probe that names a signal death instead of hiding it

Release history and work log

Release entries describe recorded changes; they do not establish that every capability passed evaluation.

65 of 124 capabilities measured|12 of them measured exceeds|59 open|coverage 524/1000|adoption 38 full / 27 partial

Evidence profile — what the gaps on this board actually are

Measured by nx_swcompare_evidence, read back by nx_evprofile_lib. Every figure is a count with its denominator — there is deliberately no score, no grade and no percentage anywhere in this band, because a stored scalar is a field a seat can edit and a counted partition is not.

evidence|grounded 54/54|unsupported 0|gates green 4/4|proven able to fail 0/4|never bitten 4|green at 0/0 0|open gaps 31|of them unnamed 1|of them proof withheld 0|flips ready 4

proven able to fail counts the gates that have a RECORDED RED — nx_gate_bite mutated the gate subject, rebuilt it, watched the gate go red, and that record is inside the shared TTL. never bitten is its complement over the same denominator: those gates ran and were green, and nothing has ever shown them able to detect anything, so their green is a statement about this run and not about the gate. green at 0/0 is a separate and much weaker observation — the gate printed GREEN on a zero denominator, so its own tooth counter says it examined nothing. A gate can be green, non-zero, and still never bitten; that is the common case and it is now visible instead of implied.

partition: grounded + unsupported = 54 vs present 54 · named + unnamed + withheld = 31 vs open 31 · both reconcile

liar-kill conj=GPQN · all four conjuncts held

graded document: BUILDROOT tree, 59003 bytes · gates map: PRIMARY · stamped 14d 15h ago · STALE against the shared TTL of 604800s — this is evidence about a build nobody can vouch for now · source ../knowledge/status/evstamp_browser.verdict

Gap classWhat it is, and the work it names
FLIP-READYA watch contract symbol is now present in the organ it named: the cell can flip on a pure data edit with no new code. These are the cheapest closures on this board and they belong before any new work.
UNNAMED-GAPA gap row carries a bare _ABSENT_ with no symbol after it, so it names no build contract and no seat can pick it up. Give it an _ABSENT_:<symbol> and it becomes work somebody can do.
STALEThis profile is older than the shared TTL, or its clock ran backwards. It is reported as unusable rather than as fresh, because being wrong in the direction of refusing is the safe direction.
This band reports the referee counts. The per-axis worklist rows — which axis is unsupported, which watch is ready to flip, which gap is unnamed — are printed by nx_swcompare_evidence browser itself and are not carried on the stamp, so this page names the classes and the producer names the rows. That split is stated rather than hidden: a count without a worklist is not actionable, and this band is honest about which half of that it is.

Production map

Follow the dependencies, declared acceptance criteria and recorded priorities. Inspect source binding before treating a rank as executable work.

Ranking source binding: PLAN_MATRIX_BOUND_ONLY. Recorded priorities require current acceptance evidence and resource checks before execution.

Ranking matches the captured plan and matrix only. Latest execution outcome, research freshness, accepted delivery and investment return are unverified.

Recorded priority estimates

Order from nx_compare_rank (nx_dr_ocm: (deficit + cost-of-delay + option + enables) x sponsor x self-sufficiency x momentum / cost). FINISH rows are rungs whose symbol is present but whose organ is short of full adoption: listed before new work by this heuristic. Priority is not measured delivery cost or execution readiness. Stamp: # asof=1789541477 domain=browser target_version=1.0 rungs=50 done=10 open=40 finish=5 ranker=nx_dr_ocm

#StageRungPriorityDerivation
FFINISHShipping-tree build GREEN (BR0) br_comp_borderREGISTERED-DARKcallable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run
FFINISHSovereign WPT harness (BR1) wpt_runREGISTERED-DARKcallable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
FFINISHCSS-on structural exactness loop (BR2) bc_struct_colREGISTERED-UNAUTHORISEDregistered, no cap ever minted; no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
FFINISHByte-preserving WPT corpus ingest (BR21) wsp_ingest_dirREGISTERED-DARKcallable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
FFINISHNative world-frame emission (BR22) we_world_frame_emitREGISTERED-DARKcallable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
#11.0Real font files + shaping (BR4) bs_shape_run2400v=24 m=2 c=20
#21.0ONE render core: the Linux and NAS browser paints through nx_browser_render (BR29) br_render_core2400v=24 m=2 c=20
#3laterCore Web Vitals on the sovereign render timeline (BR32) br_vitals8285v=29 m=2 c=7
#4latertest262 conformance slice published (BR36) js_test2628000v=24 m=1 c=3
#5laterEvery conformance figure is a numerator, a denominator and a date, never a bare percentage (BR46) js_conf_triple8000v=24 m=1 c=3
#6laterEngine coverage and platform coverage are two fields and the resolver refuses to collapse them (BR43) bcd_engine_platform5600v=28 m=1 c=5
#7laterES2024 core + fetch/DOM API surface (BR3) js_fetch_api4923v=32 m=2 c=13
#8laterResponsiveness benchmarks -- Speedometer 3, JetStream, MotionMark run in-house (BR35) bb_speedometer4800v=24 m=1 c=5
#9laterCompat ledger emitted in browser-compat-data shape (BR37) bcd_emit4800v=24 m=1 c=5
#10laterWebSocket wire (BR19) bws_connect3200v=16 m=1 c=5
#11laterHTTP/2 in the fetch path (BR7) bh2_stream2900v=29 m=1 c=10
#12laterWeb fonts: @font-face URL loading + WOFF2 decode (BR28) bwf_load2400v=24 m=2 c=20
#13laterTabs, sessions, profiles UI (BR5) bt_tab_open2200v=22 m=1 c=10
#14laterCross-engine last mile on emitted pages (BR25) bx_engine_verify2133v=16 m=2 c=15
#15laterPage-quality audit composed from the sovereign auditors (BR38) ba_audit1866v=28 m=1 c=15
#16laterAccessibility tree (BR11) ba_tree1866v=28 m=1 c=15
#17laterInterop-2026 CSS pack (BR10) css_anchor_pos1866v=28 m=2 c=30
#18laterWASM in the browser (BR9) bw_instantiate1700v=17 m=1 c=10
#19laterWebDriver BiDi endpoint (BR6) bwd_session1700v=17 m=2 c=20
#20laterCodec capability matrix -- supported, smooth, power-efficient, measured by running our decoders (BR34) bmc_matrix1600v=16 m=1 c=10
#21laterTrace, frame budget, memory and energy per page (BR33) br_resmeter1400v=14 m=1 c=10
#22laterDevTools protocol (BR15) bdt_inspect1400v=28 m=1 c=20
#23laterWeb components (BR18) bsd_attach1400v=28 m=1 c=20
#24laterEvery rendering optimization is reported as a throughput and energy pair over the same run (BR44) ep_pair_receipt1250v=25 m=1 c=20
#25laterEvery published benchmark score carries suite, version, version date and run date, or is labelled UNCONTROLLED (BR42) bb_version_ledger1200v=6 m=1 c=5
#26laterPer-site process sandbox (BR12) bsb_spawn1100v=22 m=1 c=20
#27laterCanvas 2D + SVG raster (BR17) bc2_fill_rect1000v=20 m=1 c=20
#28laterThe Nishi browser opens /world/beach as the sovereign door: same world bytes, no third-party gatekeeper (BR40) br_world_door933v=28 m=1 c=30
#29laterVideo and audio elements (BR8) bv_play800v=16 m=1 c=20
#30laterWeb storage + origin model (BR16) bst_local_set800v=16 m=1 c=20
#31laterThe interop score is the intersection, with per-implementation rates beside it and an investigation class (BR45) wpt_interop_intersect800v=16 m=1 c=20
#32laterCanvas GPU (WebGL2 first) (BR13) bg_webgl_ctx733v=22 m=1 c=30
#33laterThe browser lab: one sovereign run over a URL or saved bytes, every oracle on one time spine (BR31) bl_run700v=7 m=2 c=20
#34laterProduct surfaces (BR20) bpd_download666v=20 m=1 c=30
#35laterMotion: emitted frame sequences (BR24) we_frame_seq_emit100v=1 m=2 c=20
#36laterEvery performance bar carries its primary source and date, and a beat flags DRIFTED when the vendor page moves (BR41) up_metric_prov100v=1 m=1 c=10
#37laterEvery named entity decodes and every unmapped codepoint is visible (BR39) ent_html5_table0v=0 m=2 c=10
#38laterBrowser-native launch (nishi-game marker) (BR23) br_launch_game0v=0 m=1 c=5
#39laterThe verifier proves a declared asset of any size by its head (BR48) ff_fetch_head0v=0 m=2 c=15
#40laterThe static front door honours Range on every static asset (BR49) sites_range_2060v=0 m=2 c=20

Declared roadmap — contract, acceptance, executor, effort

RungCloses withDefinition of done (pre-declared)ExecutorEst.
Shipping-tree build GREEN (BR0)br_comp_borderDONE 2026-08-18 (actual 1 u, estimate held): fault named -- a hardcoded token-pool cap + unguarded push_tok in the compiler, fixed by derived sizing through the canaried toolchain lane (equiv net 10/10, compiler live 5aaf6cd7, browser BUILT+PROMOTED b2ce1f8e). Original done-rule follows: either a compiler defect with a minimal reproducer + a fix promoted through the canaried toolchain lane (nx_cc_equiv_staged + contentdiff GREEN), or a source-shape rewrite with the reproducer banked as a compiler bite. Method fixed by the record: stub BODIES, never truncate; diagnose on the tree that ships (the laptop mirror is stale). Done when the Linux browser deploys again.Compiler+Organ1 u
Sovereign WPT harness (BR1)
after BR0
wpt_runV1 RAN + V2 CORRECTED 2026-08-18: nx_wpt_runner (sync testharness shim, shared-genv page lane, runtime controls that REFUSE counts if the harness cannot see a failure) over the FULL .html population of four slice directories. v2 numbers (v1's assert_throws any-throw overclaim removed -- published passes went DOWN 45 to 31, which is the correction discipline working): dom/nodes 31 pass / 1217 fail / 178 unsupported-assert / async 1-5-202-incomplete (171 of 178 ran), dom/collections 5/41/2, dom/lists 0/14, html/syntax/parsing-html-fragments 0/20 -- laptop-run like the census, results published here. v3 (08-19) is the OBSERVABILITY rung, field-grounded [otel-cicd26] [develocity-pts26] [wptfyi-runs26]: OTel-mapped TSV time spine (bench/wpt/wpt_history.tsv + the wpttrend- store plane), content-addressed skip on (engine sha, corpus sha) with --force, REGRESSION exit 4 vs the newest same-corpus row (bite-proven: a planted better prior row fired verdict AND exit -- the exit-code half was CAUGHT MISSING by the bite, the estate's own gate law live in a day-old organ), and --twice determinism proof (171 files x2, zero divergence). REFTESTS LANDED 08-19 (nx_wpt_reftest PROMOTED, telemetry on the extracted nx_wpt_spine shared lib -- the DRY law applied at consumer #2): floats 13/51, css-tables 60/56 match-pass/fail at exact-pixel 800x600; corpus = every test in the directory PLUS every reference it links, fetched to closure (0 missing). vNext: NAS fixture ingest so the wpttrend beat runs estate-side; fuzzy-meta tolerance; async event-driven tests. DRIFT CLOSED 2026-08-26, PROVEN BY THE HARNESS'S OWN TELEMETRY: a fresh /api/build of buildroot nx_wpt_runner.nx returns 9a97da75.../595,550 B and BOTH the serving root and the _offc twin ALREADY hold exactly those bytes, so live == staged == source; and the engine= field every counted run stamps into wpt_history.tsv reads 9a97da75f32c108d, meaning the time spine had been recording the current engine all along. The rebuild-on-a-quiet-box instruction this sentence used to carry was STALE -- a standing drift claim nobody re-measures costs the next reader the same investigation, and here the evidence that closed it was already inside the harness's own output. NEXT, NOW MEASURED RATHER THAN NAMED: async is the largest single hole in the count. Run 2026-08-26 over the six-file dom/nodes slice in knowledge/wpt: tests_pass=8 tests_fail=89 async_incomplete=147 dur_ms=84, controls pass=1 fail=1 -- so 147 of 244 assertions (602 permil) are UNJUDGED rather than failing, and Document-createElement.html alone contributes all 147 while returning ZERO sync verdicts. An unjudged assertion is an abstention nobody counts, so the honest denominator on this slice today is 97, not 244, and the async event-driven lane is what converts 602 permil of the corpus from invisible into scored. RESOLVED THE SAME DAY, AND THE FIRST DIAGNOSIS WAS WRONG: the missing piece was NOT only the absent event loop. A purpose-built fixture that separates the conjuncts (knowledge/wptprobe) proved the trailing load-dispatch script DOES execute and DOES fire registered handlers -- p2-after-html-script-ran and p5-handler-body-ran both PASS -- so the dispatch was necessary but not sufficient. The real blocker was in the shim's own async_test: it invoked the test body as g() with NO ARGUMENTS, so async_test(function(t){...}) received undefined and every t.step / t.done threw, leaving the test started and never finished. One correction, fn(t) instead of fn, and the slice reads async_incomplete 147 -> 0 with the partition reconciling EXACTLY: 137 async_fail + 10 async_unsup_assert = the 147 that were invisible. Judged assertions rise 97 -> 244 and the published pass rate therefore FALLS from 82 permil to 33 permil (8 of 244) -- the number got worse because it got honest, the same correction discipline that took v1's 45 published passes down to v2's 31. The 10 unsupported are assert_throws_dom needing DOMException identity, correctly routed to UNSUPPORTED rather than fake-passed. Engine f14f553a77ea1293, controls pass=1 fail=1, verdict=COUNTED. NAMED LIMIT, not fixed here: t.step and t.step_func still drop their arguments, so a test whose handler needs an event object is not yet reachable; and sync test(f, name) likewise passes no test object. AND THE RUN THAT PROVED ALL THIS WAS NOT BEING RECORDED. wsp_append sat behind if (histpath != 0), so a run invoked as `nx_wpt_runner <dir>` -- the documented first form of its own usage line -- printed WPT-ROW ... COUNTED and persisted NOTHING, while that same usage line promised every counted run appends a TSV row. Four runs on 2026-08-26, including the 147 -> 0 measurement, were absent from every history file, and TWO RIVAL SPINES had grown (bench/wpt/ and knowledge/status/) because each caller chose its own path -- the duplicate-ruler defect wearing a filename. A SPINE THAT ONLY RECORDS WHEN THE CALLER REMEMBERS THE PATH IS AN ADOPTION GAP WITH EXTRA STEPS. Fixed by defaulting to a single named owner and ANNOUNCING it: every run now prints a WPT-HISTORY line carrying the path plus a src field reading argv or DEFAULT, so a reader never guesses which file a row went to. Proven by the SPINE GROWING, not by the message appearing -- the first attempt printed a perfect-looking WPT-HISTORY line and appended nothing, because the path literal had been mangled to tsvu0000 in transit; only checking bytes-before vs bytes-after caught it (623 -> 703, delta 80). Live 3a6c48264dc7cc45. THEN THE REAL YARDSTICK RAN. With dom_nodes banked (178 files, BR21), the harness was pointed at the largest corpus we have and the async work paid out: async_incomplete 202 -> 56, files rendered 171 -> 174, and JUDGED assertions 1432 -> 1581 (+149) while PASS stayed EXACTLY 32. corpus_sha came back d49aee870a338154, IDENTICAL to the 2026-08-18 row, so the re-acquired corpus is byte-faithful and the two runs are comparable. THE HARNESS THEN CALLED ITS OWN IMPROVEMENT A REGRESSION: fail rose 1222 -> 1361 and it printed "same corpus, so the engine changed for the worse" with exit 4. That sentence asserts a cause the detector cannot know. AN ASSERTION THAT WAS NEVER JUDGED CANNOT PREVIOUSLY HAVE BEEN PASSING, so judging more can raise fail and can NEVER lower pass -- the asymmetry that makes the distinction sound rather than a loophole. The rule now separates them and is deliberately CONSERVATIVE: a pass DROP is always REGRESSION, and a fail rise is excused ONLY when FULLY covered by the fall in previously-unjudged assertions AND pass did not drop, so any unexplained fail still flags. Here 139 <= 146, so it reads RECLASSIFIED, exit 0, with all four numbers printed. A new row label RECLASSIFIED-vs-<epoch> keeps it its OWN bucket in the time spine rather than folding a fourth state into an existing one. 56 incomplete remain -- event patterns beyond load -- and that is the next rung, stated as a number rather than an adjective. BR21 CLOSED, AND NOT BY ME: a sibling seat shipped nx_wpt_ingest -- 49-tooth mutation-proven gate, on the standing roster, pin validation refusing any non-40-hex commit, a name allowlist, idempotent reuse, and a read-back compare that verifies what was WRITTEN. I built nx_wpt_corpus_ingest in parallel without detecting that work in flight; nx_presubmit and nx_capsearch both correctly reported the NAME and the CAPABILITY free, because neither can see a sibling mid-build. Theirs is the superset on every axis -- it already carried the very overrun margin I had to discover by clipping three files at got==cap -- so the duplicate was RETIRED reversibly to knowledge/retired/ rather than left standing. A SEARCH THAT CANNOT SEE WORK IN FLIGHT WILL CLEAR A DUPLICATE EVERY TIME; the check that would have caught it is the corpus manifest on disk, which already named the organ. What survives from the duplicate lane is the JSON reader fix it forced: jx_get_str and jx_get_str_raw required NO whitespace after the colon, so every pretty-printed producer read as an absent field, while jx_get_int one function above already skipped it -- a law applied in half an API. Original done-rule: A pre-declared WPT slice (html/syntax + html/dom, css/CSS2 box + css/css-flexbox + css/css-tables, dom/nodes) runs through the deterministic shot lane (reftests) and a testharness.js-subset shim on js_eval (testharness); results published on THIS page as pass/total PER DIRECTORY beside Ladybird's and wpt.fyi's, never a single percent. A known-failing fixture must FAIL (neg control) before any pass counts. The harness runs THROUGH the BiDi endpoint once BR6 lands (the Ladybird/Servo pattern).Organ2 u
CSS-on structural exactness loop (BR2)bc_struct_colCOLUMN LANDED 2026-08-26, BAR MEASURED AND UNMET, RUNG NOT DONE -- AND THE RANKER DISAGREES WITH THAT SENTENCE, WHICH IS ITSELF THE FINDING. nx_compare_rank decides done by SYMBOL PRESENCE, so the moment bc_struct_col was declared the board moved BR2 from open to done-but-partially-adopted and the operator ratchet reads satisfied while its own bar reads UNMET. That is A COMPLETION SIGNAL THAT KEYS ON A NAME REWARDING THE WRITING OF THE NAME, arriving at the RANKER rather than at the matrix where the estate already knows the shape, and it will fire on EVERY rung whose done-rule is a measured bar rather than a capability. The symbol is deliberately NOT renamed to dodge it (that is dodging a classifier by luck, the answer organ_kind.conf and organ_gate.conf both refused): the fix is for a measurement rung to be judged on the verdict its own organ emits -- nx_browser_census publishes br2_bar_verdict, MET or UNMET or UNOBSERVABLE, on every run -- and until the ranker can read that, this sentence is the only thing standing between the board and a false done. What shipped: bc_struct_col is declared in nx_browser_census.nx and delegates to nx_browser_struct_col_lib.nx, because the judgement has to live in a lib for nx_browser_struct_col_gate to prove it IN PROCESS -- a gate that forked the census binary would read NOT-REACHED for every mutant and its GREEN would mean nothing. Gate 29/29 GREEN, bite-proven twice (killed=1, not_reached=0, mutant_live=0, restore byte-identical), declared in organ_gate.conf so a ship of the census REFUSES rather than warns when the proof is missing. The census itself was PROMOTED-UNREGISTERED for its whole existence -- a real binary nobody could call -- and is now registered and invoked. The plane row grew FOUR additive fields, not three: struct_matched_pm, struct_dy, struct_dx AND struct_bands_oracle, and the fourth is the point. Measured the same day on saved bytes, google returned 1000 permille over TWO oracle text bands and stackoverflow 0 permille over ZERO: a perfect score and a total failure, both arithmetic on an empty subject, both arriving as numbers a scoreboard would have averaged. bsc_band_floor derives the smallest usable denominator FROM THE BAR (one band moves a reading by 1000/N permil and a 900 bar leaves 100 permil of headroom, so N >= 10) and such rows are counted UNDERPOWERED, named, never averaged and never silently dropped. THE NUMBERS, all on bench/selfpage saved bytes through the incumbent nx_struct_diff, CSS on with oracle advances, deterministic, no network, deep window ay=by=800 h=2000: wikipedia 845 permil dy 7 dx 80 over 84 oracle bands, hackernews 769 dy 12 dx 91 over 26, linkedin 545 dy 14 dx 66 over 77. Census aggregate mean 719 permil dy 11 dx 79 over 3 measured, 3 underpowered, 0 unmeasured of 6 rows seen (the partition sums), br2_bar_verdict UNMET. THE DONE-RULE NAMES TWO SITES THAT CANNOT DECIDE IT: an oracle self-control over every banked capture (each self-matches 1000 permil dy 0 dx 0, the positive control that proves the ruler can see) counts example at 6 text bands and x at 6, both below the floor of 10, so neither can resolve a 900 bar at all, while stackoverflow and amazon capture ZERO bands, the CHROME-BLOCKED class. Two of the four bar sites are structurally unmeasurable against the oracles we hold, and that is a defect in the done-rules subject, not a missing engine gain. THE INSTRUMENT DISAGREES WITH ITSELF ON REFLOWING PAGES, AND THE SCOPE WAS MEASURED AFTER THE FIRST DRAFT OF THIS LINE OVERSTATED IT. br_shot_png hardcodes a 1000-pixel paint canvas while br_layout wraps at the callers viewport and struct Page carries no width field, so the two widths are independent constants -- a real measure-equals-paint divergence on the WIDTH axis and a Rule-11 magic number. But the effect is 1 of 4 pages, not uniform: the CSS-ON wikipedia page reads 845 permil at layout width 1024 and 892 at 1000 with its page height moving 7304 to 7406, while hackernews reads 769 at BOTH, linkedin 545 at BOTH, and the CSS-OFF wikipedia capture 916 at BOTH, with page heights that barely move. It fires on content that REFLOWS and is invisible on content that does not, so it blocks grading wikipedia-class pages rather than biasing every reading. page_h moving with the viewport is the free discriminator. Which of 845 and 892 is true is still OPEN, since the oracle was captured at 1024 and the control that settles it is a 1024-wide shot canvas -- which is also the fix (debt browser-shot-width, three lines). On wikipedia the swing is the same order as the 55 permil still separating it from the bar, so it is fixed BEFORE further engine work is graded there. STILL OWED, each named rather than assumed: a paired census run carrying OCR recall on BOTH legs, since the pair verdict reads UNOBSERVABLE today (neither leg has a recall number) and the last real reading is still OFF 426 versus ON 311; a bytes-and-oracle capture taken as ONE act so ebay and yahoo have saved bytes to grade at all, which is why their named residuals could not be worked this session; and render_ab as an organ, since it exists only as _ops/render_ab.ps1, PowerShell that judges, and it grades by page height and OCR rather than by struct_diff. Original done-rule follows: The census gains a struct_diff column per site (matched permil, dy, dx) on CSS-ON renders with oracle advances ON; the styled-collapse residuals (ebay 40, yahoo 61 styled) are named defects worked to zero on saved bytes via render_ab; done when struct_diff matched >= 900 with dy <= 4 on wikipedia, hackernews, example and x deep pages AND the census pair no longer favours CSS-OFF, at which point CSS_ENABLED and oracle advances flip ON by default -- decided by the pair, not by taste.Organ2 u
Lazy-load images + srcset (BR14)bi_srcsetLIB + GATE LANDED 2026-08-26; the done-rule is HALF PROVEN and this row says which half. ROOT CAUSE NAMED: br_extract in nx_browser_render.nx read the src attribute AND NOTHING ELSE, so a lazy-loaded img handed the renderer its data: placeholder while the real URL sat unread in srcset or data-src -- the byte-exact decoders were never at fault, and the images-lazy debt row had the symptom without the mechanism. SHIPPED nx_srcset_lib (bi_srcset the candidate ruler; bi_img_source the element-level order over src, srcset, data-srcset, data-src, data-original, data-lazy-src; bi_sizes_px; bi_img_lazy) wired into br_extract at the ONE site that decides what an img points at, so every consumer of page.bsrc_off gains it in a single edit and no consumer changed shape. SELECTION IS DERIVED, NOT TABLED: target device px = size_px times dpr over 1000, size_px from the author sizes where evaluable else HTML own 100vw default, then the smallest candidate that covers the target and otherwise the largest -- nothing in the lib knows what 640 or 1280 mean, and moving the viewport moves the answer. nx_srcset_lib_gate 59/59 GREEN, mutation-proven killed=1 not_reached=0 mutant_live=0 with the restore byte-verified. THE GATE FOUND A REAL DEFECT IN ITS OWN SUBJECT BEFORE GOING GREEN: a candidate dropped for carrying two descriptors was refused but not CONSUMED, so the leftover 2x re-entered URL collection and a bare descriptor would have been served to the fetcher as an image URL. PROVEN: the descriptor grammar unit-exhaustively (w, x, fractional density, implicit 1x, embedded commas, whitespace runs, ties, overflow, and every malformed form refused BY NAME); the three trivial wrong selectors refuted by name (always-first, always-last, always-largest); byte-identity of the eager path checked against nx_dom_find_attr as an INDEPENDENT instrument rather than asserted; the wiring through the REAL br_layout (four figures resolve to the right URL, zero left holding a placeholder, the lazy flag recorded per box); and the paint chain end to end on a fixture PNG at laid 4 equals decoded 4 equals painted 4 with the pixels asserted in the framebuffer. NOT PROVEN, so this rung stays OPEN: the LIVE half -- the wikipedia benchmark page over the network -- was never run. nx_wpt_reftest was rebuilt and promoted on the new core (contentdiff GREEN, behaveprobe evidence WEAK so behavioural identity is NOT established), and nishi_gui, the Windows daily driver where the bounded fetch budget lives and where the eager-first ordering this rung adds actually pays, carries the source change but was NOT rebuilt: its PE lane is separate. Original done-rule follows: data-src / srcset / loading=lazy images are fetched and painted through the existing PNG/JPEG/WEBP path; done when the wikipedia benchmark page renders every figure it lays out (imgsrc_laid == painted) and the coarse grid on media pages moves.Organ0.5 u
Real font files + shaping (BR4)
after BR2
bs_shape_runFIRST HALF LANDED 2026-09-02 (rung BR26 below, symbol br_set_face): TTF outlines rasterized through the glyph atlas by the sovereign engine nx_ttf_fontlib, hmtx advances and kern-table pair kerning flowing through the ONE measure ruler (nx_font font_adv_em), Liberation Sans (SIL-OFL) as the default face on the Windows daily driver and on the render_shot instrument. MEASURED the same day on bench/selfpage/wiki_aug.html against bench/top20/wikipedia_chrome_tall.png with ONE instrument run twice (nx_browser_render_shot 1024, then 1024 face; nx_struct_diff deep window 800 800 2000): matched 880 to 892 permil, mean_dy 9 to 9, mean_dx 45 to 53, page_h 7027 to 7048 against Chrome 7582, first screen 578 to 578 permil with dx 185 to 155 -- a structural gain and not the bar, while the render itself changed far more than the bands can say (real proportional glyphs, runs no longer welded together, no monospace fallback lines). The hand-baked oracle-advance table was RETIRED after nx_ttf_fontlib_gate T13 proved it equal to floor(hmtx times 1000 over upem) for all 95 ASCII chars. STILL OPEN under this symbol: ligatures (GSUB), GPOS kerning beyond the legacy kern table, bidi runs; and dx toward 0 needs BR27 (family, weight and style resolution -- headings and bold still paint the regular face) and BR29 (the Linux and NAS browser paints bitmap text through a second render core, so the NAS census cannot see any of this yet). The bar stands: struct_diff dx on wrap points reaches 0 against Chrome on saved pages and OCR legibility does not regress below the parametric font's 984.Organ2 u
Real TrueType faces in the render core (BR26)br_set_faceDONE 2026-09-02 (actual 1 u): nx_ttf_fontlib upgraded to read professional faces (unitsPerEm, hhea ascender and descender, cmap glyphIdArray path, composite glyphs, negative side bearings, ink past the advance, kern table pairs -- all READ from the file; the first cut assumed 1000 upem and ascender 760 and would have halved every real font silently), gate 23/23 GREEN on Liberation Sans and Microsoft Arial with a runtime-synthesised cmap; br_set_face adopts a face into the glyph atlas and hands its advances and kern pairs to nx_font font_set_face so layout, wrap and paint agree by construction (nx_inline_vec_measure_gate 8/8, T7 face and kern reserved by layout, T8 clearing restores stroke widths); nishi.exe rebuilt with the face loaded at startup; the 100-row oracle table retired. Shipped in BOTH trees, hash-verified.Organ1 u
Font-family, weight and style resolved to real faces (BR27)
after BR26
br_face_resolveLANDED 2026-09-02 (actual 1 u), SHIPPED AWAITING THE REFEREE AND THE OPERATOR: a face registry of eight slots (Liberation Sans and Serif in regular, bold, italic, bold-italic) selected per text run by ONE resolver, nx_layout_face_for_box, that reads font-weight, font-style and font-family (and the font shorthand) with CSS inheritance and is called by layout before measuring and by paint (br_face_resolve) before drawing, so a run is measured and painted with the same face by construction; the UA sheet now makes h1 to h6 bold. nx_inline_vec_measure_gate 11/11 (T9 a run inside b is measured with the bold slot, T9b the resolver names slot 1, T10 no bold slot falls back to slot 0 and never to the stroke font). MEASURED on the saved wikipedia page, same instrument: struct mean_dx 53 to 49 (the done-rule asked for below 53), page_h 7048 to 7090 against Chrome 7582, matched 892 permil unchanged; the crops show the title and section headings in serif and bold, the hatnote in italic, and bold runs bold. THE BOLD HEADING, ROOT-CAUSED AND FIXED THE SAME HOUR -- after one WRONG correction that is retracted here: an earlier sentence said the fixture carried no heading-weight rule, on a truncated directory listing (5,326 was a cut column of 425,326 bytes); the fixture DOES carry .mw-heading,h1,h2{font-weight:bold} followed by .mw-heading1,h1{font-weight:normal}. Measure-gate teeth T11-T17 isolated the mechanism: single, comma-list and class-descendant author rules all beat the UA bold, but T17 (.zz,b{bold} then b{normal}) FAILED because rh_cascade computed specificity over the WHOLE comma list, so a class member leaked its specificity onto the type members of its list and the earlier list rule outranked the later plain rule (the source's own comment called this a later refinement). FIXED: rh_match_complex_spec returns the max specificity of the members that actually match, and the cascade sorts by that per-match value (18/18 GREEN). MEASURED on the saved wikipedia page, same instrument: first screen 578 to 684 permil (13 of 19 bands), dx 155 to 138; deep window 892 to 880 with dx 49 to 39 and dy 9 to 8; page_h 7090 to 7004 against Chrome 7582; the title now paints serif regular as Chrome does. Still open: edit-section links inherit the heading face, and no monospace slot. nishi.exe rebuilt with the whole family loaded from web_assets/fonts/ (or ../web_assets/fonts/ or the Windows system faces the user already owns, a runtime fallback only), OFL license shipped beside the fonts.Organ1.5 u
Web fonts: @font-face URL loading + WOFF2 decode (BR28)
after BR26
bwf_loadPages ship their own fonts as WOFF2 (Brotli-compressed sfnt); done when a fetched @font-face WOFF2 decodes to an sfnt our engine loads and paints on a banked fixture, with ONE sovereign Brotli codec shared with typography rung R0 so emit and load cannot disagree.Organ2 u
ONE render core: the Linux and NAS browser paints through nx_browser_render (BR29)
after BR26
br_render_coreMEASURED 2026-09-02: nx_browser.nx (the promoted Linux binary, the NAS shot verb, the roster gate subject) declares its OWN br_layout, br_draw_fb and br_shot_png and paints text with the 8x8 bitmap font at 2x; it never imports nx_browser_render.nx, where the vector typography, the glyph atlas and the real faces live. Two render cores is the duplicate-ruler defect at the centre of this board, and it is why every NAS-side render of this roadmap is blind to the typography work. Done when nx_browser.nx composes the shared core (one br_layout, one paint), the NAS shot verb paints the same pixels the Windows build does, and nx_browser_gate row 12 stays GREEN through the change.Organ2 u
Unicode text pipeline beyond ASCII (BR30)
after BR26
br_text_cpText is folded to ASCII before layout (accents to base letters, curly quotes straightened), so a real face is only asked for bytes 32 to 126 although the engine already decodes composite accented glyphs; done when layout and paint carry codepoints, the face covers Latin-1 and Latin Extended on the wikipedia benchmark, and the fold is retired for the scripts the face covers.Organ2 u
The browser lab: one sovereign run over a URL or saved bytes, every oracle on one time spine (BR31)
after BR26
bl_runWebPageTest-class synthetic lab composed from the incumbents the estate already has (render_shot, struct_diff, the census column, the WPT time spine) plus the meters BR32 and BR33 add: one command renders the page, grades it against the banked incumbent capture, records vitals, trace, memory and energy, and APPENDS one row to a content-addressed time spine so any seat, AI or human can read improving or regressing instead of a level; done when a run on the wikipedia fixture appends a row whose every column is measured (none UNOBSERVABLE) and a second identical run appends an identical row.Organ2 u
Core Web Vitals on the sovereign render timeline (BR32)
after BR26
br_vitalsLCP and CLS computed from OUR layout and paint passes (largest paint box time, layout shift between passes) and INP once the JS lane (BR3) dispatches events, reported per page beside the incumbents' field thresholds; done when the wikipedia fixture reports LCP and CLS numbers that a repeat run reproduces and the static predictor (nx_uiq_perf) and the runtime meter agree in sign on a planted layout-shift fixture.Organ1.5 u
Trace, frame budget, memory and energy per page (BR33)
after BR31
br_resmeterPerfetto-class spans over fetch, parse, cascade, layout and paint (nx_trace_emit), the per-frame budget (nx_frame_budget), resident and committed memory (nx_resmon) and joules per page from the hardware-agnostic probe (nx_energy_probe), all keyed to the same page run; done when a render of the wikipedia fixture prints all four with a declared UNOBSERVABLE for any the host cannot supply, and the energy figure comes from a real counter or is declared MODELLED, never guessed.Organ2 u
Codec capability matrix -- supported, smooth, power-efficient, measured by running our decoders (BR34)
after BR33
bmc_matrixA MediaCapabilities-shaped table emitted from actually decoding banked fixtures (PNG, JPEG, WEBP-VP8L, VP8, H.264, AV1, Opus, AAC) through the sovereign codecs with frame time and energy per frame from BR33; done when every cell reads SUPPORTED-SMOOTH, SUPPORTED-SLOW or UNSUPPORTED with the measurement beside it, and the page publishes the matrix beside the incumbents' declared support.Organ1 u
Responsiveness benchmarks -- Speedometer 3, JetStream, MotionMark run in-house (BR35)
after BR3
bb_speedometerThe cross-vendor benchmarks run through the sovereign JS and render lanes with the score published beside the incumbents; done when Speedometer 3 completes one full iteration in our browser and its score is on the page -- blocked on BR3 by construction, so the row stays a named watch until then.Organ1 u
test262 conformance slice published (BR36)
after BR3
js_test262A pre-declared test262 directory slice run through js_eval with pass and fail per directory beside Ladybird's 97.8 percent; done when the counts are on the page and appended to the WPT time spine keyed by engine sha.Organ1 u
Compat ledger emitted in browser-compat-data shape (BR37)
after BR31
bcd_emitEvery feature row on this board emitted as one BCD-shaped record (feature, version, support measured by a gate), so the sovereign column can be compared feature-for-feature with the incumbents' data instead of prose; done when the emitter covers every matrix row and a planted false support flag is refused.Organ1 u
Page-quality audit composed from the sovereign auditors (BR38)
after BR32
ba_auditLighthouse-class audit over a rendered page composing nx_uiq_contrast, nx_uiq_atree (the ARIA tree), nx_ui_audit and the BR32 vitals into one scored report with named findings; done when the audit on the wikipedia fixture names at least one real finding a rival audit also names, and a planted contrast failure is caught.Organ1.5 u
ES2024 core + fetch/DOM API surface (BR3)
after BR1
js_fetch_apijs_eval grows the ES2024 core (classes, async/await, Promise, modules) and the fetch/XHR + DOM/Event/History API surface the SPA shells need; done when at least 3 of the 6 FETCH-EMPTY rows (youtube, reddit, bing, instagram, duckduckgo, craigslist) read CONTENT-OK in the census with recall over 300, and a test262 core-slice pass count is published beside Ladybird's 97.8 percent.Organ4 u
HTTP/2 in the fetch path (BR7)bh2_streamThe existing h2 stack is wired into the browser fetch (ALPN h2, one connection, multiplexed streams); done when the census fetch time on the top-20 drops measurably with no regression, and h3 is scoped honestly as a separate rung.Organ1 u
WASM in the browser (BR9)
after BR3
bw_instantiateWebAssembly.instantiate through nx_wasm_vm from js_eval; done when a shipped wasm world runs INSIDE the Nishi browser with the same vm-gate equivalence its foreign-browser delivery passes.Organ1 u
Video and audio elements (BR8)
after BR7
bv_playThe video element decodes through the sovereign H.264 lane and paints frames into the layout box; done when a banked MP4 fixture plays frame-accurately (row-hash asserted) in headless and GUI.Organ2 u
Tabs, sessions, profiles UI (BR5)bt_tab_openTabbed windows over the existing profile store, session restore; done when the synthetic-user driver opens, switches and restores three tabs with pixel-exact asserts.Organ1 u
WebDriver BiDi endpoint (BR6)
after BR1
bwd_sessionA standard BiDi session (session.new, browsingContext.navigate, captureScreenshot, script.evaluate) served by the browser; done when Puppeteer or Selenium drives a page and screenshot end-to-end and BR1 runs through it.Organ2 u
DevTools protocol (BR15)
after BR6
bdt_inspectSpeak the Firefox DevTools protocol so the incumbent inspector attaches (the Ladybird/Servo pattern) -- element tree + styles + console first; done when Firefox's inspector shows our DOM for a live page.Organ2 u
Accessibility tree (BR11)ba_treeAn accessibility tree derived from the layout tree with roles and names, exposed to the platform on Windows first; done when a screen reader reads the wikipedia benchmark headings in order.Organ1.5 u
Interop-2026 CSS pack (BR10)
after BR1
css_anchor_posCSS anchor positioning, container style queries, cross-document view transitions and scroll-driven animations -- graded by the BR1 harness on the Interop-2026 focus-area directories; done when each directory shows a published pass count, not before.Organ3 u
Per-site process sandbox (BR12)
after BR5
bsb_spawnContent processes per site over the existing sovereign process primitives, never-brick preserved; done when a crash in one tab's content process leaves the browser and other tabs alive under the synthetic-user driver.Organ2 u
Canvas GPU (WebGL2 first) (BR13)
after BR9
bg_webgl_ctxA WebGL2 context on canvas through the sovereign GPU lane; done when the /world delivery pages render INSIDE the Nishi browser and the same frame bit-compares against the CPU path at reference size.Organ3 u
Web storage + origin model (BR16)
after BR3
bst_local_setlocalStorage/sessionStorage over the profile store, IndexedDB over the seg-store plane, AND the origin model that scopes them (bcors_check same-origin enforcement in fetch -- the security half is part of the done-rule, not an afterthought); done when a saved SPA login fixture persists a session across a browser restart and a cross-origin read is REFUSED.Organ2 u
Canvas 2D + SVG raster (BR17)
after BR3
bc2_fill_rectThe canvas element API over the existing sovereign raster primitives, and an SVG parser/rasterizer (bsvg_path) feeding the same image path -- unblanks the census's skipped .svg class; done when a banked canvas fixture and wikipedia's SVG figures render with row-hash asserts.Organ2 u
Web components (BR18)
after BR3
bsd_attachShadow roots, the custom element registry, template instantiation -- graded by the BR1 harness on the custom-elements + shadow-dom WPT directories (scoped registries is an Interop-2026 area); done when a componentized fixture renders its composed tree.Organ2 u
WebSocket wire (BR19)
after BR3
bws_connectExpose the EXISTING 24-file sovereign WS stack (the rooms/SFU daemons already run on it) as the page WebSocket object -- the cheapest wire on the breadth list; done when a page script echoes through our own room daemon end-to-end.Organ0.5 u
Product surfaces (BR20)
after BR5
bpd_downloadDownloads manager, form autofill, credential store and per-site permissions over the profile store; print/save-to-PDF (bpr_to_pdf) from the layout tree; done when the synthetic-user driver exercises a download + an autofill + a print of the wikipedia fixture.Organ3 u
Byte-preserving WPT corpus ingest (BR21)
after BR1
wsp_ingest_dirThe yardstick is only as reproducible as the corpus it reads, and on 2026-08-26 the corpus behind the published 08-18 numbers was found banked NOWHERE: bench/wpt held only the 370-byte history TSV, and an exhaustive WSL plus laptop search returned nothing. Two directories were re-acquired BY HAND that day and both hashed IDENTICAL to their 08-18 rows, so the numbers are sound -- but the method that recovered them cannot finish the job, and it fails in two DIFFERENT ways that a single organ closes. FIDELITY: the hand path re-emits each body through a text tool argument, which cannot carry UTF-16LE or a BOM, and html/syntax/parsing-html-fragments is the ENCODING-DETECTION suite (the-input-byte-stream-003.html is UTF-16LE with a BOM), so transcription would corrupt exactly the bytes under test. SCALE: dom/nodes is 178 files at two round-trips each, and a partial dom/nodes would be a SAMPLE, which may never be published as a population fact. Done when one call takes a WPT directory path plus a pinned commit sha and lands every file of that directory as RAW BYTES with no text layer anywhere in the path, verifies each file against both the size and the git blob sha GitHub declares for it, writes a manifest carrying the pin, and REFUSES to report the directory complete if any single file failed -- proven by re-ingesting dom_lists and dom_collections and reproducing corpus_sha16 54e90b086e0c6530 and 1819a1dcd3030f03 exactly, then ingesting html_syntax_fragments and dom_nodes and reproducing the 08-18 rows for both. Ships as a lib plus an in-process gate per estate law, so the ingest logic is mutation-provable rather than hidden behind a fork. LANDED 2026-08-26 as three files: nx_wpt_acquire_lib (the pure half -- manifest parse, dual verification, raw write, read-back compare, completeness conjunction, manifest and marker emit), nx_wpt_ingest (the acquisition half, carrying wsp_ingest_dir), and nx_wpt_ingest_gate (49 of 49 teeth GREEN, mutation-proven killed=1 not_reached=0 mutant_live=0, admitted to the standing gate roster). ALL FOUR done-rule bars met: dom/lists and dom/collections re-ingested and reproduced corpus_sha16 54e90b086e0c6530 and 1819a1dcd3030f03 exactly, and html/syntax/parsing-html-fragments and dom/nodes -- neither of which had ever been acquired -- came in COMPLETE at 13 of 13 and 178 of 178 and reproduced the 08-18 corpus hashes a075ffa0af05ccd7 and d49aee870a338154 exactly, including the-input-byte-stream-003.html, UTF-16LE with a BOM and a NUL as its fourth byte, landed with its BOM and its 2,632 bytes intact. The first mutation run is worth recording because it found a real defect rather than a gap in the gate: three of its four comparison sites came back NOT-REACHED, and all three were inside a SECOND decimal renderer and a SECOND length scan that the first draft had written beside the ones already in the file. The compiler eliminated the duplicates because nothing offline could call them, so a mutation there could not change the binary. Collapsing them onto the single renderer removed the duplicate ruler AND the blind spot in one edit, and the re-run reads not_reached=0.Organ1 u

Milestones

MilestoneRungsCumulative
M0 · Build + yardstickBR0,BR1,BR214 u
M1 · The operator ratchet (structural exactness)BR2,BR14,BR4,BR26,BR27,BR2913 u
RungCloses withDefinition of done (pre-declared)ExecutorEst.
Every named entity decodes and every unmapped codepoint is visible (BR39)
after BR30
ent_html5_tableThe decoder table carried 112 hand-grown names and rendered Ø literally (probe 2026-09-02); it now carries the HTML 4.01 set of 253, generated per name length so no function exceeds the compiler's block pool. Remaining: the HTML5 superset of 2,231 names generated from the spec list into per-length tables, and an unmapped codepoint under a face draws the face's notdef box (what Chrome shows without a fallback font) instead of vanishing. Gate proves every HTML5 name decodes to its codepoint on a fixture, that an unknown name passes through literally, and that a CJK run under a face paints notdef cells with the advance of gid 0Organ1 u

Milestones

MilestoneRungsCumulative
M2 · The dynamic webBR3,BR7,BR9,BR8,BR28,BR30,BR3921.5 u
M3 · Product parity of KIND with the Ladybird alphaBR5,BR6,BR15,BR1123 u
M4 · The 2026 field barBR10,BR12,BR1331 u
M5 · Full-platform breadthBR16,BR17,BR18,BR19,BR2039.5 u
M6 · The measurement lab -- the industry's instruments as oracles, sovereign twins any seat can runBR31,BR32,BR33,BR34,BR35,BR36,BR37,BR3850.5 u
RungCloses withDefinition of done (pre-declared)ExecutorEst.
Native world-frame emission (BR22)we_world_frame_emitLANDED 2026-08-27, GATE OWED -- the row states which half is proven. Operator directive: i want to emit, i dont want webgl and other 3d parties receiving our work and capabilities. SHIPPED runtime/nx_world_emit.nx (5,601 B src, elf df3477 19,616 B, PROMOTED + REGISTERED the same hour): COMPOSITION not a twin -- rendering stays in nx_world_snap.elf (the promoted capture instrument, the same nx_wasm_craft engine source the browser wasm is compiled from; it was REGISTERED-DARK until today and its first MCP invocation was this lane's probe), and the new organ is the missing SHIP LANE for frames: render, stage byte+PNG-signature assert, atomic renameat, read-back of what LANDED. First live emission receipts: WE-RENDER rc=0 stage_bytes=108223 png_ok=1; WE-DEPLOY rc=0; WE-READBACK bytes=108223 png_ok=1; served /world/emit_craft.png status=200 bytes=108223, nx_page_verify VERDICT=GREEN (PNG deep-decode). The browser.matrix watch row flips on the regen that publishes this text -- the flip is the receipt, NOT the proof. NOT DONE UNTIL: an in-process gate proves the lane (render-assert, deploy, read-back conjunction, mutation-proven, roster-admitted) and a beat row keeps the frame fresh -- a frame emitted once is a fossil with a URL. done when the watch cell reads the symbol, the served bytes verify, and the gate is GREEN + bite-proven.Organ0.5 u
Browser-native launch (nishi-game marker) (BR23)br_launch_gameMEASURED DONE 2026-08-27 for the laptop vantage -- and the wire PRE-EXISTED this migration: the census's job was to find it BUILT-UNADOPTED, not to build it. The whole chain was already in source: nx_game_page_emit stamps the nishi-game meta marker into every emitted world page (CE_NATIVE in nx_craft_emit names nx_desktop_craft); nx_browser br_game_organ extracts it FAIL-CLOSED (the page-controlled value becomes an exec path, so nx_[a-z0-9_]{1,60} or the whole marker REJECTS -- nx_browser_game_marker_gate, 7 teeth incl. traversal, uppercase, unterminated hostile pages); br_launch_game execs the native client. PROVEN LIVE TODAY: chain sentinel knowledge/status/nxgame_chain + local nx_browser.sov.elf against the LIVE https URL /world/craft -- fetched over the sovereign TLS stack, 82 boxes laid out, marker detected on the served bytes, native client exec'd: nx_desktop_craft selftest 7/7 GREEN on a REAL X server (S4 blit round-trip 0 of 432000 bytes mismatched, S5/S6 synthetic key+mouse walk camera and yaw exactly, S7 save/load persistence), NATIVE-CHAIN organ=nx_desktop_craft rc=0. nx_desktop_craft itself sat BUILT-UNPROMOTED+STAGED and is now PROMOTED (a643136b, 210,270 B, prev banked) + REGISTERED; source hash e75c16f5 is IDENTICAL laptop and NAS, so the local 7/7 proves the promoted source. RESIDUALS, named: the Windows PE daily driver carries the same marker source but its PE lane was not re-proven today; the NAS binary cannot run the X selftest (no X server on the NAS -- the bench verb is its headless proof surface); and WSLg's Xwayland socket was found dead after long uptime (empty /tmp/.X11-unix reading as X11-setup-failed rc=2) and restored by a WSL bounce -- an absent socket is indistinguishable from a broken client until you list the directory.Organ0.5 u
Motion: emitted frame sequences (BR24)
after BR22
we_frame_seq_emitOPEN, pre-declared. The motion stack exists as LIBS and the census measured its adoption rather than assuming it: nx_video_codec.nx (NishiVideo v1: I-frame codec, entropy, perceptual quant, deblock, reference, MV search) has exactly ONE importer (nx_video_codec_v1_adapter); nx_room_stream.nx (the sovereign no-WebSocket media down-channel) has ONE (nx_vroom_daemon, live on :8446); nx_room_relay.nx has 10. A codec with one importer is a capability the frequency board prices at zero -- the adoption metric for this rung is IMPORTER COUNT RISING, not registration. done when a frame SEQUENCE of the generated world is emitted server-side (nx_world_emit grows we_frame_seq_emit) and delivered as plain media through a sovereign wire (the nx_room_stream down-channel or an emitted NishiVideo/YUV artifact with a published decode), consumable by the native browser AND the last-mile browsers with zero client-side capability, proven by served bytes plus a gate on the sequence lane.Organ2 u
Cross-engine last mile on emitted pages (BR25)
after BR22
bx_engine_verifyOPEN -- the lane-D watch contract bx_engine_verify names it: verify the emitted-output pages (plain media plus minimal HTML, zero capability JS) render on Nishi native, Chrome, Waterfox and Edge. done when bx_engine_verify runs the emitted /world frame surface across the engine set with a published per-engine verdict row (the top-20-census pattern applied to OUR OWN emitted pages), and the only licensed difference is font rasterization.Organ1.5 u

Milestones

MilestoneRungsCumulative
M6 · Native emission migration (zero client-side capability)BR22,BR23,BR24,BR254.5 u
RungCloses withDefinition of done (pre-declared)ExecutorEst.
The Nishi browser opens /world/beach as the sovereign door: same world bytes, no third-party gatekeeper (BR40)br_world_doorOPERATOR 2026-09-03 (gpu and gameengine goal rows): third-party browsers are the final mile and this browser is where the stack is sovereign. MEASURED the same day: the served beach is 630629 B of which the hand-written JS shell is the interop half gameengine GE22 and GE38 ratchet to zero, the engine is a wasm module our compiler emitted, and the frame is drawn by WebGL2 today with WebGPU levered (gpu GP3 ladder) and cross-origin isolation paid but unconsumed (lang LN33). Done when this browser opens the world URL, fetches the content-hashed module and recipe planes (performance PF1, gameengine GE46), instantiates the module in the sovereign wasm VM (the nx_wasm_vm_verify twin), presents through the native raster door the GE42 kernel names with the HUD reading door nishi-native, reaches first frame inside the GE15 budget, and the frame is bit-identical to nx_world_snap at the same seed (the GE27 tooth) -- the page JS shell is bypassed, never re-implemented; a world that still needs the JS shell to draw reads REFUSED by name with the un-drained function namedOrgan3 u
Every performance bar carries its primary source and date, and a beat flags DRIFTED when the vendor page moves (BR41)up_metric_provDONE-RULE PRE-DECLARED 2026-09-04. A bar row carries the vendor URL and its last-updated date [webvitals26]; publishing a bar with only a secondary witness is REFUSED; a beat re-reads the primary and a planted date change must flag DRIFTED.Organ1 u
Every published benchmark score carries suite, version, version date and run date, or is labelled UNCONTROLLED (BR42)bb_version_ledgerDONE-RULE PRE-DECLARED 2026-09-04. Four fields on every score [browserbench-ann] [jetstream3]; a planted score with an unknown suite version must render UNCONTROLLED, never bare.Organ1 u
Engine coverage and platform coverage are two fields and the resolver refuses to collapse them (BR43)bcd_engine_platformDONE-RULE PRE-DECLARED 2026-09-04. The resolver emits engine and platform coverage separately [webgpu-status26]; a caller asking for one boolean is refused by name. Bite: WebGPU must read engine=all, platform=partial.Organ1 u
Every rendering optimization is reported as a throughput and energy pair over the same run (BR44)ep_pair_receiptDONE-RULE PRE-DECLARED 2026-09-04. The receipt carries both deltas [servo-jul26]; a throughput number without its energy twin is refused; a planted run that raises frame rate while raising joules per frame must read as a regression.Organ2 u
The interop score is the intersection, with per-implementation rates beside it and an investigation class (BR45)wpt_interop_intersectDONE-RULE PRE-DECLARED 2026-09-04. Score = tests passing in every compared implementation [interop2026-webkit]; per-implementation rates published; an area with no valid rate carries the investigation class rather than a number. Bite: a planted area with one failing implementation must lower the intersection and not the others' rates.Organ2 u
Every conformance figure is a numerator, a denominator and a date, never a bare percentage (BR46)js_conf_tripleDONE-RULE PRE-DECLARED 2026-09-04. Three fields with the denominator from a versioned import [ladybird-apr26]; a planted shrinking denominator must be visible in the triple where the percentage alone would hide it.Organ1 u

Milestones

MilestoneRungsCumulative
M7 · September 2026 SOTA: the web platform field's own findings admitted as bars, watches and pre-declared contractsBR41,BR42,BR43,BR44,BR45,BR468 u
RungCloses withDefinition of done (pre-declared)ExecutorEst.
The verifier fetches what the page declares it will fetch (BR47)
after BR1
pr_declared_hitnx_pageref_lib gains the declared-asset vocabulary (a meta row named nishi-<kind> with a content path is a promise the page's script will fetch that path), nx_page_verify follows it like an img src, counts it on its summary line as declared-assets and proves a declared NXA by its NXANIM01 magic, and .nxa joins the must-not-answer-HTML class; done-rule: nx_pageref_gate carries the meta-declared hit, a description meta and a non-meta content attribute as negative controls and the .nxa extension class, and nx_page_verify on /world/rigview reads checked=2 with the rig fetched and MAGIC-OK, so a GREEN on a 3D page means the character was seenOrgan1 u

Milestones

MilestoneRungsCumulative
M8 · The verifier sees what the page fetchesBR47,BR48,BR4956 u
RungCloses withDefinition of done (pre-declared)ExecutorEst.
The verifier proves a declared asset of any size by its head (BR48)
after BR47
ff_fetch_headnx_https_fetch_follow.nx gains a bounded-prefix entry (send GET, read the headers and at most N body bytes, close) that returns the prefix and its status instead of failing on overflow, nx_page_verify's head-range retry composes it, and nx_page_verify https://nishifamily.com/world/rigview reads verified-by-head=1 unobservable=0 VERDICT=GREEN against the 10,758,232 B rig -- with a neg-control asset whose head carries no known magic still reading UNOBSERVABLEseat1.5 u
The static front door honours Range on every static asset (BR49)
after BR47
sites_range_206the edge that serves sites/nishifamily/world/ref9d.nxa answers Range: bytes=0-65535 with 206 Partial Content + Content-Range + Accept-Ranges by composing the range arithmetic nx_media_server already ships (its Accept-Ranges and Content-Range emission), proven by nx_audio_serve_gate's shape (a 4-11 range returns exactly those bytes) run against a static path, and nx_page_verify's head-range retry then reads head-range status=206 on the rig -- a daemon deploy through the health-checked /api/deploy, an operator decision because every request crosses this doortraffic-owner2 u
Ladder verdict. NOT DECLARED. This board names no dated best-in-class or frontier target and no rung roles (sotatarget and rungrole rows on its plan); the ranker labels it NO-LADDER until it does, and until then its rungs climb toward a target nobody has written down. Bars: 0 (fresh 0, attested 0, stale 0, unattested 0), verdict NO-BAR against the current month 2026-09.

Inspect a rung and its prerequisites

Declared nodes 50. Rank input binding: PLAN_MATRIX_BOUND_ONLY. Dependency order is authored. Implementation, acceptance evidence, authority and resource readiness are unverified. No action is recommended or dispatched here.

Plan SHA-256 6206a50b0641bbe79dc8d8ecfeb7481c1c5d1e820a4050026c86bb0406587c90. Target rows 0; role rows 0. Existing risks and release worklog retain their own scope; no node completion is inferred.

Use Enter or Space on a rung to inspect its contract. Prerequisite links locate another rung in this list; open its summary to inspect it. Estimates are authored effort, not forecasts.

  1. BR0 — Shipping-tree build GREEN

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: br_comp_border

    Acceptance: DONE 2026-08-18 (actual 1 u, estimate held): fault named -- a hardcoded token-pool cap + unguarded push_tok in the compiler, fixed by derived sizing through the canaried toolchain lane (equiv net 10/10, compiler live 5aaf6cd7, browser BUILT+PROMOTED b2ce1f8e). Original done-rule follows: either a compiler defect with a minimal reproducer + a fix promoted through the canaried toolchain lane (nx_cc_equiv_staged + contentdiff GREEN), or a source-shape rewrite with the reproducer banked as a compiler bite. Method fixed by the record: stub BODIES, never truncate; diagnose on the tree that ships (the laptop mirror is stale). Done when the Linux browser deploys again.

    Authored effort: 1. Executor kind: Compiler+Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  2. BR1 — Sovereign WPT harness

    Prerequisites: BR0 (acceptance unverified)

    Contract: wpt_run

    Acceptance: V1 RAN + V2 CORRECTED 2026-08-18: nx_wpt_runner (sync testharness shim, shared-genv page lane, runtime controls that REFUSE counts if the harness cannot see a failure) over the FULL .html population of four slice directories. v2 numbers (v1's assert_throws any-throw overclaim removed -- published passes went DOWN 45 to 31, which is the correction discipline working): dom/nodes 31 pass / 1217 fail / 178 unsupported-assert / async 1-5-202-incomplete (171 of 178 ran), dom/collections 5/41/2, dom/lists 0/14, html/syntax/parsing-html-fragments 0/20 -- laptop-run like the census, results published here. v3 (08-19) is the OBSERVABILITY rung, field-grounded [@otel-cicd26] [@develocity-pts26] [@wptfyi-runs26]: OTel-mapped TSV time spine (bench/wpt/wpt_history.tsv + the wpttrend- store plane), content-addressed skip on (engine sha, corpus sha) with --force, REGRESSION exit 4 vs the newest same-corpus row (bite-proven: a planted better prior row fired verdict AND exit -- the exit-code half was CAUGHT MISSING by the bite, the estate's own gate law live in a day-old organ), and --twice determinism proof (171 files x2, zero divergence). REFTESTS LANDED 08-19 (nx_wpt_reftest PROMOTED, telemetry on the extracted nx_wpt_spine shared lib -- the DRY law applied at consumer #2): floats 13/51, css-tables 60/56 match-pass/fail at exact-pixel 800x600; corpus = every test in the directory PLUS every reference it links, fetched to closure (0 missing). vNext: NAS fixture ingest so the wpttrend beat runs estate-side; fuzzy-meta tolerance; async event-driven tests. DRIFT CLOSED 2026-08-26, PROVEN BY THE HARNESS'S OWN TELEMETRY: a fresh /api/build of buildroot nx_wpt_runner.nx returns 9a97da75.../595,550 B and BOTH the serving root and the _offc twin ALREADY hold exactly those bytes, so live == staged == source; and the engine= field every counted run stamps into wpt_history.tsv reads 9a97da75f32c108d, meaning the time spine had been recording the current engine all along. The rebuild-on-a-quiet-box instruction this sentence used to carry was STALE -- a standing drift claim nobody re-measures costs the next reader the same investigation, and here the evidence that closed it was already inside the harness's own output. NEXT, NOW MEASURED RATHER THAN NAMED: async is the largest single hole in the count. Run 2026-08-26 over the six-file dom/nodes slice in knowledge/wpt: tests_pass=8 tests_fail=89 async_incomplete=147 dur_ms=84, controls pass=1 fail=1 -- so 147 of 244 assertions (602 permil) are UNJUDGED rather than failing, and Document-createElement.html alone contributes all 147 while returning ZERO sync verdicts. An unjudged assertion is an abstention nobody counts, so the honest denominator on this slice today is 97, not 244, and the async event-driven lane is what converts 602 permil of the corpus from invisible into scored. RESOLVED THE SAME DAY, AND THE FIRST DIAGNOSIS WAS WRONG: the missing piece was NOT only the absent event loop. A purpose-built fixture that separates the conjuncts (knowledge/wptprobe) proved the trailing load-dispatch script DOES execute and DOES fire registered handlers -- p2-after-html-script-ran and p5-handler-body-ran both PASS -- so the dispatch was necessary but not sufficient. The real blocker was in the shim's own async_test: it invoked the test body as g() with NO ARGUMENTS, so async_test(function(t){...}) received undefined and every t.step / t.done threw, leaving the test started and never finished. One correction, fn(t) instead of fn, and the slice reads async_incomplete 147 -> 0 with the partition reconciling EXACTLY: 137 async_fail + 10 async_unsup_assert = the 147 that were invisible. Judged assertions rise 97 -> 244 and the published pass rate therefore FALLS from 82 permil to 33 permil (8 of 244) -- the number got worse because it got honest, the same correction discipline that took v1's 45 published passes down to v2's 31. The 10 unsupported are assert_throws_dom needing DOMException identity, correctly routed to UNSUPPORTED rather than fake-passed. Engine f14f553a77ea1293, controls pass=1 fail=1, verdict=COUNTED. NAMED LIMIT, not fixed here: t.step and t.step_func still drop their arguments, so a test whose handler needs an event object is not yet reachable; and sync test(f, name) likewise passes no test object. AND THE RUN THAT PROVED ALL THIS WAS NOT BEING RECORDED. wsp_append sat behind if (histpath != 0), so a run invoked as `nx_wpt_runner <dir>` -- the documented first form of its own usage line -- printed WPT-ROW ... COUNTED and persisted NOTHING, while that same usage line promised every counted run appends a TSV row. Four runs on 2026-08-26, including the 147 -> 0 measurement, were absent from every history file, and TWO RIVAL SPINES had grown (bench/wpt/ and knowledge/status/) because each caller chose its own path -- the duplicate-ruler defect wearing a filename. A SPINE THAT ONLY RECORDS WHEN THE CALLER REMEMBERS THE PATH IS AN ADOPTION GAP WITH EXTRA STEPS. Fixed by defaulting to a single named owner and ANNOUNCING it: every run now prints a WPT-HISTORY line carrying the path plus a src field reading argv or DEFAULT, so a reader never guesses which file a row went to. Proven by the SPINE GROWING, not by the message appearing -- the first attempt printed a perfect-looking WPT-HISTORY line and appended nothing, because the path literal had been mangled to tsvu0000 in transit; only checking bytes-before vs bytes-after caught it (623 -> 703, delta 80). Live 3a6c48264dc7cc45. THEN THE REAL YARDSTICK RAN. With dom_nodes banked (178 files, BR21), the harness was pointed at the largest corpus we have and the async work paid out: async_incomplete 202 -> 56, files rendered 171 -> 174, and JUDGED assertions 1432 -> 1581 (+149) while PASS stayed EXACTLY 32. corpus_sha came back d49aee870a338154, IDENTICAL to the 2026-08-18 row, so the re-acquired corpus is byte-faithful and the two runs are comparable. THE HARNESS THEN CALLED ITS OWN IMPROVEMENT A REGRESSION: fail rose 1222 -> 1361 and it printed "same corpus, so the engine changed for the worse" with exit 4. That sentence asserts a cause the detector cannot know. AN ASSERTION THAT WAS NEVER JUDGED CANNOT PREVIOUSLY HAVE BEEN PASSING, so judging more can raise fail and can NEVER lower pass -- the asymmetry that makes the distinction sound rather than a loophole. The rule now separates them and is deliberately CONSERVATIVE: a pass DROP is always REGRESSION, and a fail rise is excused ONLY when FULLY covered by the fall in previously-unjudged assertions AND pass did not drop, so any unexplained fail still flags. Here 139 <= 146, so it reads RECLASSIFIED, exit 0, with all four numbers printed. A new row label RECLASSIFIED-vs-<epoch> keeps it its OWN bucket in the time spine rather than folding a fourth state into an existing one. 56 incomplete remain -- event patterns beyond load -- and that is the next rung, stated as a number rather than an adjective. BR21 CLOSED, AND NOT BY ME: a sibling seat shipped nx_wpt_ingest -- 49-tooth mutation-proven gate, on the standing roster, pin validation refusing any non-40-hex commit, a name allowlist, idempotent reuse, and a read-back compare that verifies what was WRITTEN. I built nx_wpt_corpus_ingest in parallel without detecting that work in flight; nx_presubmit and nx_capsearch both correctly reported the NAME and the CAPABILITY free, because neither can see a sibling mid-build. Theirs is the superset on every axis -- it already carried the very overrun margin I had to discover by clipping three files at got==cap -- so the duplicate was RETIRED reversibly to knowledge/retired/ rather than left standing. A SEARCH THAT CANNOT SEE WORK IN FLIGHT WILL CLEAR A DUPLICATE EVERY TIME; the check that would have caught it is the corpus manifest on disk, which already named the organ. What survives from the duplicate lane is the JSON reader fix it forced: jx_get_str and jx_get_str_raw required NO whitespace after the colon, so every pretty-printed producer read as an absent field, while jx_get_int one function above already skipped it -- a law applied in half an API. Original done-rule: A pre-declared WPT slice (html/syntax + html/dom, css/CSS2 box + css/css-flexbox + css/css-tables, dom/nodes) runs through the deterministic shot lane (reftests) and a testharness.js-subset shim on js_eval (testharness); results published on THIS page as pass/total PER DIRECTORY beside Ladybird's and wpt.fyi's, never a single percent. A known-failing fixture must FAIL (neg control) before any pass counts. The harness runs THROUGH the BiDi endpoint once BR6 lands (the Ladybird/Servo pattern).

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  3. BR2 — CSS-on structural exactness loop

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: bc_struct_col

    Acceptance: COLUMN LANDED 2026-08-26, BAR MEASURED AND UNMET, RUNG NOT DONE -- AND THE RANKER DISAGREES WITH THAT SENTENCE, WHICH IS ITSELF THE FINDING. nx_compare_rank decides done by SYMBOL PRESENCE, so the moment bc_struct_col was declared the board moved BR2 from open to done-but-partially-adopted and the operator ratchet reads satisfied while its own bar reads UNMET. That is A COMPLETION SIGNAL THAT KEYS ON A NAME REWARDING THE WRITING OF THE NAME, arriving at the RANKER rather than at the matrix where the estate already knows the shape, and it will fire on EVERY rung whose done-rule is a measured bar rather than a capability. The symbol is deliberately NOT renamed to dodge it (that is dodging a classifier by luck, the answer organ_kind.conf and organ_gate.conf both refused): the fix is for a measurement rung to be judged on the verdict its own organ emits -- nx_browser_census publishes br2_bar_verdict, MET or UNMET or UNOBSERVABLE, on every run -- and until the ranker can read that, this sentence is the only thing standing between the board and a false done. What shipped: bc_struct_col is declared in nx_browser_census.nx and delegates to nx_browser_struct_col_lib.nx, because the judgement has to live in a lib for nx_browser_struct_col_gate to prove it IN PROCESS -- a gate that forked the census binary would read NOT-REACHED for every mutant and its GREEN would mean nothing. Gate 29/29 GREEN, bite-proven twice (killed=1, not_reached=0, mutant_live=0, restore byte-identical), declared in organ_gate.conf so a ship of the census REFUSES rather than warns when the proof is missing. The census itself was PROMOTED-UNREGISTERED for its whole existence -- a real binary nobody could call -- and is now registered and invoked. The plane row grew FOUR additive fields, not three: struct_matched_pm, struct_dy, struct_dx AND struct_bands_oracle, and the fourth is the point. Measured the same day on saved bytes, google returned 1000 permille over TWO oracle text bands and stackoverflow 0 permille over ZERO: a perfect score and a total failure, both arithmetic on an empty subject, both arriving as numbers a scoreboard would have averaged. bsc_band_floor derives the smallest usable denominator FROM THE BAR (one band moves a reading by 1000/N permil and a 900 bar leaves 100 permil of headroom, so N >= 10) and such rows are counted UNDERPOWERED, named, never averaged and never silently dropped. THE NUMBERS, all on bench/selfpage saved bytes through the incumbent nx_struct_diff, CSS on with oracle advances, deterministic, no network, deep window ay=by=800 h=2000: wikipedia 845 permil dy 7 dx 80 over 84 oracle bands, hackernews 769 dy 12 dx 91 over 26, linkedin 545 dy 14 dx 66 over 77. Census aggregate mean 719 permil dy 11 dx 79 over 3 measured, 3 underpowered, 0 unmeasured of 6 rows seen (the partition sums), br2_bar_verdict UNMET. THE DONE-RULE NAMES TWO SITES THAT CANNOT DECIDE IT: an oracle self-control over every banked capture (each self-matches 1000 permil dy 0 dx 0, the positive control that proves the ruler can see) counts example at 6 text bands and x at 6, both below the floor of 10, so neither can resolve a 900 bar at all, while stackoverflow and amazon capture ZERO bands, the CHROME-BLOCKED class. Two of the four bar sites are structurally unmeasurable against the oracles we hold, and that is a defect in the done-rules subject, not a missing engine gain. THE INSTRUMENT DISAGREES WITH ITSELF ON REFLOWING PAGES, AND THE SCOPE WAS MEASURED AFTER THE FIRST DRAFT OF THIS LINE OVERSTATED IT. br_shot_png hardcodes a 1000-pixel paint canvas while br_layout wraps at the callers viewport and struct Page carries no width field, so the two widths are independent constants -- a real measure-equals-paint divergence on the WIDTH axis and a Rule-11 magic number. But the effect is 1 of 4 pages, not uniform: the CSS-ON wikipedia page reads 845 permil at layout width 1024 and 892 at 1000 with its page height moving 7304 to 7406, while hackernews reads 769 at BOTH, linkedin 545 at BOTH, and the CSS-OFF wikipedia capture 916 at BOTH, with page heights that barely move. It fires on content that REFLOWS and is invisible on content that does not, so it blocks grading wikipedia-class pages rather than biasing every reading. page_h moving with the viewport is the free discriminator. Which of 845 and 892 is true is still OPEN, since the oracle was captured at 1024 and the control that settles it is a 1024-wide shot canvas -- which is also the fix (debt browser-shot-width, three lines). On wikipedia the swing is the same order as the 55 permil still separating it from the bar, so it is fixed BEFORE further engine work is graded there. STILL OWED, each named rather than assumed: a paired census run carrying OCR recall on BOTH legs, since the pair verdict reads UNOBSERVABLE today (neither leg has a recall number) and the last real reading is still OFF 426 versus ON 311; a bytes-and-oracle capture taken as ONE act so ebay and yahoo have saved bytes to grade at all, which is why their named residuals could not be worked this session; and render_ab as an organ, since it exists only as _ops/render_ab.ps1, PowerShell that judges, and it grades by page height and OCR rather than by struct_diff. Original done-rule follows: The census gains a struct_diff column per site (matched permil, dy, dx) on CSS-ON renders with oracle advances ON; the styled-collapse residuals (ebay 40, yahoo 61 styled) are named defects worked to zero on saved bytes via render_ab; done when struct_diff matched >= 900 with dy <= 4 on wikipedia, hackernews, example and x deep pages AND the census pair no longer favours CSS-OFF, at which point CSS_ENABLED and oracle advances flip ON by default -- decided by the pair, not by taste.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  4. BR14 — Lazy-load images + srcset

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: bi_srcset

    Acceptance: LIB + GATE LANDED 2026-08-26; the done-rule is HALF PROVEN and this row says which half. ROOT CAUSE NAMED: br_extract in nx_browser_render.nx read the src attribute AND NOTHING ELSE, so a lazy-loaded img handed the renderer its data: placeholder while the real URL sat unread in srcset or data-src -- the byte-exact decoders were never at fault, and the images-lazy debt row had the symptom without the mechanism. SHIPPED nx_srcset_lib (bi_srcset the candidate ruler; bi_img_source the element-level order over src, srcset, data-srcset, data-src, data-original, data-lazy-src; bi_sizes_px; bi_img_lazy) wired into br_extract at the ONE site that decides what an img points at, so every consumer of page.bsrc_off gains it in a single edit and no consumer changed shape. SELECTION IS DERIVED, NOT TABLED: target device px = size_px times dpr over 1000, size_px from the author sizes where evaluable else HTML own 100vw default, then the smallest candidate that covers the target and otherwise the largest -- nothing in the lib knows what 640 or 1280 mean, and moving the viewport moves the answer. nx_srcset_lib_gate 59/59 GREEN, mutation-proven killed=1 not_reached=0 mutant_live=0 with the restore byte-verified. THE GATE FOUND A REAL DEFECT IN ITS OWN SUBJECT BEFORE GOING GREEN: a candidate dropped for carrying two descriptors was refused but not CONSUMED, so the leftover 2x re-entered URL collection and a bare descriptor would have been served to the fetcher as an image URL. PROVEN: the descriptor grammar unit-exhaustively (w, x, fractional density, implicit 1x, embedded commas, whitespace runs, ties, overflow, and every malformed form refused BY NAME); the three trivial wrong selectors refuted by name (always-first, always-last, always-largest); byte-identity of the eager path checked against nx_dom_find_attr as an INDEPENDENT instrument rather than asserted; the wiring through the REAL br_layout (four figures resolve to the right URL, zero left holding a placeholder, the lazy flag recorded per box); and the paint chain end to end on a fixture PNG at laid 4 equals decoded 4 equals painted 4 with the pixels asserted in the framebuffer. NOT PROVEN, so this rung stays OPEN: the LIVE half -- the wikipedia benchmark page over the network -- was never run. nx_wpt_reftest was rebuilt and promoted on the new core (contentdiff GREEN, behaveprobe evidence WEAK so behavioural identity is NOT established), and nishi_gui, the Windows daily driver where the bounded fetch budget lives and where the eager-first ordering this rung adds actually pays, carries the source change but was NOT rebuilt: its PE lane is separate. Original done-rule follows: data-src / srcset / loading=lazy images are fetched and painted through the existing PNG/JPEG/WEBP path; done when the wikipedia benchmark page renders every figure it lays out (imgsrc_laid == painted) and the coarse grid on media pages moves.

    Authored effort: 0.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  5. BR4 — Real font files + shaping

    Prerequisites: BR2 (acceptance unverified)

    Contract: bs_shape_run

    Acceptance: FIRST HALF LANDED 2026-09-02 (rung BR26 below, symbol br_set_face): TTF outlines rasterized through the glyph atlas by the sovereign engine nx_ttf_fontlib, hmtx advances and kern-table pair kerning flowing through the ONE measure ruler (nx_font font_adv_em), Liberation Sans (SIL-OFL) as the default face on the Windows daily driver and on the render_shot instrument. MEASURED the same day on bench/selfpage/wiki_aug.html against bench/top20/wikipedia_chrome_tall.png with ONE instrument run twice (nx_browser_render_shot 1024, then 1024 face; nx_struct_diff deep window 800 800 2000): matched 880 to 892 permil, mean_dy 9 to 9, mean_dx 45 to 53, page_h 7027 to 7048 against Chrome 7582, first screen 578 to 578 permil with dx 185 to 155 -- a structural gain and not the bar, while the render itself changed far more than the bands can say (real proportional glyphs, runs no longer welded together, no monospace fallback lines). The hand-baked oracle-advance table was RETIRED after nx_ttf_fontlib_gate T13 proved it equal to floor(hmtx times 1000 over upem) for all 95 ASCII chars. STILL OPEN under this symbol: ligatures (GSUB), GPOS kerning beyond the legacy kern table, bidi runs; and dx toward 0 needs BR27 (family, weight and style resolution -- headings and bold still paint the regular face) and BR29 (the Linux and NAS browser paints bitmap text through a second render core, so the NAS census cannot see any of this yet). The bar stands: struct_diff dx on wrap points reaches 0 against Chrome on saved pages and OCR legibility does not regress below the parametric font's 984.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  6. BR26 — Real TrueType faces in the render core

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: br_set_face

    Acceptance: DONE 2026-09-02 (actual 1 u): nx_ttf_fontlib upgraded to read professional faces (unitsPerEm, hhea ascender and descender, cmap glyphIdArray path, composite glyphs, negative side bearings, ink past the advance, kern table pairs -- all READ from the file; the first cut assumed 1000 upem and ascender 760 and would have halved every real font silently), gate 23/23 GREEN on Liberation Sans and Microsoft Arial with a runtime-synthesised cmap; br_set_face adopts a face into the glyph atlas and hands its advances and kern pairs to nx_font font_set_face so layout, wrap and paint agree by construction (nx_inline_vec_measure_gate 8/8, T7 face and kern reserved by layout, T8 clearing restores stroke widths); nishi.exe rebuilt with the face loaded at startup; the 100-row oracle table retired. Shipped in BOTH trees, hash-verified.

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  7. BR27 — Font-family, weight and style resolved to real faces

    Prerequisites: BR26 (acceptance unverified)

    Contract: br_face_resolve

    Acceptance: LANDED 2026-09-02 (actual 1 u), SHIPPED AWAITING THE REFEREE AND THE OPERATOR: a face registry of eight slots (Liberation Sans and Serif in regular, bold, italic, bold-italic) selected per text run by ONE resolver, nx_layout_face_for_box, that reads font-weight, font-style and font-family (and the font shorthand) with CSS inheritance and is called by layout before measuring and by paint (br_face_resolve) before drawing, so a run is measured and painted with the same face by construction; the UA sheet now makes h1 to h6 bold. nx_inline_vec_measure_gate 11/11 (T9 a run inside b is measured with the bold slot, T9b the resolver names slot 1, T10 no bold slot falls back to slot 0 and never to the stroke font). MEASURED on the saved wikipedia page, same instrument: struct mean_dx 53 to 49 (the done-rule asked for below 53), page_h 7048 to 7090 against Chrome 7582, matched 892 permil unchanged; the crops show the title and section headings in serif and bold, the hatnote in italic, and bold runs bold. THE BOLD HEADING, ROOT-CAUSED AND FIXED THE SAME HOUR -- after one WRONG correction that is retracted here: an earlier sentence said the fixture carried no heading-weight rule, on a truncated directory listing (5,326 was a cut column of 425,326 bytes); the fixture DOES carry .mw-heading,h1,h2{font-weight:bold} followed by .mw-heading1,h1{font-weight:normal}. Measure-gate teeth T11-T17 isolated the mechanism: single, comma-list and class-descendant author rules all beat the UA bold, but T17 (.zz,b{bold} then b{normal}) FAILED because rh_cascade computed specificity over the WHOLE comma list, so a class member leaked its specificity onto the type members of its list and the earlier list rule outranked the later plain rule (the source's own comment called this a later refinement). FIXED: rh_match_complex_spec returns the max specificity of the members that actually match, and the cascade sorts by that per-match value (18/18 GREEN). MEASURED on the saved wikipedia page, same instrument: first screen 578 to 684 permil (13 of 19 bands), dx 155 to 138; deep window 892 to 880 with dx 49 to 39 and dy 9 to 8; page_h 7090 to 7004 against Chrome 7582; the title now paints serif regular as Chrome does. Still open: edit-section links inherit the heading face, and no monospace slot. nishi.exe rebuilt with the whole family loaded from web_assets/fonts/ (or ../web_assets/fonts/ or the Windows system faces the user already owns, a runtime fallback only), OFL license shipped beside the fonts.

    Authored effort: 1.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  8. BR28 — Web fonts: @font-face URL loading + WOFF2 decode

    Prerequisites: BR26 (acceptance unverified)

    Contract: bwf_load

    Acceptance: Pages ship their own fonts as WOFF2 (Brotli-compressed sfnt); done when a fetched @font-face WOFF2 decodes to an sfnt our engine loads and paints on a banked fixture, with ONE sovereign Brotli codec shared with typography rung R0 so emit and load cannot disagree.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  9. BR29 — ONE render core: the Linux and NAS browser paints through nx_browser_render

    Prerequisites: BR26 (acceptance unverified)

    Contract: br_render_core

    Acceptance: MEASURED 2026-09-02: nx_browser.nx (the promoted Linux binary, the NAS shot verb, the roster gate subject) declares its OWN br_layout, br_draw_fb and br_shot_png and paints text with the 8x8 bitmap font at 2x; it never imports nx_browser_render.nx, where the vector typography, the glyph atlas and the real faces live. Two render cores is the duplicate-ruler defect at the centre of this board, and it is why every NAS-side render of this roadmap is blind to the typography work. Done when nx_browser.nx composes the shared core (one br_layout, one paint), the NAS shot verb paints the same pixels the Windows build does, and nx_browser_gate row 12 stays GREEN through the change.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  10. BR30 — Unicode text pipeline beyond ASCII

    Prerequisites: BR26 (acceptance unverified)

    Contract: br_text_cp

    Acceptance: Text is folded to ASCII before layout (accents to base letters, curly quotes straightened), so a real face is only asked for bytes 32 to 126 although the engine already decodes composite accented glyphs; done when layout and paint carry codepoints, the face covers Latin-1 and Latin Extended on the wikipedia benchmark, and the fold is retired for the scripts the face covers.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  11. BR31 — The browser lab: one sovereign run over a URL or saved bytes, every oracle on one time spine

    Prerequisites: BR26 (acceptance unverified)

    Contract: bl_run

    Acceptance: WebPageTest-class synthetic lab composed from the incumbents the estate already has (render_shot, struct_diff, the census column, the WPT time spine) plus the meters BR32 and BR33 add: one command renders the page, grades it against the banked incumbent capture, records vitals, trace, memory and energy, and APPENDS one row to a content-addressed time spine so any seat, AI or human can read improving or regressing instead of a level; done when a run on the wikipedia fixture appends a row whose every column is measured (none UNOBSERVABLE) and a second identical run appends an identical row.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  12. BR32 — Core Web Vitals on the sovereign render timeline

    Prerequisites: BR26 (acceptance unverified)

    Contract: br_vitals

    Acceptance: LCP and CLS computed from OUR layout and paint passes (largest paint box time, layout shift between passes) and INP once the JS lane (BR3) dispatches events, reported per page beside the incumbents' field thresholds; done when the wikipedia fixture reports LCP and CLS numbers that a repeat run reproduces and the static predictor (nx_uiq_perf) and the runtime meter agree in sign on a planted layout-shift fixture.

    Authored effort: 1.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  13. BR33 — Trace, frame budget, memory and energy per page

    Prerequisites: BR31 (acceptance unverified)

    Contract: br_resmeter

    Acceptance: Perfetto-class spans over fetch, parse, cascade, layout and paint (nx_trace_emit), the per-frame budget (nx_frame_budget), resident and committed memory (nx_resmon) and joules per page from the hardware-agnostic probe (nx_energy_probe), all keyed to the same page run; done when a render of the wikipedia fixture prints all four with a declared UNOBSERVABLE for any the host cannot supply, and the energy figure comes from a real counter or is declared MODELLED, never guessed.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  14. BR34 — Codec capability matrix -- supported, smooth, power-efficient, measured by running our decoders

    Prerequisites: BR33 (acceptance unverified)

    Contract: bmc_matrix

    Acceptance: A MediaCapabilities-shaped table emitted from actually decoding banked fixtures (PNG, JPEG, WEBP-VP8L, VP8, H.264, AV1, Opus, AAC) through the sovereign codecs with frame time and energy per frame from BR33; done when every cell reads SUPPORTED-SMOOTH, SUPPORTED-SLOW or UNSUPPORTED with the measurement beside it, and the page publishes the matrix beside the incumbents' declared support.

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  15. BR35 — Responsiveness benchmarks -- Speedometer 3, JetStream, MotionMark run in-house

    Prerequisites: BR3 (acceptance unverified)

    Contract: bb_speedometer

    Acceptance: The cross-vendor benchmarks run through the sovereign JS and render lanes with the score published beside the incumbents; done when Speedometer 3 completes one full iteration in our browser and its score is on the page -- blocked on BR3 by construction, so the row stays a named watch until then.

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  16. BR36 — test262 conformance slice published

    Prerequisites: BR3 (acceptance unverified)

    Contract: js_test262

    Acceptance: A pre-declared test262 directory slice run through js_eval with pass and fail per directory beside Ladybird's 97.8 percent; done when the counts are on the page and appended to the WPT time spine keyed by engine sha.

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  17. BR37 — Compat ledger emitted in browser-compat-data shape

    Prerequisites: BR31 (acceptance unverified)

    Contract: bcd_emit

    Acceptance: Every feature row on this board emitted as one BCD-shaped record (feature, version, support measured by a gate), so the sovereign column can be compared feature-for-feature with the incumbents' data instead of prose; done when the emitter covers every matrix row and a planted false support flag is refused.

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  18. BR38 — Page-quality audit composed from the sovereign auditors

    Prerequisites: BR32 (acceptance unverified)

    Contract: ba_audit

    Acceptance: Lighthouse-class audit over a rendered page composing nx_uiq_contrast, nx_uiq_atree (the ARIA tree), nx_ui_audit and the BR32 vitals into one scored report with named findings; done when the audit on the wikipedia fixture names at least one real finding a rival audit also names, and a planted contrast failure is caught.

    Authored effort: 1.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  19. BR3 — ES2024 core + fetch/DOM API surface

    Prerequisites: BR1 (acceptance unverified)

    Contract: js_fetch_api

    Acceptance: js_eval grows the ES2024 core (classes, async/await, Promise, modules) and the fetch/XHR + DOM/Event/History API surface the SPA shells need; done when at least 3 of the 6 FETCH-EMPTY rows (youtube, reddit, bing, instagram, duckduckgo, craigslist) read CONTENT-OK in the census with recall over 300, and a test262 core-slice pass count is published beside Ladybird's 97.8 percent.

    Authored effort: 4. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  20. BR7 — HTTP/2 in the fetch path

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: bh2_stream

    Acceptance: The existing h2 stack is wired into the browser fetch (ALPN h2, one connection, multiplexed streams); done when the census fetch time on the top-20 drops measurably with no regression, and h3 is scoped honestly as a separate rung.

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  21. BR9 — WASM in the browser

    Prerequisites: BR3 (acceptance unverified)

    Contract: bw_instantiate

    Acceptance: WebAssembly.instantiate through nx_wasm_vm from js_eval; done when a shipped wasm world runs INSIDE the Nishi browser with the same vm-gate equivalence its foreign-browser delivery passes.

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  22. BR8 — Video and audio elements

    Prerequisites: BR7 (acceptance unverified)

    Contract: bv_play

    Acceptance: The video element decodes through the sovereign H.264 lane and paints frames into the layout box; done when a banked MP4 fixture plays frame-accurately (row-hash asserted) in headless and GUI.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  23. BR5 — Tabs, sessions, profiles UI

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: bt_tab_open

    Acceptance: Tabbed windows over the existing profile store, session restore; done when the synthetic-user driver opens, switches and restores three tabs with pixel-exact asserts.

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  24. BR6 — WebDriver BiDi endpoint

    Prerequisites: BR1 (acceptance unverified)

    Contract: bwd_session

    Acceptance: A standard BiDi session (session.new, browsingContext.navigate, captureScreenshot, script.evaluate) served by the browser; done when Puppeteer or Selenium drives a page and screenshot end-to-end and BR1 runs through it.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  25. BR15 — DevTools protocol

    Prerequisites: BR6 (acceptance unverified)

    Contract: bdt_inspect

    Acceptance: Speak the Firefox DevTools protocol so the incumbent inspector attaches (the Ladybird/Servo pattern) -- element tree + styles + console first; done when Firefox's inspector shows our DOM for a live page.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  26. BR11 — Accessibility tree

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: ba_tree

    Acceptance: An accessibility tree derived from the layout tree with roles and names, exposed to the platform on Windows first; done when a screen reader reads the wikipedia benchmark headings in order.

    Authored effort: 1.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  27. BR10 — Interop-2026 CSS pack

    Prerequisites: BR1 (acceptance unverified)

    Contract: css_anchor_pos

    Acceptance: CSS anchor positioning, container style queries, cross-document view transitions and scroll-driven animations -- graded by the BR1 harness on the Interop-2026 focus-area directories; done when each directory shows a published pass count, not before.

    Authored effort: 3. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  28. BR12 — Per-site process sandbox

    Prerequisites: BR5 (acceptance unverified)

    Contract: bsb_spawn

    Acceptance: Content processes per site over the existing sovereign process primitives, never-brick preserved; done when a crash in one tab's content process leaves the browser and other tabs alive under the synthetic-user driver.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  29. BR13 — Canvas GPU (WebGL2 first)

    Prerequisites: BR9 (acceptance unverified)

    Contract: bg_webgl_ctx

    Acceptance: A WebGL2 context on canvas through the sovereign GPU lane; done when the /world delivery pages render INSIDE the Nishi browser and the same frame bit-compares against the CPU path at reference size.

    Authored effort: 3. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  30. BR16 — Web storage + origin model

    Prerequisites: BR3 (acceptance unverified)

    Contract: bst_local_set

    Acceptance: localStorage/sessionStorage over the profile store, IndexedDB over the seg-store plane, AND the origin model that scopes them (bcors_check same-origin enforcement in fetch -- the security half is part of the done-rule, not an afterthought); done when a saved SPA login fixture persists a session across a browser restart and a cross-origin read is REFUSED.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  31. BR17 — Canvas 2D + SVG raster

    Prerequisites: BR3 (acceptance unverified)

    Contract: bc2_fill_rect

    Acceptance: The canvas element API over the existing sovereign raster primitives, and an SVG parser/rasterizer (bsvg_path) feeding the same image path -- unblanks the census's skipped .svg class; done when a banked canvas fixture and wikipedia's SVG figures render with row-hash asserts.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  32. BR18 — Web components

    Prerequisites: BR3 (acceptance unverified)

    Contract: bsd_attach

    Acceptance: Shadow roots, the custom element registry, template instantiation -- graded by the BR1 harness on the custom-elements + shadow-dom WPT directories (scoped registries is an Interop-2026 area); done when a componentized fixture renders its composed tree.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  33. BR19 — WebSocket wire

    Prerequisites: BR3 (acceptance unverified)

    Contract: bws_connect

    Acceptance: Expose the EXISTING 24-file sovereign WS stack (the rooms/SFU daemons already run on it) as the page WebSocket object -- the cheapest wire on the breadth list; done when a page script echoes through our own room daemon end-to-end.

    Authored effort: 0.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  34. BR20 — Product surfaces

    Prerequisites: BR5 (acceptance unverified)

    Contract: bpd_download

    Acceptance: Downloads manager, form autofill, credential store and per-site permissions over the profile store; print/save-to-PDF (bpr_to_pdf) from the layout tree; done when the synthetic-user driver exercises a download + an autofill + a print of the wikipedia fixture.

    Authored effort: 3. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  35. BR21 — Byte-preserving WPT corpus ingest

    Prerequisites: BR1 (acceptance unverified)

    Contract: wsp_ingest_dir

    Acceptance: The yardstick is only as reproducible as the corpus it reads, and on 2026-08-26 the corpus behind the published 08-18 numbers was found banked NOWHERE: bench/wpt held only the 370-byte history TSV, and an exhaustive WSL plus laptop search returned nothing. Two directories were re-acquired BY HAND that day and both hashed IDENTICAL to their 08-18 rows, so the numbers are sound -- but the method that recovered them cannot finish the job, and it fails in two DIFFERENT ways that a single organ closes. FIDELITY: the hand path re-emits each body through a text tool argument, which cannot carry UTF-16LE or a BOM, and html/syntax/parsing-html-fragments is the ENCODING-DETECTION suite (the-input-byte-stream-003.html is UTF-16LE with a BOM), so transcription would corrupt exactly the bytes under test. SCALE: dom/nodes is 178 files at two round-trips each, and a partial dom/nodes would be a SAMPLE, which may never be published as a population fact. Done when one call takes a WPT directory path plus a pinned commit sha and lands every file of that directory as RAW BYTES with no text layer anywhere in the path, verifies each file against both the size and the git blob sha GitHub declares for it, writes a manifest carrying the pin, and REFUSES to report the directory complete if any single file failed -- proven by re-ingesting dom_lists and dom_collections and reproducing corpus_sha16 54e90b086e0c6530 and 1819a1dcd3030f03 exactly, then ingesting html_syntax_fragments and dom_nodes and reproducing the 08-18 rows for both. Ships as a lib plus an in-process gate per estate law, so the ingest logic is mutation-provable rather than hidden behind a fork. LANDED 2026-08-26 as three files: nx_wpt_acquire_lib (the pure half -- manifest parse, dual verification, raw write, read-back compare, completeness conjunction, manifest and marker emit), nx_wpt_ingest (the acquisition half, carrying wsp_ingest_dir), and nx_wpt_ingest_gate (49 of 49 teeth GREEN, mutation-proven killed=1 not_reached=0 mutant_live=0, admitted to the standing gate roster). ALL FOUR done-rule bars met: dom/lists and dom/collections re-ingested and reproduced corpus_sha16 54e90b086e0c6530 and 1819a1dcd3030f03 exactly, and html/syntax/parsing-html-fragments and dom/nodes -- neither of which had ever been acquired -- came in COMPLETE at 13 of 13 and 178 of 178 and reproduced the 08-18 corpus hashes a075ffa0af05ccd7 and d49aee870a338154 exactly, including the-input-byte-stream-003.html, UTF-16LE with a BOM and a NUL as its fourth byte, landed with its BOM and its 2,632 bytes intact. The first mutation run is worth recording because it found a real defect rather than a gap in the gate: three of its four comparison sites came back NOT-REACHED, and all three were inside a SECOND decimal renderer and a SECOND length scan that the first draft had written beside the ones already in the file. The compiler eliminated the duplicates because nothing offline could call them, so a mutation there could not change the binary. Collapsing them onto the single renderer removed the duplicate ruler AND the blind spot in one edit, and the re-run reads not_reached=0.

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  36. BR39 — Every named entity decodes and every unmapped codepoint is visible

    Prerequisites: BR30 (acceptance unverified)

    Contract: ent_html5_table

    Acceptance: The decoder table carried 112 hand-grown names and rendered &Oslash; literally (probe 2026-09-02); it now carries the HTML 4.01 set of 253, generated per name length so no function exceeds the compiler's block pool. Remaining: the HTML5 superset of 2,231 names generated from the spec list into per-length tables, and an unmapped codepoint under a face draws the face's notdef box (what Chrome shows without a fallback font) instead of vanishing. Gate proves every HTML5 name decodes to its codepoint on a fixture, that an unknown name passes through literally, and that a CJK run under a face paints notdef cells with the advance of gid 0

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  37. BR22 — Native world-frame emission

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: we_world_frame_emit

    Acceptance: LANDED 2026-08-27, GATE OWED -- the row states which half is proven. Operator directive: i want to emit, i dont want webgl and other 3d parties receiving our work and capabilities. SHIPPED runtime/nx_world_emit.nx (5,601 B src, elf df3477 19,616 B, PROMOTED + REGISTERED the same hour): COMPOSITION not a twin -- rendering stays in nx_world_snap.elf (the promoted capture instrument, the same nx_wasm_craft engine source the browser wasm is compiled from; it was REGISTERED-DARK until today and its first MCP invocation was this lane's probe), and the new organ is the missing SHIP LANE for frames: render, stage byte+PNG-signature assert, atomic renameat, read-back of what LANDED. First live emission receipts: WE-RENDER rc=0 stage_bytes=108223 png_ok=1; WE-DEPLOY rc=0; WE-READBACK bytes=108223 png_ok=1; served /world/emit_craft.png status=200 bytes=108223, nx_page_verify VERDICT=GREEN (PNG deep-decode). The browser.matrix watch row flips on the regen that publishes this text -- the flip is the receipt, NOT the proof. NOT DONE UNTIL: an in-process gate proves the lane (render-assert, deploy, read-back conjunction, mutation-proven, roster-admitted) and a beat row keeps the frame fresh -- a frame emitted once is a fossil with a URL. done when the watch cell reads the symbol, the served bytes verify, and the gate is GREEN + bite-proven.

    Authored effort: 0.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  38. BR23 — Browser-native launch (nishi-game marker)

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: br_launch_game

    Acceptance: MEASURED DONE 2026-08-27 for the laptop vantage -- and the wire PRE-EXISTED this migration: the census's job was to find it BUILT-UNADOPTED, not to build it. The whole chain was already in source: nx_game_page_emit stamps the nishi-game meta marker into every emitted world page (CE_NATIVE in nx_craft_emit names nx_desktop_craft); nx_browser br_game_organ extracts it FAIL-CLOSED (the page-controlled value becomes an exec path, so nx_[a-z0-9_]{1,60} or the whole marker REJECTS -- nx_browser_game_marker_gate, 7 teeth incl. traversal, uppercase, unterminated hostile pages); br_launch_game execs the native client. PROVEN LIVE TODAY: chain sentinel knowledge/status/nxgame_chain + local nx_browser.sov.elf against the LIVE https URL /world/craft -- fetched over the sovereign TLS stack, 82 boxes laid out, marker detected on the served bytes, native client exec'd: nx_desktop_craft selftest 7/7 GREEN on a REAL X server (S4 blit round-trip 0 of 432000 bytes mismatched, S5/S6 synthetic key+mouse walk camera and yaw exactly, S7 save/load persistence), NATIVE-CHAIN organ=nx_desktop_craft rc=0. nx_desktop_craft itself sat BUILT-UNPROMOTED+STAGED and is now PROMOTED (a643136b, 210,270 B, prev banked) + REGISTERED; source hash e75c16f5 is IDENTICAL laptop and NAS, so the local 7/7 proves the promoted source. RESIDUALS, named: the Windows PE daily driver carries the same marker source but its PE lane was not re-proven today; the NAS binary cannot run the X selftest (no X server on the NAS -- the bench verb is its headless proof surface); and WSLg's Xwayland socket was found dead after long uptime (empty /tmp/.X11-unix reading as X11-setup-failed rc=2) and restored by a WSL bounce -- an absent socket is indistinguishable from a broken client until you list the directory.

    Authored effort: 0.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  39. BR24 — Motion: emitted frame sequences

    Prerequisites: BR22 (acceptance unverified)

    Contract: we_frame_seq_emit

    Acceptance: OPEN, pre-declared. The motion stack exists as LIBS and the census measured its adoption rather than assuming it: nx_video_codec.nx (NishiVideo v1: I-frame codec, entropy, perceptual quant, deblock, reference, MV search) has exactly ONE importer (nx_video_codec_v1_adapter); nx_room_stream.nx (the sovereign no-WebSocket media down-channel) has ONE (nx_vroom_daemon, live on :8446); nx_room_relay.nx has 10. A codec with one importer is a capability the frequency board prices at zero -- the adoption metric for this rung is IMPORTER COUNT RISING, not registration. done when a frame SEQUENCE of the generated world is emitted server-side (nx_world_emit grows we_frame_seq_emit) and delivered as plain media through a sovereign wire (the nx_room_stream down-channel or an emitted NishiVideo/YUV artifact with a published decode), consumable by the native browser AND the last-mile browsers with zero client-side capability, proven by served bytes plus a gate on the sequence lane.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  40. BR25 — Cross-engine last mile on emitted pages

    Prerequisites: BR22 (acceptance unverified)

    Contract: bx_engine_verify

    Acceptance: OPEN -- the lane-D watch contract bx_engine_verify names it: verify the emitted-output pages (plain media plus minimal HTML, zero capability JS) render on Nishi native, Chrome, Waterfox and Edge. done when bx_engine_verify runs the emitted /world frame surface across the engine set with a published per-engine verdict row (the top-20-census pattern applied to OUR OWN emitted pages), and the only licensed difference is font rasterization.

    Authored effort: 1.5. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  41. BR40 — The Nishi browser opens /world/beach as the sovereign door: same world bytes, no third-party gatekeeper

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: br_world_door

    Acceptance: OPERATOR 2026-09-03 (gpu and gameengine goal rows): third-party browsers are the final mile and this browser is where the stack is sovereign. MEASURED the same day: the served beach is 630629 B of which the hand-written JS shell is the interop half gameengine GE22 and GE38 ratchet to zero, the engine is a wasm module our compiler emitted, and the frame is drawn by WebGL2 today with WebGPU levered (gpu GP3 ladder) and cross-origin isolation paid but unconsumed (lang LN33). Done when this browser opens the world URL, fetches the content-hashed module and recipe planes (performance PF1, gameengine GE46), instantiates the module in the sovereign wasm VM (the nx_wasm_vm_verify twin), presents through the native raster door the GE42 kernel names with the HUD reading door nishi-native, reaches first frame inside the GE15 budget, and the frame is bit-identical to nx_world_snap at the same seed (the GE27 tooth) -- the page JS shell is bypassed, never re-implemented; a world that still needs the JS shell to draw reads REFUSED by name with the un-drained function named

    Authored effort: 3. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  42. BR41 — Every performance bar carries its primary source and date, and a beat flags DRIFTED when the vendor page moves

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: up_metric_prov

    Acceptance: DONE-RULE PRE-DECLARED 2026-09-04. A bar row carries the vendor URL and its last-updated date [@webvitals26]; publishing a bar with only a secondary witness is REFUSED; a beat re-reads the primary and a planted date change must flag DRIFTED.

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  43. BR42 — Every published benchmark score carries suite, version, version date and run date, or is labelled UNCONTROLLED

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: bb_version_ledger

    Acceptance: DONE-RULE PRE-DECLARED 2026-09-04. Four fields on every score [@browserbench-ann] [@jetstream3]; a planted score with an unknown suite version must render UNCONTROLLED, never bare.

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  44. BR43 — Engine coverage and platform coverage are two fields and the resolver refuses to collapse them

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: bcd_engine_platform

    Acceptance: DONE-RULE PRE-DECLARED 2026-09-04. The resolver emits engine and platform coverage separately [@webgpu-status26]; a caller asking for one boolean is refused by name. Bite: WebGPU must read engine=all, platform=partial.

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  45. BR44 — Every rendering optimization is reported as a throughput and energy pair over the same run

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: ep_pair_receipt

    Acceptance: DONE-RULE PRE-DECLARED 2026-09-04. The receipt carries both deltas [@servo-jul26]; a throughput number without its energy twin is refused; a planted run that raises frame rate while raising joules per frame must read as a regression.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  46. BR45 — The interop score is the intersection, with per-implementation rates beside it and an investigation class

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: wpt_interop_intersect

    Acceptance: DONE-RULE PRE-DECLARED 2026-09-04. Score = tests passing in every compared implementation [@interop2026-webkit]; per-implementation rates published; an area with no valid rate carries the investigation class rather than a number. Bite: a planted area with one failing implementation must lower the intersection and not the others' rates.

    Authored effort: 2. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  47. BR46 — Every conformance figure is a numerator, a denominator and a date, never a bare percentage

    Prerequisites: None declared; this does not establish execution eligibility.

    Contract: js_conf_triple

    Acceptance: DONE-RULE PRE-DECLARED 2026-09-04. Three fields with the denominator from a versioned import [@ladybird-apr26]; a planted shrinking denominator must be visible in the triple where the percentage alone would hide it.

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  48. BR47 — The verifier fetches what the page declares it will fetch

    Prerequisites: BR1 (acceptance unverified)

    Contract: pr_declared_hit

    Acceptance: nx_pageref_lib gains the declared-asset vocabulary (a meta row named nishi-<kind> with a content path is a promise the page's script will fetch that path), nx_page_verify follows it like an img src, counts it on its summary line as declared-assets and proves a declared NXA by its NXANIM01 magic, and .nxa joins the must-not-answer-HTML class; done-rule: nx_pageref_gate carries the meta-declared hit, a description meta and a non-meta content attribute as negative controls and the .nxa extension class, and nx_page_verify on /world/rigview reads checked=2 with the rig fetched and MAGIC-OK, so a GREEN on a 3D page means the character was seen

    Authored effort: 1. Executor kind: Organ. Responsible, accountable and verifier not established. Inspect retained worklog.

  49. BR48 — The verifier proves a declared asset of any size by its head

    Prerequisites: BR47 (acceptance unverified)

    Contract: ff_fetch_head

    Acceptance: nx_https_fetch_follow.nx gains a bounded-prefix entry (send GET, read the headers and at most N body bytes, close) that returns the prefix and its status instead of failing on overflow, nx_page_verify's head-range retry composes it, and nx_page_verify https://nishifamily.com/world/rigview reads verified-by-head=1 unobservable=0 VERDICT=GREEN against the 10,758,232 B rig -- with a neg-control asset whose head carries no known magic still reading UNOBSERVABLE

    Authored effort: 1.5. Executor kind: seat. Responsible, accountable and verifier not established. Inspect retained worklog.

  50. BR49 — The static front door honours Range on every static asset

    Prerequisites: BR47 (acceptance unverified)

    Contract: sites_range_206

    Acceptance: the edge that serves sites/nishifamily/world/ref9d.nxa answers Range: bytes=0-65535 with 206 Partial Content + Content-Range + Accept-Ranges by composing the range arithmetic nx_media_server already ships (its Accept-Ranges and Content-Range emission), proven by nx_audio_serve_gate's shape (a 4-11 range returns exactly those bytes) run against a static path, and nx_page_verify's head-range retry then reads head-range status=206 on the rig -- a daemon deploy through the health-checked /api/deploy, an operator decision because every request crosses this door

    Authored effort: 2. Executor kind: traffic-owner. Responsible, accountable and verifier not established. Inspect retained worklog.

Learning and practice paths

No structured learning path is declared for this plan. Existing research, roadmap and worklog remain available above.

Capability comparisons

Compare the field, search individual capabilities and open their source and adoption evidence. Documented presence does not establish comparative quality.

Position map — centrality and distinctiveness

The four-quadrant map the field uses for brand strategy (Dawar and Bagga, HBR June 2015), re-derived from this matrix on every publish. Centrality is the share of the category's feature mass a player covers, each feature weighted by how many hold it; distinctiveness is the average lead over each rival on the rows the player holds; breadth is the depth-weighted share of the whole matrix (the bubble); depth is how deeply the rows held are held; momentum is the day-over-day move off the spine (green rising, red falling, grey until day two); the dashed path runs first day → previous day → today. Dividers are the category means. Axes are fitted to the field of play, so read the tick numerals, not the frame. Rival marks are documented presence, so a rival's position reads the record, never its quality. The picture grades its own readability below; the table beside it is the same data for a screen reader or a second method.

Views. 2D cut: centrality, distinctiveness · 3D cube: centrality, distinctiveness, breadth · axes registered: centrality, distinctiveness, breadth, depth, momentum · a board picks its own in knowledge/compare/browser.cdmap (cut|x|y, cube|x|y|z); absent = the HBR defaults
Position map, two-dimensional cutOne bubble per player. Bubble area is breadth, the ring colour is momentum, the dashed lines are the category means, and both axes are fitted to the field of play with their tick numerals shown. Every value is repeated in the table that follows. 500 600 700 800 900 1000 50 75 100 125 150 175 200 225 250 centrality (permil, fitted 500–1000) distinctiveness (permil, fitted 50–250) mean 891 mean 167 Unconventional Aspirational Peripheral Mainstream Nishi, centrality 551, distinctiveness 197, breadth 381, depth 728, momentum 0 Chrome, centrality 983, distinctiveness 205, breadth 844, depth 926, momentum 0 Firefox, centrality 984, distinctiveness 189, breadth 827, depth 908, momentum 0 Safari, centrality 956, distinctiveness 184, breadth 803, depth 922, momentum 0 Edge, centrality 978, distinctiveness 207, breadth 841, depth 923, momentum 0 Ladybird, centrality 881, distinctiveness 92, breadth 602, depth 769, momentum 0 Servo, centrality 905, distinctiveness 98, breadth 610, depth 756, momentum 0 Nishi Chrome Firefox Safari Edge Ladybird Servo

bubble area = breadth · ring = momentum (green rising, red falling, grey until day two) · dashed = category means · axes fitted to the field of play: centrality 500–1000, distinctiveness 50–250 of 0–1000 permil (the full range put every player in one corner)
readability of the 2D cut, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 5 (a fact of the data: two players that close are that close) · data spread 719 permil of the plot · quadrant words unseated 0
text contrast, measured with wcag2-ratio (floors from contrast.conf), light theme: labels 16.24 (floor 4.50) · notes 16.24 (floor 4.50) · quadrant words 5.89 (floor 4.50) · tick numerals 5.89 (floor 4.50) · axis titles 5.59 (floor 4.50) · dark theme: labels 13.78 (floor 4.50) · quadrant words 5.55 (floor 4.50) · axis titles 5.97 (floor 4.50) · dark classes under their floor 0 (one figure serves both themes: a dark shortfall is a token to fix, never a class to hide) · classes refused under their floor 0 (a refused class is not drawn; the scale classes are measured, never hidden) · export: SVG PNG (receipt, rendered by the estate's own rasteriser from this page)
Position map, three-dimensional cubeThe same players in an isometric cube. Each axis is fitted to its own field of play and carries numerals on the floor grid and the vertical axis; each bubble drops a dotted line to its floor shadow so height reads as height. Values are in the table that follows. 500 600 700 800 900 1000 50 75 100 125 150 175 200 225 250 300 400 500 600 700 800 900 centrality distinctiveness breadth Nishi: centrality 551, distinctiveness 197, breadth 381 Ladybird: centrality 881, distinctiveness 92, breadth 602 Servo: centrality 905, distinctiveness 98, breadth 610 Safari: centrality 956, distinctiveness 184, breadth 803 Firefox: centrality 984, distinctiveness 189, breadth 827 Chrome: centrality 983, distinctiveness 205, breadth 844 Edge: centrality 978, distinctiveness 207, breadth 841 Nishi Chrome Firefox Safari Edge Ladybird Servo
axes fitted: centrality 500–1000 · distinctiveness 50–250 · breadth 300–900 permil · farther bubbles are painted first, nearer ones over them · the floor shadow is each bubble's (x, y) at height 0
readability of the 3D cube, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 7 (a fact of the data: two players that close are that close) · data spread 383 permil of the plot
Position map, small multiplesEvery pair of registered axes as one small cut. Each panel fits both axes to the field of play, the dashed lines are the category means, bubble area is breadth and the ring colour is momentum; the legend below names the colours. 500 1000 50 250 distinctiveness vs centrality Nishi: centrality 551, distinctiveness 197 Chrome: centrality 983, distinctiveness 205 Firefox: centrality 984, distinctiveness 189 Safari: centrality 956, distinctiveness 184 Edge: centrality 978, distinctiveness 207 Ladybird: centrality 881, distinctiveness 92 Servo: centrality 905, distinctiveness 98 500 1000 300 900 breadth vs centrality Nishi: centrality 551, breadth 381 Chrome: centrality 983, breadth 844 Firefox: centrality 984, breadth 827 Safari: centrality 956, breadth 803 Edge: centrality 978, breadth 841 Ladybird: centrality 881, breadth 602 Servo: centrality 905, breadth 610 500 1000 700 950 depth vs centrality Nishi: centrality 551, depth 728 Chrome: centrality 983, depth 926 Firefox: centrality 984, depth 908 Safari: centrality 956, depth 922 Edge: centrality 978, depth 923 Ladybird: centrality 881, depth 769 Servo: centrality 905, depth 756 500 1000 480 520 momentum vs centrality Nishi: centrality 551, momentum 500 Chrome: centrality 983, momentum 500 Firefox: centrality 984, momentum 500 Safari: centrality 956, momentum 500 Edge: centrality 978, momentum 500 Ladybird: centrality 881, momentum 500 Servo: centrality 905, momentum 500 50 250 300 900 breadth vs distinctiveness Nishi: distinctiveness 197, breadth 381 Chrome: distinctiveness 205, breadth 844 Firefox: distinctiveness 189, breadth 827 Safari: distinctiveness 184, breadth 803 Edge: distinctiveness 207, breadth 841 Ladybird: distinctiveness 92, breadth 602 Servo: distinctiveness 98, breadth 610 50 250 700 950 depth vs distinctiveness Nishi: distinctiveness 197, depth 728 Chrome: distinctiveness 205, depth 926 Firefox: distinctiveness 189, depth 908 Safari: distinctiveness 184, depth 922 Edge: distinctiveness 207, depth 923 Ladybird: distinctiveness 92, depth 769 Servo: distinctiveness 98, depth 756 50 250 480 520 momentum vs distinctiveness Nishi: distinctiveness 197, momentum 500 Chrome: distinctiveness 205, momentum 500 Firefox: distinctiveness 189, momentum 500 Safari: distinctiveness 184, momentum 500 Edge: distinctiveness 207, momentum 500 Ladybird: distinctiveness 92, momentum 500 Servo: distinctiveness 98, momentum 500 300 900 700 950 depth vs breadth Nishi: breadth 381, depth 728 Chrome: breadth 844, depth 926 Firefox: breadth 827, depth 908 Safari: breadth 803, depth 922 Edge: breadth 841, depth 923 Ladybird: breadth 602, depth 769 Servo: breadth 610, depth 756 300 900 480 520 momentum vs breadth Nishi: breadth 381, momentum 500 Chrome: breadth 844, momentum 500 Firefox: breadth 827, momentum 500 Safari: breadth 803, momentum 500 Edge: breadth 841, momentum 500 Ladybird: breadth 602, momentum 500 Servo: breadth 610, momentum 500 700 950 480 520 momentum vs depth Nishi: depth 728, momentum 500 Chrome: depth 926, momentum 500 Firefox: depth 908, momentum 500 Safari: depth 922, momentum 500 Edge: depth 923, momentum 500 Ladybird: depth 769, momentum 500 Servo: depth 756, momentum 500
Nishi Chrome Firefox Safari Edge Ladybird Servo
10 panels over 5 registered axes, every pair once (the lower axis on x, the higher on y) · each panel fitted to its own field of play, first and last tick numerals shown · no labels in a small cut, the legend names the colours; the grade below reports the mark terms only (MM summed over the panels, spread averaged)
readability of the small multiples, self-graded by the layout ruler: label overlaps 0 · labels over marks 0 · off-canvas 0 · unresolved labels 0 · mark overlaps 71 (a fact of the data: two players that close are that close) · data spread 600 permil of the plot
PlayerQuadrantcentralitydistinctivenessbreadthdepthmomentumRows heldDays on spineFirst seen
NishiUnconventional5511973817280 since 2026-09-156522026-09-15
ChromeAspirational9832058449260 since 2026-09-1511322026-09-15
FirefoxAspirational9841898279080 since 2026-09-1511322026-09-15
SafariAspirational9561848039220 since 2026-09-1510822026-09-15
EdgeAspirational9782078419230 since 2026-09-1511322026-09-15
LadybirdPeripheral881926027690 since 2026-09-159722026-09-15
ServoMainstream905986107560 since 2026-09-1510022026-09-15
DayMatrix rows reviewedPlayers recorded
2026-09-151247
2026-09-161247

players 7|matrix rows 124|feature mass 709|centrality mean 891|distinctiveness mean 167|axes 5|spine days 2 (shown 2)|rows written today 0|readability defects 2D 0 cube 0|spine knowledge/status/cdmap/browser.spine

How this is scored. Every Nishi mark is measured: the generator reads the real organ source on disk and requires the implementing symbol to exist (no self-grading). A watching tag names the organ and symbol contracted to close a gap — the mark flips itself on the next compare beat when that workstream ships, and the comparewatch- plane row flips with it. A dark tag means the organ file EXISTS but does not declare the contracted symbol: something shipped there under another name, and until the contract is repointed to the real entry point (the plan rung and this row) or the function is renamed, that capability is invisible to this board — a build lost to darkness, named so it is not. The flip is necessary, not sufficient: it proves the symbol exists, never that the capability is good. The bar is the rung's pre-declared done-rule, proven by its gate — a symbol shipped without the behaviour behind it is a defect, and the flip is exactly what makes that defect visible instead of quiet. Competitor marks record documented capability presence — presence, not depth or scale. Adoption is measured too: every measured row carries where its organ stands on the estate's ladder (source → built → promoted → registered → invoked; libraries by importer reach minus validation importers; gates by the execution surfaces that run them). A row is fully adopted only at the top of its ladder; anything short is tagged partial with the exact remedy, so a build nobody promoted can no longer read as shipped. Census stamps: importers asof 1789497476, gate census asof 1789498715 (unix seconds; -1 = census absent).

Capability matrix — measured against source

leads / measured exceed present partial absent · click any capability for its evidence

CapabilityNishiChromeFirefoxSafariEdgeLadybirdServo
Headless full-cascade layout and PNG screenshot with no X11Measured: br_layout exists in runtime/_hdl_build/nx_browser.nx, verified at emit. The windowed browser is an X11/WSLg app and cannot run on a headless NAS, so a `shot` verb renders a LOCAL FILE through the FULL pipeline and returns before _url.txt, the CA bundle and X11 are ever touched: UA defaults plus author style plus @media filtered AT THE REAL VIEWPORT WIDTH, into a 16384-box tree, cascaded, block-laid-out, painted and written as PNG. MEASURED 2026-08-26: /compare/librarian boxes=2018 computed_decls=6512 page_h=25927px and /compare/browser boxes=3926 computed_decls=16921 page_h=28108px at vw=1000. It reports the LAYOUT NUMBERS rather than a pass bit, because a boolean cannot tell you a page rendered to 40 boxes where it used to render to 400, and it REFUSES on zero boxes or zero height rather than writing a clean-looking blank PNG. Every engine here ships headless screenshots so this is PARITY, not an exceed rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run.
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run
Pros Nishi has it, measured on diskCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run
EVERY published board rendered, full population not a sampleMeasured: pr_render exists in runtime/nx_pagerender_lib.nx, verified at emit. MEASURED 2026-08-26 over the estate's own SSOT (regen.list), one shared render ruler for both the single-page CLI and the fleet sweep so they cannot disagree about what rendered means: domains_listed=84 passed=84 skipped=0 failed=0 sum=84 partition=RECONCILES, rendered_html_bytes=6431948 extracted_text_bytes=3019622 worst_lit_subpixels=534 against a NON-BLANK floor of 16. The WORST case is published, never the mean, because a mean hides the one board that nearly went blank. SKIP and FAIL are counted apart on purpose: not-published-yet and renderer-could-not-draw-it take opposite remedies and one counter cannot say which. Rendering is table stakes for every engine here so this is PARITY; what is unusual is running it over the whole published surface and reconciling the partition rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=1 nonval=1 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Headless render of our OWN published pages, argv-drivenMeasured: ro_contains exists in runtime/nx_browser_render_own_test.nx, verified at emit. Renders from disk with no network: HTML into nx_html_to_text, painted through the 5x7 bitmap font into an RGBA framebuffer, with a NON-BLANK subpixel assertion and the ASCII raster written out as VISIBLE proof rather than a boolean. MEASURED 2026-08-26 against the live /compare/librarian page: html=74844B text=32135B painted_chars=76 lit_subpixels=754 of 61440 raster=61568B, glyphs legible in the raster. It previously HARDCODED all three inputs (fixture path, expected marker, raster output) so it could only ever prove the pipeline on ONE document, the homepage; now any page we publish is a one-line regression check. Headless rendering is table stakes for every engine here, so this is PARITY and is marked as such, not an exceed rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Nishi has it, measured on diskCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Runs on NishiOS -- sovereign OS reachMeasured exceed: nb_boot_image in runtime/_hdl_build/nx_nishios_browser.nx, verified at emit. No incumbent and neither independent engine can target NishiOS; the Nishi browser fetched the REAL internet there (13/13 gate, nishios_net_wire.bmp). Ladybird alpha targets Linux+macOS only; Servo targets Linux/macOS/Windows/Android/OpenHarmony. Adoption: BUILT-UNPROMOTED — PARTIAL: compiled, never promoted to the serving root: /api/promote it.
not adopted: compiled, never promoted to the serving root: /api/promote it
Pros Nishi leads, a measured exceed; ahead of Chrome, Firefox, Safari, Edge, Ladybird, ServoCons not adopted yet: compiled, never promoted to the serving root: /api/promote it
Own TLS 1.3 stack -- no BoringSSL, NSS, OpenSSL or rustlsMeasured exceed: tls13_client_hello_emit in runtime/nx_tls13_hello.nx, verified at emit. incumbents ship third-party crypto; Ladybird links OpenSSL/curl, Servo links rustls/hyper; ours is own TLS 1.3+1.2 hardware-up (AES-NI/PCLMULQDQ in our own assembler), with handshake-fragment reassembly (Cloudflare/Fastly/Meta class certs) proven live 2026-07-24. Adoption: LIB-WIRED importers=33 nonval=9 — fully adopted (top of its ladder).
Pros Nishi leads, a measured exceed; ahead of Chrome, Firefox, Safari, Edge, Ladybird, Servo; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth)
One render core from the assembler up -- no libc, no OS toolkitMeasured exceed: br_layout in runtime/_hdl_build/nx_browser_render.nx, verified at emit. a single auditable core (br_layout/br_draw_fb) on Linux+Windows+NishiOS with no libc/Qt/AppKit/winit underneath; every rival, including Ladybird (Qt/AppKit) and Servo (winit/wgpu), rides an OS toolkit. Adoption: LIB-WIRED importers=32 nonval=17 — fully adopted (top of its ladder).
Pros Nishi leads, a measured exceed; ahead of Chrome, Firefox, Safari, Edge, Ladybird, Servo; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth)
No V8/JIT RCE attack surface -- by constructionMeasured exceed: js_eval in runtime/nx_js_eval.nx, verified at emit. tree-walking interpreter, no JIT pages, so the recurring type-confusion/RCE CVE class is ABSENT by construction (Chrome 140 alone patched a high-severity V8 flaw). Ladybird's LibJS is likewise a no-JIT interpreter (coded Yes); Servo embeds SpiderMonkey with its JIT. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: PROMOTED-UNREGISTERED — PARTIAL: a real binary nobody can call over MCP: /api/tools/register it; no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: a real binary nobody can call over MCP: /api/tools/register it; no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Nishi leads, a measured exceed; ahead of Chrome, Firefox, Safari, Edge, Ladybird, ServoCons not adopted yet: a real binary nobody can call over MCP: /api/tools/register it; no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Attack-vector neutralized by constructionMeasured exceed: wh_neutralize in runtime/_hdl_build/nx_web_harden.nx, verified at emit. 90s-neutral hardening defangs forced-download/popunder/nav-to-binary; Firefox and Safari offer privacy options but neither neutralizes these vectors by construction; the independent engines have no such lane. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder).
Pros Nishi leads, a measured exceed; ahead of Chrome, Firefox, Safari, Edge, Ladybird, Servo; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth)
Auditable native binary -- 757KB PE + 1.2MB fetch engineMeasured exceed: gi_rva in runtime/nx_pe_compile_win_gui.nx, verified at emit. nishi.exe 757,248 B + nishi_fetch.exe 1,198,080 B (measured 2026-08-18), every byte in-house source, vs 200-400MB installs; Ladybird and Servo are tens of MB with vendored deps. Adoption: BUILT-UNPROMOTED — PARTIAL: compiled, never promoted to the serving root: /api/promote it.
not adopted: compiled, never promoted to the serving root: /api/promote it
Pros Nishi leads, a measured exceed; ahead of Chrome, Firefox, Safari, Edge, Ladybird, ServoCons not adopted yet: compiled, never promoted to the serving root: /api/promote it
Clean-browse live archive and preservationMeasured exceed: ad_preserve_one in runtime/_hdl_build/nx_archive_daemon.nx, verified at emit. built-in WARC archive + clean reader view + KVS de-obfuscation; no rival bundles sovereign preservation. Adoption: LIVE-DAEMON — fully adopted (top of its ladder).
Pros Nishi leads, a measured exceed; ahead of Chrome, Firefox, Safari, Edge, Ladybird, Servo; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth)
Never-brick clean-view sandbox -- by constructionMeasured exceed: sg_new in runtime/_hdl_build/nx_surrogate.nx, verified at emit. reaches no persistent hardware state (Rule 26); surrogate-and-satisfy clean view. Adoption: LIB-WIRED importers=11 nonval=6 — fully adopted (top of its ladder).
Pros Nishi leads, a measured exceed; ahead of Chrome, Firefox, Safari, Edge, Ladybird, Servo; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth)
Document omnitool -- opens .docx/.md/.csv natively in the pageMeasured exceed: br_doc_conv in runtime/_hdl_build/nx_browser.nx, verified at emit. registry-dispatched conversion renders office/markdown/csv INLINE when navigated to (nx_browser: doc omnitool rendered); incumbents open PDF natively and download the rest (coded Part.); the independent engines open neither. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run.
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run
Pros Nishi leads, a measured exceed; ahead of Chrome, Firefox, Safari, Edge, Ladybird, ServoCons not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run
Publishes its own parity census against rivals -- measured, not assertedMeasured exceed: sd_bands in runtime/_hdl_build/nx_struct_diff.nx, verified at emit. bench/top20 (20 real sites vs Chrome/Edge oracles: OCR reading recall + coarse/tight visual grids + text-line-band struct_diff with honest controls: self 1000, cross-site 769) and a determinism tooth (same saved bytes rendered twice = bit-identical PNG). Rivals publish standards conformance (Interop / wpt.fyi) not rival parity -- coded Part. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.
not adopted: source exists, never compiled: /api/build it
Pros Nishi leads, a measured exceed; ahead of Chrome, Firefox, Safari, Edge, Ladybird, ServoCons not adopted yet: source exists, never compiled: /api/build it
Standards yardstick run in-house -- WPT through the sovereign harness, published per directoryMeasured: wpt_run exists in runtime/nx_wpt_runner.nx, verified at emit. Every rival runs web-platform-tests in CI and publishes to wpt.fyi or its own dashboard [wptfyi-runs26]; ours runs the banked, pinned corpus with runtime controls and a content-addressed time spine (the WPT rows below). PARITY of method; the counts are the distance. Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Nishi has it, measured on diskCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pixel-exact reftests through our own paintMeasured: rt_render exists in runtime/nx_wpt_reftest.nx, verified at emit. Test and reference painted through the sovereign render core at a fixed 800x600 viewport and compared exact-pixel, with self-match and known-mismatch controls; 73 spec reftests pass PIXEL-EXACT (css/CSS2/floats and css-tables, 2026-08-19). Every rival runs reftests the same way (Best). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Nishi has it, measured on diskCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Core Web Vitals -- static predictor present, runtime meter on the sovereign paint timeline is a watch (BR32)Measured: main exists in runtime/_hdl_build/nx_uiq_perf.nx, verified at emit. LCP, INP and CLS are the field's three user-facing metrics [webvitals26]; nx_uiq_perf predicts them STATICALLY from the HTML (blocking css and js, unsized media) and is gate-proven; the runtime half -- LCP and CLS computed from OUR layout and paint passes with no rival present -- is rung BR32 and the row directly below. Incumbents report all three (Best); the independent engines expose the timing APIs (Part). Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Nishi has it, measured on disk; ahead of Ladybird, ServoCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads); not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Web Vitals measured on the sovereign render timeline (BR32)DARK — runtime/_hdl_build/nx_browser_render.nx EXISTS but does not declare br_vitals: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH br_vitals: largest-contentful-paint box and time from the paint pass, layout shift between the two layout passes, INP once BR3 dispatches events [webvitals26] [lighthouse26]; done when the wikipedia fixture reports numbers a repeat run reproduces and a planted layout-shift fixture moves CLS in the same direction the static predictor names.
watching br_vitals
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
The browser lab -- one sovereign run over a URL or saved bytes, every oracle on one time spine (BR31)Open — watching runtime/nx_browser_lab.nx : bl_run, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WATCH bl_run, the WebPageTest-class synthetic lab [webpagetest26]: render_shot, struct_diff against the banked incumbent capture, the census column, vitals, trace, memory and energy composed into ONE command that APPENDS one row to a content-addressed time spine, so any seat, AI or human reads improving or regressing rather than a level. The incumbents rely on external labs for this (Yes); the independent engines have none (No); no rival ships the lab INSIDE the browser it grades, which is the exceed once it lands.
watching bl_run
Pros none measured yetCons behind Chrome, Firefox, Safari, Edge; open contract, nothing on disk yet
Trace, frame budget, memory and energy per page -- the sovereign pieces exist estate-wide, the browser wiring is a watch (BR33)Measured: ep_read exists in runtime/_hdl_build/nx_energy_probe.nx, verified at emit. Perfetto-class tracing puts CPU, memory and power rails on one timeline [perfetto26]; the estate already has nx_trace_emit (spans), nx_frame_budget (per-frame budget from target FPS), nx_resmon and nx_memvel (resident and committed memory, leak velocity) and nx_energy_probe (a HARDWARE-AGNOSTIC joules and watts reader over the platform power supply and energy counters, present here) -- none yet keyed to a page run. Chrome, Firefox and Edge expose energy impact and power profiling (Part); Safari via Instruments; the independent engines none. Adoption: LIB-GATE-ONLY importers=1 — PARTIAL: imported only by validation organs (gates, tests, benches): wire it into a shipping program.
not adopted: imported only by validation organs (gates, tests, benches): wire it into a shipping program
Pros Nishi has it, measured on disk; ahead of Chrome, Firefox, Safari, Edge, Ladybird, ServoCons not adopted yet: imported only by validation organs (gates, tests, benches): wire it into a shipping program
Per-page trace + memory + energy meter wired to the render (BR33)DARK — runtime/_hdl_build/nx_browser_render.nx EXISTS but does not declare br_resmeter: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH br_resmeter: spans over fetch, parse, cascade, layout and paint, the frame budget verdict, resident and committed memory, and joules per page from a real counter or declared MODELLED [perfetto26]; done when the wikipedia fixture prints all four with a declared UNOBSERVABLE for whatever the host cannot supply.
watching br_resmeter
Pros none measured yetCons behind Chrome, Firefox, Edge; open contract, nothing on disk yet
Codec capability matrix -- supported, smooth, power-efficient, measured by running our own decoders (BR34)Open — watching runtime/nx_browser_codecs.nx : bmc_matrix, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WATCH bmc_matrix in the shape of the Media Capabilities API [mediacap26]: every cell earned by DECODING a banked fixture through the sovereign codecs (PNG, JPEG, WEBP-VP8L, VP8, H.264, AV1, Opus, AAC) with frame time and energy per frame from BR33, never declared. The estate's video-quality referee (nx_vqoe_gate) is the quality half. Every incumbent answers decodingInfo (Best); the independent engines partially (Yes).
watching bmc_matrix
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
JS conformance -- a pre-declared test262 slice run through js_eval (BR36)DARK — runtime/nx_js_eval.nx EXISTS but does not declare js_test262: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH js_test262 against the official ECMAScript suite [test262-26]: pass and fail per directory beside Ladybird's published 97.8 percent, appended to the WPT time spine keyed by engine sha. Every rival publishes a test262 number (Best).
watching js_test262
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); open contract, nothing on disk yet
Shaping conformance -- the third-party text-rendering oracle (typography R6, browser BR4)Open — watching runtime/nx_font_shape.nx : fs_shape_tests, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WATCH fs_shape_tests: the unicode-org text-rendering-tests suite [textrendertests26] (shaping and positioning cases with expected output, the oracle HarfBuzz, CoreText and DirectWrite grade against) run through the sovereign shaper with pass and fail per script; one oracle for both boards. Every rival ships a shaper graded against it (Best).
watching fs_shape_tests
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); open contract, nothing on disk yet
Compat ledger emitted in browser-compat-data shape (BR37)Open — watching runtime/nx_browser_compat.nx : bcd_emit, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WATCH bcd_emit: every feature row on this board emitted as one machine-readable support record in the shape of mdn/browser-compat-data [mdnbcd26], support measured by a gate and never hand-graded, so the sovereign column compares feature-for-feature with the incumbents' data. The incumbents' support IS that data (Best).
watching bcd_emit
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); open contract, nothing on disk yet
Accessibility audit pieces -- ARIA-tree snapshot and tree-edit distance present, the composed page audit is a watch (BR38)Measured: at_snap exists in runtime/_hdl_build/nx_uiq_atree_lib.nx, verified at emit. nx_uiq_atree snapshots the ARIA tree and scores structural change by Zhang-Shasha tree edit distance; nx_uiq_contrast and nx_ui_audit are its siblings. The composed Lighthouse-class audit [lighthouse26] is rung BR38; the browser's OWN accessibility tree for screen readers is the separate BR11 row. Incumbents ship axe-class audits in DevTools (Best); the independent engines report a11y in progress (Part). Adoption: LIB-WIRED importers=3 nonval=2 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; ahead of Ladybird, Servo; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads)
Page-quality audit composed from the sovereign auditors (BR38)Open — watching runtime/nx_browser_audit.nx : ba_audit, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WATCH ba_audit: contrast, ARIA tree, the ui audit and the BR32 vitals composed into one scored report with named findings [lighthouse26]; done when the audit on the wikipedia fixture names at least one finding a rival audit also names, and a planted contrast failure is caught.
watching ba_audit
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
Responsiveness benchmarks run in-house -- Speedometer 3, JetStream, MotionMark (BR35)Open — watching runtime/nx_browser_bench.nx : bb_speedometer, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WATCH bb_speedometer: the cross-vendor responsiveness benchmark the four incumbents co-develop [speedometer3] run through the sovereign JS and render lanes with the score on this page; blocked on BR3 by construction, so the absence is a named number, not silence. Every rival publishes a score (Best).
watching bb_speedometer
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); open contract, nothing on disk yet
Shipping-tree Linux build -- the tree that deploys builds and promotes the browser (BR0)Measured: br_comp_border exists in runtime/_hdl_build/nx_browser.nx, verified at emit. BR0 DONE 2026-08-18: the 08-16 COMPILE-FAIL was a compiler defect (a fixed 262,144-token lexer pool feeding an unguarded push_tok silently overran on the estate's largest unit), fixed by derivation + a fail-loud guard through the canaried toolchain lane (equiv net 10/10 + self-host, compiler promoted 5aaf6cd7); nx_browser BUILT (7,127,960 B asm) and nx_browser.elf PROMOTED LIVE (b2ce1f8e, 1,447,483 B), the first promoted Linux browser binary. Row ADDED 2026-08-23 because rung BR0 had NO matrix row, so the ranker read it UNMAPPED and could never count it done. Every rival ships from its own tree by construction (coded Yes). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run.
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run
Pros Nishi has it, measured on diskCons not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run
HTML + CSS static render -- cascade, box, float, inline-block, tableMeasured: nx_layout_block_layout exists in runtime/nx_layout_block.nx, verified at emit. full cascade + box + float + table (Wikipedia 14,760 boxes) with %-height auto, shared px/%/em/rem font-size resolver, max-width + auto-margin centering (CSS 2.1 s10.3.3/10.4); parity of KIND, not depth -- the WPT delta is unmeasured (see the open rows). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=28 nonval=11 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads)
Flexbox -- basis auto, grow, shrinkMeasured: _layout_flex_grow exists in runtime/nx_layout_block.nx, verified at emit. flex-basis:auto = content size (was 0), grow shares sum-of-bases-subtracted free space, minimal shrink resolves explicit-width overflow (killed the x.com login-card sliver 07-28); no wrap/order/align-content yet. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=28 nonval=11 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
CSS table layout -- auto column widths shared down the columnMeasured: _layout_table_cols exists in runtime/nx_layout_block.nx, verified at emit. CSS 2.1 s17.5.2 auto algorithm: column width = max-content across rows, nested-table save/restore; hackernews 471->695 recall on landing; colspan/rowspan still open. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=28 nonval=11 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
HTML5-lite tokenizer + tree builder -- raw-text elements, end-tag mirror stackMeasured: nx_html_consume_raw_text exists in runtime/nx_html_tokenizer.nx, verified at emit. script/style/title raw-text consumption + tag-mirror end-tag matching killed two ancestor-double-pop classes (07-28); NOT the full HTML5 insertion-mode tree builder = the html/ WPT delta named in the plan. UNQUOTED-ATTRIBUTE-VALUE STATE LANDED 2026-08-27 AND IT TURNED A WHOLE PAGE OF LINKS BACK INTO LINKS. Being QUOTE-aware was necessary and NOT sufficient: HTML5 13.2.5 makes '/' the self-closing marker only in the before-attribute-name and after-attribute-value states, while inside an UNQUOTED value it is an ordinary character. danluu.com writes its hrefs unquoted and its URLs end in a slash, so every `<a href=https://danluu.com/perf-opt/>` ended in the byte pair `/>` and tokenized as SELF-CLOSING. A self-closing <a> takes no children, so every article title fell OUTSIDE its own anchor and painted as plain black text -- an entire page of links silently becoming non-links with nothing failing loudly. The tell was that exactly one link worked: `href=#pt`, the only href on that page with no trailing slash. FIX: an `inuv` state entered after '=' (whitespace skipped) when the value does not open with a quote, left only at whitespace or '>'. FOUND BY LOOKING AT THE RENDER -- and the metric actively argued against it. ALSO FIXED THE INSTRUMENT: the local harness's `ink` counted a pixel only when ALL THREE channels were < 160, so link blue (~0,0,238) failed on the blue channel and was INVISIBLE to it. Ink read 32,205 on the BROKEN page and 4,556 on the CORRECT one -- it moved 7x in the wrong direction on a large visible improvement, biased toward precisely the failure being fixed. It now derives the background as the modal pixel of the frame and counts every pixel that differs: no threshold to guess, no channel favoured, and it inverts correctly for dark mode. Honest figures after both fixes: danluu 74,990 px (10.17pc), news.ycombinator 99,937 (13.55pc), wikipedia/Ogre 126,760 (17.19pc). A SEPARATE, EARLIER unquoted-value fix in nx_layout_from_dom's attribute extractor (which stopped the value at '/' and also lacked LF/CR/FF terminators) is LAPTOP-TREE ONLY and correctly so: the NAS twin has no attribute extractor at all, proven by pulling the file rather than assumed. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=39 nonval=20 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Mutable DOM tree + CSS queryMeasured: dt_parse exists in runtime/nx_domtree.nx, verified at emit. materialized mutable DOM with CSS selector query. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=4 nonval=1 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Unquoted attribute values -- HTML5 tokenizer state fidelityMeasured: nx_html_next_token exists in runtime/nx_html_tokenizer.nx, verified at emit. LANDED 2026-08-27, AND IT TURNED A WHOLE PAGE OF LINKS BACK INTO LINKS. Being QUOTE-aware was necessary and NOT sufficient. HTML5 13.2.5 makes '/' the self-closing marker only in the before-attribute-name and after-attribute-value states; inside an UNQUOTED value it is an ordinary character. danluu.com writes hrefs unquoted and its URLs end in a slash, so every <a href=https://danluu.com/perf-opt/> ended in the byte pair /> and tokenized as SELF-CLOSING. A self-closing anchor takes no children, so every article title fell OUTSIDE its own link and painted as plain black text -- an entire page of links silently becoming non-links, with nothing failing loudly. The tell: exactly ONE link worked, href=#pt, the only href on that page with no trailing slash. FIX: an inuv state entered after '=' once whitespace is skipped and the value does not open with a quote, left only at whitespace or '>'. Parity of KIND with every rival here (they all implement the state machine); what is worth recording is that it was found BY LOOKING AT THE RENDER while the metric argued against the fix -- see the ink note on the legibility row. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=39 nonval=20 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
HTTPS live fetch -- TLS 1.3, redirects, cookie jarMeasured: bf_status exists in runtime/_hdl_build/nx_browser_fetch.nx, verified at emit. live TLS 1.3 fetch (~360ms warm vs ~100ms -- no speed exceed claimed); cookie-jar header on redirect-following fetches; HTTP/1.1 only (h2/h3 open below). ENGINE REBUILT 2026-08-26: nishi_fetch.exe had been frozen on 2026-07-29 assembly for a month because its source did not LINK (duplicate _lc, and arena_new/arena_alloc defined in both nx_runtime.nx and runtime.nx) while the pre-08-18 compiler FAILED OPEN on exactly that class, so nothing announced it. Rebuilt 1,054,208 B and now behind a build lane that refuses a linux crash guard in a PE and rolls back unless it actually fetches. MEASURED THE SAME DAY, 5 real sites, no sampling: wikipedia/Ogre 261,285 B, nishifamily.com/compare/browser 149,307 B, rfc-editor.org/rfc/rfc9110.html 1,192,451 B FETCHED; news.ycombinator.com and danluu.com return ZERO with verdict=3 (connect-fail), i.e. 3 of 5 AT THAT HOUR -- NOW 5 OF 5, RE-MEASURED over the same five sites with no sampling: wikipedia/Ogre 261,285 B, nishifamily.com/compare/browser 160,547 B, rfc9110 1,192,451 B, news.ycombinator.com 34,334 B, danluu.com 22,257 B. WIDENED 2026-08-27 to TEN sites, still no sampling: the five above plus lwn.net 28,909 B, github.com 574,560 B, motherfuckingwebsite.com 4,763 B, example.com 559 B all FETCH -- 9 of 10. The tenth, www.gnu.org/software/, reports conjunct=TCP-CONNECT, and the CONTROL RUN FIRST is what makes that honest: this host's own OS cannot reach 209.51.188.116:443 either (Test-NetConnection false, no AAAA record), so gnu.org is unreachable from this vantage entirely and the engine's diagnosis is exactly right. Scored as 9 of 9 REACHABLE, with the unreachable one named rather than folded into a failure count -- the same control discipline that stopped a defect being filed against a working engine earlier the same day. ROOT-CAUSED AND FIXED THE SAME DAY -- AND THE MECHANISM THIS ROW PUBLISHED FIRST WAS WRONG, SO IT IS RETRACTED HERE RATHER THAN QUIETLY RE-COUNTED: it blamed 'OUR resolve/connect path', true only in the sense that the query we SENT was malformed. The chain had collapsed a specific answer FOUR times (12 DNS parse verdicts -> PARSE_FAIL -> DNS_FAIL -> a bare 'connect-fail'), so every layer reported the ABSENCE of a diagnosis and invited the story the reader already believed. Naming each collapse in turn ended at rcode=3 NXDOMAIN from all three failover resolvers -- i.e. every resolver was telling the truth and the NAME WE ASKED FOR genuinely did not exist. Printing the queried bytes showed len=11 for a 10-byte host: 'danluu.com' with a trailing SPACE (lastbyte=32). CAUSE, and it is not in the browser at all: the Windows PE argv tokenizer in nx_pe_compile_win_nishi recorded where argv[1] BEGAN and never NUL-terminated it, so argv[1] was 'the rest of the command line'. cmd.exe leaves a trailing space after stripping redirections, and nx_url_parse correctly ends the host scan at '/' -- so the stray byte was INVISIBLE for any URL with a path and swallowed into the hostname for any URL without one. That is exactly why a bare host failed while the same host with a trailing '/' worked, and why a CORRECT URL parser masked the defect for months. The same tokenizer also glued a SECOND argument onto the first, so no Windows PE organ could ever receive two arguments. FIX: a quote-aware tokenizer whose argv array and string scratch are DERIVED from the command line's own length at runtime -- slots n/2+2 and scratch n+1 are proofs (a token needs >=1 separator; sum(len+1) <= n+1), not estimates, so there is no cap to guess and none that can overflow; a static array sized for the 32,767-char Windows limit would have cost ~160 KB inside a 4 KB thunk slack. Alloc failure degrades to a zeroed static array rather than faulting. RE-MEASURED, same 5 sites, no sampling: wikipedia 261,285 B, compare/browser 160,547 B, rfc9110 1,192,451 B, news.ycombinator.com 34,334 B, danluu.com 22,257 B = 5 of 5. Both halves are now BUILD-LANE TEETH (a bare-host fetch and a two-argument fetch, each rolling the binary back on failure), because the existing smoke URL carried a path and so could never have expressed this bug -- a smoke test whose input cannot express the defect is not a test. The tooth was bite-proven with NO rebuild by reconstructing the pre-fix argv through the new quoting support: that exact guard URL returns 0 bytes and NXDOMAIN, so it genuinely fires. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=7 nonval=7 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Served by fingerprinting WAFs -- Chrome-JA3 ClientHelloMeasured: nx_tls13_client_session_run_chrome exists in runtime/nx_tls13_chrome_session.nx, verified at emit. a JA3-gated Chrome-fingerprint hello wired into the fetch path beat the craigslist RST (verdict 4->5, 07-24); Ladybird and Servo are routinely challenged by anti-bot WAFs (coded Part.); 6 of the top-20 still FETCH-EMPTY for us (JS-SPA + fingerprint class). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=12 nonval=9 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; ahead of Ladybird, Servo; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads)
Inline images (PNG/JPEG/WEBP)Measured: load_images exists in runtime/_hdl_build/nishi_gui.nx, verified at emit. PNG + JPEG + WEBP-VP8L (byte-exact vs libwebp on real Wikimedia assets, 24-tooth gate) decode + aspect-preserving blit; the OGRE infobox photo renders on Wikipedia (07-29, dec 0->2). Lazy-load / srcset / data-src images are NOT fetched and SVG is skipped by design -- most figures on media-heavy pages are still blank. IMAGE REFLOW LANDED 2026-08-26, and it was FOUND BY LOOKING AT THE RENDER, NOT BY ANY METRIC: converted a wikipedia/Ogre shot to PNG and the Poussin painting was drawn ON TOP OF FIVE LINES of body text, its caption truncated mid-sentence. The ink metric called that render healthy (72,777 px, 9.87pc) because ink counts GLYPH PIXELS and is structurally blind to OCCLUSION -- the text is drawn, then covered. CAUSE: an <img> is an INLINE_BLOCK and, with no CSS height, layout gave the replaced element ONE LINE HEIGHT (~17px) against a ~220px decoded bitmap, so the blit overflowed its own box by ~200px. Intrinsic size is only known after fetch+decode, which runs AFTER layout (nishi_gui.nx:831 lays out, :832 loads), and nothing re-flowed. FIX: the two-pass reflow every browser does -- decoded dimensions are carried into layout by box index through a setter (the shape l_vec_measure already uses, so LayoutCtx is untouched) and br_layout runs a second time; unarmed it is byte-identical, and CSS width/height still win. RESULT ON THE SAME PAGE: ink 72,777 -> 74,945 (+2,168, +2.98pc) as previously-occluded text became visible, the caption now reads in full (Giovanni Lanfranco: Norandino and Lucina Discovered by the Ogre, oil on canvas, c.1624), and body text flows BELOW the figure. nx_inline_vec_measure_gate stayed GREEN 6/6 across the change. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.
not adopted: source exists, never compiled: /api/build it
Pros Nishi has it, measured on diskCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); not adopted yet: source exists, never compiled: /api/build it
Click / back / history navigationMeasured: br_hit_link exists in runtime/_hdl_build/nx_browser.nx, verified at emit. link hit-test, back/forward, address bar on all three OSs. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run.
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run
Pros Nishi has it, measured on diskCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run
Forms -- input / textarea / submitMeasured: bf_form exists in runtime/_hdl_build/nx_browser_forms.nx, verified at emit. sovereign form model (parse/focus/submit); input value= synthesis renders google's buttons as real text boxes. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.
not adopted: source exists, never compiled: /api/build it
Pros Nishi has it, measured on diskCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); not adopted yet: source exists, never compiled: /api/build it
Find-in-pageMeasured: br_find exists in runtime/_hdl_build/nx_browser_render.nx, verified at emit. case-insensitive find with highlight + scroll-to; servoshell does not document find-in-page in the 0.3 notes read 2026-08-18. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=32 nonval=17 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; ahead of Servo; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads)
Persistent profile storeMeasured: bp_put exists in runtime/nx_browser_profile_store.nx, verified at emit. profile STORE exists (no tabs/sessions UI yet); Ladybird shipped profiles + private browsing Jul 2026. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; ahead of Servo; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads)
Native Windows buildMeasured: fetch_url exists in runtime/_hdl_build/nishi_gui.nx, verified at emit. real win32 CreateWindow + message pump + address bar (nishi.exe renders live Wikipedia); Safari has no Windows build; the Ladybird alpha is Linux+macOS only; Servo builds on Windows. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.
not adopted: source exists, never compiled: /api/build it
Pros Nishi has it, measured on disk; ahead of Safari, LadybirdCons behind Chrome (leads), Firefox (leads), Edge (leads); not adopted yet: source exists, never compiled: /api/build it
Dark mode -- prefers-color-scheme + dark UA sheetMeasured: br_draw_fb_at exists in runtime/_hdl_build/nx_browser_render.nx, verified at emit. page.dark_mode swaps the UA sheet + base background; var()-bg dark pages render correctly (bg gate 20 teeth). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=32 nonval=17 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; ahead of Servo; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads)
Text legibility -- OCR measuredMeasured: br_draw_fb exists in runtime/_hdl_build/nx_browser_render.nx, verified at emit. Windows-OCR reading recall vs Chrome (2026-08-18 census): x 965, linkedin 958, example 947, wikipedia 877, hackernews 744, google 451, github 326 -- mean 486 over 12 measured rows; the body-size dot-collapse (periods/dots invisible below ~22px in the vector path) was root-caused + fixed 07-29. INTER-ELEMENT WHITESPACE COLLAPSE LANDED 2026-08-26, AND AGAIN IT WAS FOUND BY LOOKING AT THE RENDER RATHER THAN BY A METRIC: news.ycombinator.com read 'nderjung4 hours ago' and 'toomanyriches2 hours ago' -- every story byline had its author welded to its timestamp, and the header read 'Hacker Newsnew'. The ink metric could not see it (7,799 px, 1.06pc of viewport) because every glyph IS drawn; only the SPACING is wrong, and ink counts lit pixels, not words -- the same structural blindness that hid the image occlusion above, from the opposite direction. CAUSE: the whitespace between an inline element and the next one is its OWN text node, entirely whitespace, and _lfd_is_blank dropped every such node in order to kill the huge gaps that HTML source indentation creates between BLOCK siblings. Correct for blocks, wrong for inlines: under CSS white-space:normal that run collapses to a SINGLE SPACE between inline-level boxes and only vanishes at the edges of a line box. The organ's own comment admitted it 'approximates CSS collapse', and the approximation over-applied. FIX: emit a one-byte space TEXT box when the parent's last child is inline-level (INLINE / INLINE_BLOCK / TEXT) -- the half of the CSS rule that is answerable while streaming, since the next element is not parsed yet but an inline PREVIOUS sibling already proves we are mid-line. The byte is forced to 0x20 because a raw newline reaching nx_paint_text is treated as a hard break, which is the exact failure the blanket drop was introduced to avoid. First-child whitespace is still skipped, which is also what CSS does. PROVEN VISUALLY on the same page: 'nderjung 4 hours ago', 'Philpax 8 hours ago', 'leopoldj 5 hours ago' all separate correctly; ink 7,799 -> 7,904. NOT CLAIMED AS FIXED: 'Hacker Newsnew' in that header is a different thing -- HN's source carries no whitespace between those two links at all, and real browsers separate them with CSS padding, so it is a style gap, not this defect. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=32 nonval=17 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
JS execution depthMeasured: js_eval exists in runtime/nx_js_eval.nx, verified at emit. runs a real ES subset (minified jQuery 3.7.1 class; JS2 fetcher live 07-27) but full ES2024 + DOM/fetch API surface is BEHIND: youtube/reddit/bing/instagram/duckduckgo/craigslist are FETCH-EMPTY (SPA shells). Ladybird's LibJS passes 97.8% of test262 (Apr 2026); Servo ships SpiderMonkey. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: PROMOTED-UNREGISTERED — PARTIAL: a real binary nobody can call over MCP: /api/tools/register it; no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: a real binary nobody can call over MCP: /api/tools/register it; no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Nishi has it, measured on diskCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); not adopted yet: a real binary nobody can call over MCP: /api/tools/register it; no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Smooth scrolling + scrollbarMeasured: br_draw_fb_at exists in runtime/_hdl_build/nx_browser_render.nx, verified at emit. keys/wheel scroll with a right-edge scrollbar; the paint-ignores-scroll-offset defect was root-caused + fixed 2026-07-14. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=32 nonval=17 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Professional proportional typography (generative vector)Measured: br_paint_vec_atlas exists in runtime/_hdl_build/nx_browser_render.nx, verified at emit. body + headings in a PARAMETRIC stroke font generated from code (NO font files); pioneer benchmark 4/4; live in GUI + headless. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=32 nonval=17 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Real-face advances + pair kern through the ONE measure rulerMeasured: font_set_face exists in runtime/nx_font.nx, verified at emit. SUPERSEDES the oracle-advance watch 2026-09-02: the hand-baked Liberation table (laptop-only, never in the shipping tree) is RETIRED and the face itself is the ruler -- font_set_face receives the loaded face's 1000-em advances and kern pairs, font_adv_em answers from them first, and font_vec_text_w_fs and font_vec_next_break_fs (the width sum and the wrap scan, which the render copy now delegates to) add the pair kern in exactly the order the paint pen does. Shipped in BOTH trees, hash-verified. Chrome-compatible wrap points are now a property of the loaded file, not of a table someone has to regenerate. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=12 nonval=8 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Glyph-atlas cached text rasterMeasured: bpv_cell exists in runtime/_hdl_build/nx_browser_render.nx, verified at emit. rasterize each glyph+size ONCE then blit cached coverage -- 690x (11.7s -> 17ms warm) makes full-page vector interactive. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=32 nonval=17 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Headless render / screenshot -- deterministicMeasured: br_shot_png exists in runtime/_hdl_build/nx_browser_render.nx, verified at emit. the SAME core renders to a headless PNG (the Playwright/Puppeteer screenshot analog); DETERMINISM PROVEN: the same saved bytes rendered twice give a bit-identical PNG (md5 equal), so every remaining permille gap is a named defect, never noise. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=32 nonval=17 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Programmatic scroll / click / resize (synthetic user)Measured: us_frame exists in runtime/_hdl_build/nx_browser_user_sim.nx, verified at emit. drives the REAL render core (scroll/resize/maximize/click/find) with pixel-exact row-hash asserts + APNG clips -- the Playwright interaction analog, but not a standard protocol (see WebDriver BiDi below). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: BUILT-UNPROMOTED — PARTIAL: compiled, never promoted to the serving root: /api/promote it.
not adopted: compiled, never promoted to the serving root: /api/promote it
Pros Nishi has it, measured on diskCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); not adopted yet: compiled, never promoted to the serving root: /api/promote it
Agent-driven browsing -- CLI/MCP drive laneMeasured: bmeta_int exists in runtime/_hdl_build/nx_browser_drive.nx, verified at emit. the browser is drivable by an external agent (nish CLI + the drive organ; Claude Code operates it) but ships NO in-browser assistant. August-2026 field: Chrome ships Gemini + agentic mode, Edge ships Copilot Mode (coded Best), Firefox an opt-in AI sidebar, Safari Apple-Intelligence summaries (Part.); Comet/Atlas-class AI browsers exist at under 1% share; Ladybird/Servo none. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.
not adopted: source exists, never compiled: /api/build it
Pros Nishi has it, measured on disk; ahead of Safari, Ladybird, ServoCons behind Edge (leads); not adopted yet: source exists, never compiled: /api/build it
WPT web-platform-tests conformance -- the honest yardstickMeasured: wpt_run exists in runtime/nx_wpt_runner.nx, verified at emit. FIRST RUN 2026-08-18, v2 CORRECTED SAME DAY (sovereign testharness shim, shared-genv JS+DOM lane, runtime neg+pos controls proven before any counting, full .html population per directory, no sampling; v2 removed v1's assert_throws any-throw OVERCLAIM -- 14 fake passes deleted -- and made async_test synchronous with arithmetic incompleteness): dom/nodes 31 pass / 1217 fail / 178 unsupported-assert + async 1 pass / 5 fail / 202 incomplete, over 171 of 178 files; dom/collections 5 / 41 / 2; dom/lists 0 / 14; html/syntax/parsing-html-fragments 0 / 20. The bar: Ladybird 2,067,263 passing subtests (Apr 2026) [ladybird-apr26], Servo publishes wpt.servo.org, Interop 2026 at wpt.fyi/interop-2026. Low pass IS the yardstick working -- per-directory counts, never a single percent. v3 (2026-08-19) added the TIME SPINE + test intelligence, measured against the August-2026 field [otel-cicd26] [develocity-pts26] [wptfyi-runs26]: every run appends a TSV row keyed by (engine sha256, corpus sha256) -- content-addressed EXACT skipping where Develocity-class selection is a calibrated bet; regression vs the newest same-corpus row exits 4 for a beat to alarm; and --twice REFUTES flakiness instead of managing it (171 dom/nodes files ran twice with ZERO divergence in 5.9s -- any divergence is a real engine bug, exit 5). Rows live in knowledge/status/wpt_history.tsv + the wpttrend- plane -- CORRECTED 2026-08-26: this row published bench/wpt/wpt_history.tsv from 2026-08-19 and that path is OUTSIDE the sovereign write boundary (nx_mkdirp refuses any path not under knowledge/, sites/ or /tmp/), -- and that first correction was itself WRONG, SELF-CORRECTED WITHIN THE HOUR: bench/wpt is not empty, it is LAPTOP-RELATIVE (nishi-core/nxc2/bench/wpt/) and holds 4 rows written by the 08-19 laptop runs, so the real defect is that the spine is SPLIT ACROSS TWO MACHINES and a NAS-side reader finds nothing while every NAS run stayed spineless. FIRST NAS ROWS LANDED 2026-08-26, and the spine then paid for itself twice: two NAS rows share corpus 603f84a71d76e7a0 across DIFFERENT engine shas e64db8ebdf819e58 and 9a97da75f32c108d with identical 8 pass / 89 fail / 147 async-incomplete; and the 08-19 laptop dom_lists row carries corpus 54e90b086e0c6530, byte-identical to today's NAS domlists corpus, with identical 0 pass / 14 fail under engine 0f570c01e8ce4c68 versus e64db8ebdf819e58 -- engine-invariance proven twice, a week apart, on two machines, by content address rather than by assertion. BR21 THEN CLOSED THE CORPUS HOLE 2026-08-26: nx_wpt_ingest re-ingested all four slices byte-preserving at pin a7b5671e50ee3610ec3ad2e1278a33b2cb11339c and the harness reproduced EVERY declared corpus sha exactly -- dom_lists 54e90b086e0c6530, dom_collections 1819a1dcd3030f03, html_syntax_fragments a075ffa0af05ccd7, dom_nodes d49aee870a338154 over 178 files with a MANIFEST.tsv carrying the pin -- so the published numbers are reproducible from banked bytes for the first time. The encoding suite is the fidelity proof: it holds the-input-byte-stream-003.html as UTF-16LE with a BOM, and a matching corpus sha means no text layer ever touched the path. AND THE SPINE EARNED ITS KEEP THE SAME HOUR: on that identical dom_nodes corpus, engine 0f570c01e8ce4c68 of 08-19 versus 0d9285dc9de7ebc0 of 08-26 moved files-rendered 171 to 174 and async_incomplete 202 to 56 with async_fail 142, i.e. the engine now FINISHES async tests it used to abandon and failures once hidden as incomplete are counted -- real progress that reads as a pass drop from 32 to 31 unless the spine attributes it to the engine, which only a content-addressed corpus permits; the engine key equals the PROMOTED nx_wpt_runner.elf sha, proven byte-identical between the laptop and NAS builds. REFTESTS RAN 2026-08-19 (nx_wpt_reftest: test + reference painted through the browser's own render core at a fixed 800x600 viewport, exact-pixel compare -- no OCR, no tolerance; runtime self-match AND known-mismatch controls refuse counts when the harness cannot see): css/CSS2/floats 13 match-pass / 51 match-fail (67 with-ref of 106 files) and css/css-tables 60 match-pass / 56 match-fail (121 with-ref of 264) -- 73 spec reftests pass PIXEL-EXACT, the July table-layout work measurably holds; fuzzy-meta tolerance and .xht tests are declared out of v1 scope. Reftest rows ride the same time spine and the wpttrend- plane. RUN ON THE NAS FOR THE FIRST TIME 2026-08-26 (every earlier run was laptop-run), engine sha16 9a97da75f32c108d from the promoted 595,550 B nx_wpt_runner.elf, against a corpus re-acquired and pinned to WPT commit a7b5671e50ee3610ec3ad2e1278a33b2cb11339c: dom/lists 0 pass / 14 fail over 5 files (8,059 corpus bytes, corpus_sha16 54e90b086e0c6530) and dom/collections 5 pass / 41 fail / 2 unsupported-assert over 10 files (24,624 corpus bytes, corpus_sha16 1819a1dcd3030f03). Both corpus hashes AND every counter came back identical to the 08-18 rows while the engine binary DIFFERED, so these two directories are now INDEPENDENTLY REPRODUCED rather than merely recorded -- and that identity is also the proof the re-acquisition was byte-faithful, since a single wrong byte would move the hash. The neg control fired on every counted run (WPT-CONTROL pass=1 fail=1, counts refused otherwise) and --twice reported zero divergence on both. WHY A RE-ACQUISITION WAS NEEDED AT ALL, recorded because it is the load-bearing finding: the corpus behind the 08-18 numbers was banked in NEITHER tree -- bench/wpt was absent on the NAS and an exhaustive laptop and WSL search returned nothing, so only the 370-byte history TSV survived and for eight days these published counts were reproducible by nobody. The engine was version-controlled; the yardstick was not. dom/nodes (178 files) and html/syntax/parsing-html-fragments (13) are still unbanked and their 08-18 counts therefore stand UNREPRODUCED, blocked on two different failures that one organ closes: fragments is the encoding-detection suite and carries UTF-16LE-with-BOM fixtures that a text-safe hand path corrupts by construction, and dom/nodes is a scale a hand path cannot reach without sampling. That organ is rung BR21, and M0 was reopened to hold it, because a benchmark whose fixtures are not stored is an assertion rather than a measurement. Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Nishi has it, measured on diskCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads); not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Reproducible pinned test corpus -- the yardstick's own fixturesMeasured: wsp_ingest_dir exists in runtime/nx_wpt_ingest.nx, verified at emit. Every engine on this board runs WPT from a VENDORED, PINNED checkout in CI and publishes the result: the four majors export continuously to wpt.fyi, Ladybird reports 2,067,263 passing subtests against a pinned tree, Servo publishes wpt.servo.org. It is pure table stakes and we are the only column without it -- which is why this is coded Best across all six rather than graded on depth. MEASURED 2026-08-26: our corpus was banked in NEITHER tree. bench/wpt was absent on the NAS, an exhaustive laptop and WSL search returned zero WPT directories, and only the 370-byte history TSV survived, so every BR1 count published on 08-18/19 was for eight days reproducible by nobody. Content-addressing made it sharper, not safer: the runner keys a run on (engine sha, corpus sha) and refuses to re-run on a match, and that key was being computed over files that no longer existed. dom_lists and dom_collections were recovered by hand on 08-26 and both reproduced their 08-18 corpus_sha EXACTLY, which is simultaneously the proof the recovery is byte-faithful and the proof the loss was real. CLOSED 2026-08-26 by BR21 (nx_wpt_ingest, symbol wsp_ingest_dir): one call takes a WPT directory path and a 40-hex commit and lands every declared file as RAW BYTES, verified against BOTH the size and the git blob sha GitHub declares for it, with a MANIFEST.tsv carrying the pin and an INCOMPLETE-DO-NOT-PUBLISH marker written and removed mechanically. All four directories now read COMPLETE at pin a7b5671e: dom/lists 5 of 5, dom/collections 10 of 10, html/syntax/parsing-html-fragments 13 of 13, dom/nodes 178 of 178, every file re-verified against upstream on a second idempotent pass that fetched nothing. The proof it is byte-faithful is not ours to give: the git blob sha is computed upstream, so a single flipped byte anywhere in our transport fails, and all four corpus_sha16 values reproduce the 2026-08-18 rows EXACTLY (54e90b086e0c6530, 1819a1dcd3030f03, a075ffa0af05ccd7, d49aee870a338154) including the UTF-16LE-with-BOM fixture whose fourth byte is a NUL and which no text-argument carrier can transport. The yardstick is now reproducible by a third party from the pin alone. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Nishi has it, measured on diskCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Interop-2026 CSS -- anchor positioning, container style queries, view transitions, scroll-driven animations, attr(), shape()DARK — runtime/nx_css_apply.nx EXISTS but does not declare css_anchor_pos: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. the 2026 focus-area CSS the four vendors are converging on [interop2026-webkit]; Ladybird/Servo partial; ours implements none of the six -- and even CSS Grid is track-sizing only.
watching css_anchor_pos
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
CSS-on structural exactness loop -- a struct_diff column per site in the census (BR2, the operator ratchet of 2026-07-28)Measured: bc_struct_col exists in runtime/nx_browser_census.nx, verified at emit. WATCH bc_struct_col LANDED 2026-08-26 -- AND THE FLIP IS THE RECEIPT, NOT THE PROOF: the column publishes, the BAR IS UNMET, and the rung is deliberately NOT marked done. bc_struct_col is declared in nx_browser_census.nx and delegates to nx_browser_struct_col_lib.nx so nx_browser_struct_col_gate can prove it IN PROCESS (29/29 GREEN, bite-proven killed=1 not_reached=0 mutant_live=0); a gate that forked the census binary would read NOT-REACHED for every mutant. The census, PROMOTED-UNREGISTERED since it was written, is now registered and invoked. The row grew FOUR fields, not three, and the fourth is the point: struct_bands_oracle is the DENOMINATOR, because measured the same day google returned 1000 permille over TWO oracle bands and stackoverflow 0 permille over ZERO -- a perfect score and a total failure that are both arithmetic on an empty subject. The usable floor is DERIVED from the bar (one band moves a reading by 1000/N permil, a 900 bar leaves 100 permil of headroom, so N >= 10) and thinner rows count UNDERPOWERED, never averaged. MEASURED on bench/selfpage saved bytes, deterministic, deep window ay=by=800 h=2000: wikipedia 845 permil dy 7 dx 80 over 84 bands, hackernews 769 dy 12 dx 91 over 26, linkedin 545 dy 14 dx 66 over 77; aggregate 719 permil dy 11 dx 79, br2_bar_verdict UNMET. An oracle self-control over every banked capture (each self-matches 1000 permil dy 0 dx 0) shows example at 6 bands and x at 6 -- BELOW THE FLOOR, so two of the four sites the done-rule names cannot resolve a 900 bar at all, and stackoverflow and amazon capture zero. The incumbents ARE the oracle (coded Best); Ladybird and Servo render CSS-on but are not the reference (Yes). Row ADDED 2026-08-23: rung BR2 had no matrix row, so the ranker priced the operator's standing ratchet at value 0 (UNMAPPED). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: REGISTERED-UNAUTHORISED — PARTIAL: registered, no cap ever minted; no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: registered, no cap ever minted; no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Nishi has it, measured on diskCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads); not adopted yet: registered, no cap ever minted; no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Lazy-load images + srcset -- data-src / srcset / loading=lazy painted through the image path (BR14)Measured: bi_srcset exists in runtime/_hdl_build/nx_srcset_lib.nx, verified at emit. WATCH bi_srcset: data-src / srcset / loading=lazy images are fetched and painted through the existing PNG/JPEG/WEBP path (load_images, the row above this section); done when the wikipedia benchmark page renders every figure it lays out (imgsrc_laid == painted) and the coarse grid on media pages moves. Every rival fetches lazy/srcset images (Best). Row ADDED 2026-08-23: rung BR14 had no matrix row (priority 0 on the ranked board). ORGAN FIELD REPOINTED 2026-08-26 from nishi_gui.nx to nx_srcset_lib.nx, and the repoint is a correction not a convenience: the watch ruler is sd_declared, which grounds a symbol only where it is DECLARED, and nishi_gui CALLS the image path rather than declaring bi_srcset -- so this row could never have flipped where it pointed, however well the work went. LANDED 2026-08-26: nx_srcset_lib declares bi_srcset (candidate parse plus selection), bi_img_source (element-level order over src, srcset, data-srcset, data-src, data-original, data-lazy-src), bi_sizes_px and bi_img_lazy, wired into br_extract in nx_browser_render.nx -- the one site that decides what an img points at, so every consumer of page.bsrc_off gains it in a single edit. nx_srcset_lib_gate 59/59 GREEN, mutation-proven killed=1 not_reached=0 mutant_live=0 with the restore byte-verified. PROVEN: the descriptor grammar unit-exhaustively, the three trivial wrong selectors refuted by name, byte-identity of the eager path against an independent reader, the wiring through the REAL br_layout (four figures resolve to the right URL, zero left holding a data URI placeholder), and the paint chain end to end on a fixture PNG at laid 4 equals decoded 4 equals painted 4. NOT PROVEN and deliberately not claimed: the live wikipedia render over the network, which needs the Windows GUI binary and a network. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=3 nonval=2 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
ES2024 core + fetch/DOM API surface -- what the SPA shells need to render (BR3)DARK — runtime/nx_js_eval.nx EXISTS but does not declare js_fetch_api: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH js_fetch_api: js_eval grows the ES2024 core (classes, async/await, Promise, modules) and the fetch/XHR + DOM/Event/History API surface; done when at least 3 of the 6 FETCH-EMPTY rows (youtube, reddit, bing, instagram, duckduckgo, craigslist) read CONTENT-OK in the census with recall over 300, and a test262 core-slice pass count is published beside Ladybird's 97.8 percent. Incumbents Best; Ladybird LibJS 97.8 percent test262 (Best-class); Servo SpiderMonkey (Best). Row ADDED 2026-08-23: rung BR3 had no matrix row (UNMAPPED, value 0) although the JS-depth row above carries the measured distance. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching js_fetch_api
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); open contract, nothing on disk yet
Tabs / sessions / profiles UIOpen — watching runtime/nx_browser_tabs.nx : bt_tab_open, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. profile STORE exists but no tabbed UI / session restore; Ladybird ships tabs + profiles + private windows; servoshell has tabs. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bt_tab_open
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo; open contract, nothing on disk yet
DevTools -- inspector / debugger / network panelOpen — watching runtime/nx_browser_devtools.nx : bdt_inspect, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. no element inspector, JS debugger, or network panel; Ladybird and Servo both speak the Firefox DevTools protocol (attach Firefox's inspector) -- coded Part. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bdt_inspect
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
Extensions ecosystemOpen — no implementing organ is measured for this axis yet. no extension / add-on API; neither independent engine has one either. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads); no implementing organ measured
In-browser video / A-V playbackOpen — watching runtime/nx_browser_video.nx : bv_play, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. our H.264 codec EXISTS (nx_media_convert) but is NOT wired into the browser; Ladybird decodes video/audio (WebAudio runs Doom 3, Jul 2026), Servo via GStreamer. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bv_play
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
WASM in the browserOpen — watching runtime/nx_browser_wasm.nx : bw_instantiate, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. nx_wasm_vm EXISTS and vets shipped games (five live wasm worlds), but is not wired as a browser feature; Ladybird has LibWasm, Servo has SpiderMonkey wasm. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bw_instantiate
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
HTTP/2 and HTTP/3 in the fetch pathOpen — watching runtime/nx_browser_h3.nx : bh2_stream, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. measured 2026-08-18: a 9-file sovereign h2 stack (frames/streams/flow/serve) AND a 15-file QUIC stack (keys/aead/hdr) EXIST in runtime/, but the browser fetch path is HTTP/1.1 -- built-and-not-browser-wired. Ladybird (curl) and Servo (hyper) speak h2; h3 partial. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bh2_stream
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
Complex-script shaping (HarfBuzz-class) + real font filesOpen — watching runtime/nx_browser_shape.nx : bs_shape_run, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. REAL FONT FILES LANDED 2026-09-02 (the rows directly below: TTF outlines, hmtx advances and kern-table pair kerning through the sovereign engine, Liberation Sans as the default face). STILL ABSENT under this symbol: ligatures (GSUB), GPOS-table kerning, bidi run shaping and WOFF2. Both independent engines ship HarfBuzz + FreeType/system fonts. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bs_shape_run
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); open contract, nothing on disk yet
Real TrueType faces in the render core -- outlines + hmtx advances + kern from ONE file (BR26)Measured: br_set_face exists in runtime/_hdl_build/nx_browser_render.nx, verified at emit. LANDED 2026-09-02: br_set_face adopts a face parsed by nx_ttf_fontlib into the glyph atlas (coverage records adopted as-is, no re-raster, no second copy) and hands its 1000-em advances and 95x95 kern pairs to nx_font font_set_face, THE measure ruler, so layout, wrap and paint agree by construction; nx_inline_vec_measure_gate 8/8 (T7 face advances plus kern reserved by layout, T8 clearing the face restores stroke widths); nishi.exe rebuilt with Liberation Sans loaded at startup through win32 CreateFileA and ReadFile into a NAMED reserve whose overflow refuses the face. Measured on the saved wikipedia page against the Chrome capture: deep-window struct 880 to 892 permil, page_h 7027 to 7048 (Chrome 7582), first-screen dx 185 to 155. Every engine here renders real fonts, so PARITY of kind; the difference is that the reader is 700 lines of our own source with no FreeType. NOT yet: family, weight and style resolution (BR27), web fonts (BR28), the Linux and NAS browser (BR29), non-ASCII (BR30). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=32 nonval=17 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Sovereign TrueType engine reads professional fonts -- upem, hhea, cmap glyphIdArray, composites, kern all READ from the fileMeasured: tf_adv_em1000 exists in runtime/_hdl_build/nx_ttf_fontlib.nx, verified at emit. nx_ttf_fontlib_gate 23/23 GREEN 2026-09-02 on Liberation Sans 2.1.5 (2048 upem, 908 kern pairs, 1076 composite glyphs) plus a runtime-synthesised cmap subtable: the first cut assumed unitsPerEm 1000 and ascender 760 (true only of our emitted house font), so every professional face would have rasterized at half size with halved advances and nothing would have failed loudly -- T15 catches exactly that (A at 32px reads 22 ink rows = capHeight scaled by the READ upem). T13 proves the hmtx-derived 1000-em advances equal the retired hand-baked oracle table for space, i, m and W; T21 proves Microsoft Arial and Liberation Sans agree on all 95 ASCII advances through OUR parser (metric compatibility read, never assumed). FreeType is the reference reader (Best) and HarfBuzz reads the same tables for shaping (Best); fontTools reads and writes them (Yes); Noto is a font, not a reader (No); Ladybird and Servo read fonts through FreeType (Best). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=5 nonval=4 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; ahead of Edge; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Ladybird (leads), Servo (leads)
Font-family, weight and style resolved to real faces (BR27)Measured: br_face_resolve exists in runtime/_hdl_build/nx_browser_render.nx, verified at emit. LANDED 2026-09-02, shipped awaiting the referee and the operator: eight face slots (Liberation Sans and Serif in regular, bold, italic, bold-italic) selected per run by ONE resolver (nx_layout_face_for_box: font-weight, font-style, font-family and the font shorthand, CSS-inherited, memoised per box) that layout calls before measuring and paint calls through br_face_resolve before drawing, so measure and paint cannot disagree on the face; h1 to h6 bold in the UA sheet. Measure gate 11/11 (bold slot measured, resolver names slot 1, no-bold-slot falls back to regular never to the stroke font). Same-instrument measurement on the saved wikipedia page: mean_dx 53 to 49, page_h 7048 to 7090 against Chrome 7582; headings paint serif, bold runs bold, the hatnote italic. The bold heading WAS a cascade defect after all (one wrong correction retracted): rh_cascade scored a comma list's specificity over the whole list, so a class member leaked its specificity onto the type members and wikipedia's earlier .mw-heading,h1{bold} outranked its later .mw-heading1,h1{normal}; fixed by per-matching-member specificity (measure gate T11-T17, 18/18), first screen 578 to 684 permil and dx 155 to 138 on the saved page, the title now serif regular as Chrome paints it. Still open: edit links inherit the heading face, no monospace slot. Every rival resolves families (Best). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=32 nonval=17 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Web fonts -- @font-face URL loading + WOFF2 decode with a sovereign Brotli (BR28)Open — watching runtime/nx_browser_webfont.nx : bwf_load, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WATCH bwf_load: pages ship their own fonts as WOFF2 (Brotli-compressed sfnt); done when a fetched @font-face WOFF2 decodes to an sfnt our engine loads and paints on a banked fixture, with the Brotli codec shared with typography rung R0 (WOFF2 emit) so there is ONE codec and emit and load cannot disagree. Every rival loads web fonts (Best). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bwf_load
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); open contract, nothing on disk yet
ONE render core -- the Linux and NAS browser paints through nx_browser_render (BR29)DARK — runtime/_hdl_build/nx_browser.nx EXISTS but does not declare br_render_core: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. MEASURED 2026-09-02: nx_browser.nx (the promoted Linux binary, the NAS shot verb, the roster gate subject) declares its OWN br_layout, br_draw_fb and br_shot_png and paints text with the 8x8 bitmap font at 2x -- it never imports nx_browser_render.nx, where the vector typography, the glyph atlas and now the real faces live. Two render cores is the duplicate-ruler defect at the centre of this board: the NAS census and every headless NAS shot structurally cannot see the typography work until the Linux browser composes the shared core. Done when nx_browser.nx imports nx_browser_render and the NAS shot verb paints the same pixels the Windows build does. Every rival has one render core by construction (Best). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching br_render_core
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); open contract, nothing on disk yet
Unicode text pipeline beyond ASCII -- codepoints through layout and paint (BR30)Measured: br_text_cp exists in runtime/_hdl_build/nx_browser_render.nx, verified at emit. WATCH br_text_cp: text is folded to ASCII before layout (accents dropped to base letters, curly quotes straightened), so a real face is only ever asked for bytes 32 to 126 although the engine already decodes composites for accented glyphs; done when layout and paint carry codepoints, the face covers Latin-1 and Latin Extended on the wikipedia benchmark, and the fold is retired for the scripts the face covers. Every rival renders Unicode (Best). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=32 nonval=17 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Accessibility / screen-reader treeOpen — watching runtime/nx_browser_a11y.nx : ba_tree, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. no accessibility tree / screen-reader support; Ladybird and Servo both report a11y as in progress (Servo 0.3 notes). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching ba_tree
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
Per-site process sandboxOpen — watching runtime/nx_browser_sandbox.nx : bsb_spawn, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. single-process; no per-site process isolation. Ladybird is multi-process (WebContent per tab, sandboxed); Servo has a multiprocess mode. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bsb_spawn
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
Standard WebDriver BiDi automation endpointOpen — watching runtime/nx_browser_webdriver.nx : bwd_session, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. the field moved in 2026: Firefox removed CDP (141), Puppeteer drives Firefox over BiDi by default, Selenium 5 removes CDP-only APIs [bidi26]; Ladybird and Servo both run WPT through their own WebDriver servers. Ours has the synthetic-user driver but no STANDARD external protocol -- tracked on /compare/racing.
watching bwd_session
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
WebGPU / WebGL canvas in the browserOpen — watching runtime/nx_browser_gpu.nx : bg_webgl_ctx, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. Chrome/Edge 113+, Safari 26, Firefox 147 ship WebGPU [webgpu-status26]; Servo's wgpu-backed WebGPU is one of its strengths; Ladybird has WebGL via ANGLE. Ours emits WebGL2/WebGPU pages for OTHER browsers (the /world delivery lane) but renders no canvas 3D itself.
watching bg_webgl_ctx
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
CSS custom properties -- var() collection + expansionMeasured: cx_expand exists in runtime/_hdl_build/nx_css_vars.nx, verified at emit. cx_collect/cx_expand resolve var() chains with depth guard + clamp(); the /experiential dark-theme var(--bg) body renders correctly through it. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
CSS Grid -- track sizing (px/fr/rem/em)Measured: _layout_display_grid exists in runtime/nx_layout_block.nx, verified at emit. grid-template-columns track sizing with fr-weight leftover split and gaps (landed 07-29); NO auto-placement, areas, or subgrid -- track sizing only, the delta is a named WPT directory once BR1 runs. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=28 nonval=11 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; ahead of Ladybird; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Servo (leads)
CSS positioning -- relative / absolute / fixed / stickyMeasured: _layout_position exists in runtime/nx_layout_block.nx, verified at emit. the positioned-box pass exists in the shared layout core (verified in buildroot); depth vs the spec (containing blocks, z-index stacking contexts) is unmeasured until BR1. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=28 nonval=11 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Cookie engine -- parse / emit / SameSiteMeasured: nx_http_session_parse_cookie exists in runtime/nx_http_session.nx, verified at emit. sovereign Set-Cookie emit + parse with session plumbing serves our own auth surfaces; the browser fetch carries a cookie jar on redirects. Third-party-cookie policy (the 2026 privacy axis) is not implemented. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=2 nonval=1 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Measure == paint -- layout reserves and BREAKS on the same advances paint drawsMeasured: font_vec_next_break_fs exists in runtime/nx_font.nx, verified at emit. ADDED 2026-08-25 because the board had no row for the invariant every typography claim on it depends on, and it was FALSE in three places at once. br_layout set text_measured=1 (8x8 BITMAP metric) and vec_headings=2 (VECTOR paint) in ONE function; the wrap branch had a measured arm and a legacy arm and NO vector arm, so a run whose width was reserved in vectors was then BROKEN on bitmap advances; and layout measured RAW DOM bytes while paint drew DECODED+ASCII-FOLDED bytes, making café eleven characters to one stage and four to the other. Fixed by one shared absolute-px metric (font_vec_adv_fs / font_vec_text_w_fs / font_vec_next_break_fs, with the layout copy now DELEGATING so the two cannot drift), a vector arm in the wrap branch, and a fold-before-layout pass that hands both stages the same bytes. PROVEN, not asserted: nx_inline_vec_measure_gate is PROMOTED + REGISTERED + ROSTERED and answers GREEN 6/6 through /api/gate_run, with four of its six teeth named neg-control-* so the census can count them. Incumbents do this correctly by construction (coded Best); this is parity of KIND, not an exceed. MEASURED 2026-08-26, isolated to ONE change on a real page (nishifamily.com/compare/browser, headless f0, ink = pixels darker than 160 on all three channels): 07-29 binary 24,103 -- vec-measure+wrap 24,103 (IDENTICAL, because ink counts GLYPHS and is structurally blind to re-wrapping; cmp showed those renders differ) -- fold-before-layout 26,190, i.e. +2,087 = +8.66pc MORE TEXT ON THE PAGE. That delta is the entity-bearing runs which previously failed layout's coverage test on RAW bytes and were measured at raw length while paint drew the decoded form. STILL NOT CLAIMED: real TTF outlines, kerning, ligatures or bidi -- see the shaping row. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=12 nonval=8 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Media queries -- @media evaluationMeasured: rh_filter_media exists in runtime/_hdl_build/nx_render_html.nx, verified at emit. CORRECTED 2026-08-25 -- the previous note claimed there is NO named media-query evaluator in the shipping tree and that was FALSE, so this row was sending readers to build a duplicate of a shipped organ. rh_filter_media(src,off,len,out,out_cap,vw) is declared at nx_render_html.nx:136 and has 17 call sites (corpus_complete=1). The real defect was upstream of it and is now fixed: nx_browser.nx:286 passed a LITERAL 1000 as vw while deriving the true window width two lines BELOW the call, so every responsive page was STYLED for a 1000px viewport and LAID OUT at the real width, and because br_layout re-runs on resize the styles were never re-selected. The sibling render core (nx_browser_render.nx:567) already passed the real vw -- half a fix living in one organ and not its twin. STILL UNMEASURED and NOT claimed: which @media features the filter actually supports, and its WPT media-queries pass count once BR1 runs that directory. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=44 nonval=9 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
WebSocket in the browserOpen — watching runtime/nx_browser_ws.nx : bws_connect, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. a 24-file sovereign WS stack EXISTS (client upgrade, frames; the rooms/signaling/SFU daemons run on it live) but the page JS surface has no WebSocket object -- built-and-not-browser-wired, the cheapest wire on this list. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bws_connect
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
Web storage -- localStorage / sessionStorage / IndexedDBOpen — watching runtime/nx_browser_storage.nx : bst_local_set, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. nothing browser-side; the estate has seg-stores and the profile store to back it, but no storage API surface -- most SPA login flows (the FETCH-EMPTY class) depend on this plus BR3. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bst_local_set
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
Web Workers + postMessageOpen — watching runtime/nx_browser_workers.nx : bwk_spawn, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. no worker threads in the page runtime; the sovereign process primitives exist but no Worker API. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bwk_spawn
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
Service workers + PWAOpen — watching runtime/nx_browser_sw.nx : bsw_register, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. no service-worker registration, cache API, or install surface; neither independent engine ships this yet either. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bsw_register
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads); open contract, nothing on disk yet
Canvas 2D contextOpen — watching runtime/nx_browser_canvas2d.nx : bc2_fill_rect, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. the sovereign raster primitives exist (solid rects, text paint, PNG encode -- the render core itself) but no canvas element API is exposed to page JS. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bc2_fill_rect
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo; open contract, nothing on disk yet
SVG renderingOpen — watching runtime/nx_browser_svg.nx : bsvg_path, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. no SVG parser/rasterizer anywhere in the tree (measured 0 files); the census deliberately SKIPS .svg images -- a whole image class on wikipedia-class pages renders blank. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bsvg_path
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); open contract, nothing on disk yet
CSS transforms / transitions / animationsDARK — runtime/nx_css_apply.nx EXISTS but does not declare css_transform_apply: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. no transform matrix, transition, or @keyframes support in the layout/paint path (the 10 files matching are the video codec, not CSS). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching css_transform_apply
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo (leads); open contract, nothing on disk yet
Shadow DOM + custom elements + templatesOpen — watching runtime/nx_browser_components.nx : bsd_attach, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. no shadow roots, custom element registry, or template instantiation -- the web-components sites (incl. scoped-registries, an Interop-2026 area) cannot render componentized DOM. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bsd_attach
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
CSP + SRI enforcement in the pageOpen — watching runtime/nx_browser_csp.nx : bcsp_enforce, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. our SITES emit CSP server-side, but the BROWSER does not enforce Content-Security-Policy or Subresource-Integrity on fetched pages; with no JS cross-origin surface the exposure is latent, not absent. Row un-merged 2026-08-18 after the generator row cap became DERIVED (was a silent 64; debt 1787077715 RESOLVED). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bcsp_enforce
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
CORS / same-origin enforcement in fetchOpen — watching runtime/nx_browser_cors.nx : bcors_check, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. our own daemons EMIT Access-Control headers (cors.nx serves them live) but the browser fetch path enforces no origin model -- required before BR3 opens cross-origin JS fetch (BR16 carries it). rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bcors_check
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
Web Audio / audio-video element outputOpen — watching runtime/nx_browser_audio.nx : bau_ctx, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. no audio element or AudioContext; sovereign synthesis organs exist (the audio lanes) but nothing browser-wired -- pairs with the BR8 video rung. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bau_ctx
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
WebRTC -- RTCPeerConnectionOpen — watching runtime/nx_browser_rtc.nx : brtc_peer, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. the estate runs sovereign signaling + SFU daemons (nx_room_sfu, nx_signaling_v2) that CURRENT browsers connect to, but our browser has no RTCPeerConnection -- an Interop-2026 focus area. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching brtc_peer
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Servo; open contract, nothing on disk yet
GPU compositing / display-list rasterOpen — watching runtime/nx_browser_compositor.nx : bcmp_layer, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. our paint is single-pass CPU into one framebuffer (glyph-atlas cached); no layer tree, damage tracking, or GPU raster -- fine at census sizes, the scaling ceiling for animation and video. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bcmp_layer
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo (leads); open contract, nothing on disk yet
Downloads / autofill / password manager / permissions UIOpen — watching runtime/nx_browser_product.nx : bpd_download, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. the product surfaces around the engine: download manager, form autofill, credential store, per-site permissions. The profile STORE could back them; none exist as browser UI -- BR20. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bpd_download
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird; open contract, nothing on disk yet
Print / save-to-PDFOpen — watching runtime/nx_browser_print.nx : bpr_to_pdf, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. no print pipeline or PDF emitter from the layout tree (measured 0 files); neither independent engine ships print yet either -- BR20. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bpr_to_pdf
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads); open contract, nothing on disk yet
Browser gate builds its claim set through the sovereign lane -- no binutils, abstains instead of convictingMeasured: bg_sov_resolve exists in runtime/nx_browser_gate.nx, verified at emit. LANDED 2026-08-27: bg_build forks _offc/nx_sov_build_run.elf --build-only per row (13 rows, cache-HIT reruns), builder refusals (admit/canon/timeout/exec) become gv_need preconditions -> SKIP, never RED; baseline run 13/13 GREEN after two real fixes; nx_gate_bite GREEN (compiling mutant killed, restore byte-verified). The gate had published 0/12 RED for its whole recent history because it forked a compiler absent on this host and shelled the .s through /usr/bin/as+ld, which the sovereign host deliberately does not ship. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: GATE:DEPLOYED-DARK trial=RED — PARTIAL: deployed, no execution surface runs it: admit it to the gate roster.
not adopted: deployed, no execution surface runs it: admit it to the gate roster
Pros Nishi has it, measured on diskCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); not adopted yet: deployed, no execution surface runs it: admit it to the gate roster
The shipped browser artifact is gated -- headless shot row, subject-substitutableMeasured: bg_subject_resolve exists in runtime/nx_browser_gate.nx, verified at emit. LANDED 2026-08-27: row 12 forks <artifact> shot <runtime fixture> - (full layout, PNG deliberately withheld); argv[1] names the build under test (the ship loop passes the staged .sov.elf.new, nx_gate_bite subject mode passes the mutant), argless judges the promoted nx_browser.elf -- which is what the roster should judge, because it is what is served. Rows 0..11 prove the libraries; none of them executed nx_browser itself until this row. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: GATE:DEPLOYED-DARK trial=RED — PARTIAL: deployed, no execution surface runs it: admit it to the gate roster.
not adopted: deployed, no execution surface runs it: admit it to the gate roster
Pros Nishi has it, measured on diskCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); not adopted yet: deployed, no execution surface runs it: admit it to the gate roster
HTTP request buffer derived from its builder, never guessedMeasured: nx_http_client_request_cap exists in runtime/nx_http_client.nx, verified at emit. LANDED 2026-08-27: a 256-byte guess overran its arena the day the identity + derived-caps headers reached ~357 B (crash guard: ARENA-OVERRUN prev_alloc_size=256, the Accept header spilling into the next cell) and the corrupted response convicted the browser with exit 80. The bound now lives in the owner file; 14 call sites censused (corpus_complete=1), the 6 that guessed low now compose it (page-demo rebuilt and run, exit 0). Debt 1787853210 names the 4 mesh siblings + image-demo as source-fixed-unbuilt. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=49 nonval=32 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Transport decoding composed at the fleet chokepoint -- gzip/deflate/chunked stripped onceMeasured: hf_decode_transport exists in runtime/nx_https_fetch_lib.nx, verified at emit. LANDED 2026-08-27 on the gate's page-demo row: example.com is Cloudflare-fronted since 2026-08-26 and answers our advertised Accept-Encoding with gzip; the raw-socket row dechunked by hand and read 1f 8b bytes as HTML. It now composes hf_decode_transport (the one decoder every fetch consumer inherits; refusals carried as their own exits so a server coding fault never reads as a render fault), and the rendered text is the real page: title, h1, paragraph, link. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: LIB-WIRED importers=15 nonval=11 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads)
Worlds delivered as EMITTED output -- the browser consumes rendered frames, never capability sourceMeasured: load_images exists in runtime/_hdl_build/nishi_gui.nx, verified at emit. OPERATOR DIRECTION 2026-08-27: the /world surfaces move to NATIVE EMISSION -- our renderer produces the frames, third-party engines receive rendered output only, so no WebGL/JS capability source ever ships to a rival runtime. The receiving half is PROVEN today: the browser paints PNG/JPEG/WEBP inline through its own bits-up decoders and renders emitted board pages headlessly (layoutsweep, shot). The emitting half is the watch row below. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.
not adopted: source exists, never compiled: /api/build it
Pros Nishi has it, measured on disk; ahead of Ladybird, ServoCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads); not adopted yet: source exists, never compiled: /api/build it
Native world-frame EMISSION path -- server-side render to image/stream, no third-party runtimeMeasured exceed: we_world_frame_emit in runtime/nx_world_emit.nx, verified at emit. WATCH 2026-08-27 (operator: "i want to emit i dont want webgl and other 3d parties receiving our work and capabilities"): the done-rule is a sovereign organ that renders a world scene to emitted frames (PNG or stream) consumable by ANY browser as plain media -- rivals structurally cannot offer this (their model ships capability JS to the client). Ship the organ with this symbol and the cell flips on the next regen; the flip is the receipt, the rung's gate is the proof. Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked).
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Pros Nishi leads, a measured exceed; ahead of Chrome, Firefox, Safari, Edge, Ladybird, ServoCons not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked)
Native world MOTION emission -- frame sequences as plain media over the sovereign wireDARK — runtime/nx_world_emit.nx EXISTS but does not declare we_frame_seq_emit: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH 2026-08-27 (BR24, dep BR22): the done-rule is a server-emitted frame SEQUENCE of the generated world delivered as plain media (the nx_room_stream down-channel or an emitted NishiVideo/YUV artifact with a published decode) consumable by any browser with zero client-side capability. Ship we_frame_seq_emit in the named organ and this cell flips on the next regen -- the flip is the receipt, the rung gate is the proof. Adoption metric: importer counts of nx_video_codec (now 1, adapter only) and nx_room_stream (now 1, the vroom daemon) rising.
watching we_frame_seq_emit
Pros none measured yetCons open contract, nothing on disk yet
Cross-engine last mile over EMITTED-OUTPUT pages -- Chrome verified, Waterfox and Edge unverifiedOpen — watching runtime/nx_browser_crossverify.nx : bx_engine_verify, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. HONEST GAP 2026-08-27: the last-mile claim ("runs on Chrome, Waterfox, Edge") is verified today only against headless Chrome-class rendering; Waterfox and Edge have no verify lane. Subject is the EMITTED-OUTPUT pages (boards, world frames) -- never capability-bearing JS, per the native-emission direction. Done-rule: a verify organ that loads the emitted pages in each named engine and asserts the same structural content; not a browser farm, a checker. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching bx_engine_verify
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
Every published /compare board lays out through the real cascade -- native sweep, reconciling partition, worst namedMeasured exceed: br_layout in runtime/_hdl_build/nx_browser.nx, verified at emit. MEASURED 2026-08-27 on the promoted 1,439,825 B binary, minutes after promote: nx_browser layoutsweep over the whole compare tree -> boards_listed=104 laid_out=101 skipped=3 (career, sharing, civic carry no index.html) failed=0, partition RECONCILES; total_boxes=177,996, computed_decls=645,781; WORST board 98 boxes / 557 px -- the worst is printed, never the mean, because an average hides the board that laid out to almost nothing. No rival engine ships a verb that sweeps its own published estate and refuses on a partition leak. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them Adoption: REGISTERED-DARK — PARTIAL: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run.
not adopted: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run
Pros Nishi leads, a measured exceed; ahead of Chrome, Firefox, Safari, Edge, Ladybird, ServoCons not adopted yet: callable, authorised, completed MCP invocation not established by supplied journal window; lifetime history unknown (direct execution may be recorded elsewhere; this scan does not establish lifetime use); no execution surface runs it either (clock, cron, daemon, roster, actlog and surfaced forks checked); only referenced by nx_browser_doc_gate -- a mention, not a run
WORLD
the Nishi browser opens /world/beach natively -- sovereign wasm VM plus the native raster door, the JS shell bypassed (BR40)Open — watching runtime/nx_browser.nx : br_world_door, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. OPERATOR 2026-09-03: this browser and NishiOS are where the game stack is sovereign; the incumbents run the same page through WebGL2 with WebGPU behind a lever today (gpu GP3), so every mainstream column codes present and the two independent engines part, all at INDEX LEVEL and UNPINNED for this row. Ours is absent by measurement: the page JS shell is the only path that instantiates the world module, and this browser has no wasm host or raster door wired to a fetched page. Contract in browser.plan BR40. rival marks uncited — the Yes, Best or Part codes on this row are an observation read with no reference mark behind them
watching br_world_door
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
WPT conformance delta series with manifest-diff attributionDARK — runtime/nx_wpt_runner.nx EXISTS but does not declare wpt_delta_series: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH wpt_delta_series. Ladybird crossed 2,088,677 passing WPT subtests and still targets its first alpha in 2026 [ladybird-aug26]. Done when the sovereign runner publishes a monthly series of pinned suite revision, absolute passing count and month-over-month delta, with a manifest diff that separates gains from newly imported tests from gains from new engine capability -- a rising count with no attribution is a number, not a measurement.
watching wpt_delta_series
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo; open contract, nothing on disk yet
Conformance triple: numerator, denominator and date as three fieldsDARK — runtime/nx_js_eval.nx EXISTS but does not declare js_conf_triple: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH js_conf_triple. Ladybird passes 97.8 percent of test262, 52,045 of 53,207 [ladybird-apr26]. Done when every conformance figure the estate publishes carries numerator, denominator and run date as separate fields with the denominator sourced from a versioned external import, so a percentage can never hide a shrinking denominator.
watching js_conf_triple
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird (leads), Servo (leads); open contract, nothing on disk yet
Contribution-provenance gateDARK — runtime/_hdl_build/nx_gated_edit.nx EXISTS but does not declare ge_author_standing: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH ge_author_standing. Ladybird stopped accepting public pull requests on 2026-06-05 [ladybird-devmodel26]. The estate-shaped extraction is not a closed door but a named one: done when every code change carries a responsible maintainer identity and the write path REFUSES a change whose author cannot be attributed to a person with standing review authority, naming the rule.
watching ge_author_standing
Pros none measured yetCons behind Chrome, Firefox, Safari, Edge, Ladybird, Servo; open contract, nothing on disk yet
Dual-implementation A/B over a live stream before an incumbent is deletedOpen — watching runtime/_hdl_build/nx_behaveprobe.nx : bp_dual_impl_stream, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WATCH bp_dual_impl_stream. Both independent engines moved core rendering to Rust in 2026 and Chrome followed in its own parser [ladybird-aug26]. nx_behaveprobe already compares live against staged on a workload; done when it runs old and new implementations over the same live input STREAM, asserts byte-identical serialized output, counts divergences, and the incumbent is deleted only at zero divergence over the full population. Exceed claimed narrowly: a divergence COUNT over the population, where the rivals report a migration as done.
watching bp_dual_impl_stream
Pros none measured yetCons behind Chrome, Firefox, Edge, Ladybird, Servo; open contract, nothing on disk yet
Typed-delta style invalidation measured against a banked baselineDARK — runtime/_hdl_build/nx_browser_render.nx EXISTS but does not declare br_typed_delta: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH br_typed_delta. Ladybird published head-to-head StyleBench 116.3 against Firefox 232.8 and Safari 129.5 [ladybird-aug26]. Done when DOM mutations, state changes and CSSOM edits are a stream of typed deltas routed only to the selectors depending on them, and the score is measured against a banked baseline artifact, never against a description. LARGE: a rewrite of the invalidation core.
watching br_typed_delta
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
Throughput and energy reported as a pairDARK — runtime/_hdl_build/nx_energy_probe.nx EXISTS but does not declare ep_pair_receipt: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH ep_pair_receipt. Servo v0.5.0's multithreaded 2D canvas reports plus 55 percent frame rate AND minus 42 percent power per frame together [servo-jul26]. Done when every rendering optimization on this board is reported as a PAIR -- throughput delta and joules-per-unit-of-work delta over the same run -- so a change that raises frame rate while worsening energy per frame is visible as the regression it is. Exceed claimed narrowly: a receipt that REFUSES a throughput number without its energy twin.
watching ep_pair_receipt
Pros none measured yetCons behind Chrome, Firefox, Safari, Edge, Servo (leads); open contract, nothing on disk yet
Post-quantum WebCrypto behind NIST known-answer testsDARK — runtime/nx_pq_hybrid.nx EXISTS but does not declare pq_webcrypto_kat: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH pq_webcrypto_kat. Servo is the first engine to fully implement ML-KEM and ML-DSA in WebCrypto [servo-jan26]. Two separately gated legs: a TLS client offering hybrid X25519MLKEM768 that ANNOUNCES rather than silently performs a classical downgrade, and ML-KEM plus ML-DSA behind a WebCrypto-shaped API gated by NIST KATs. Done when both legs pass their KATs and the leading claim is a linked cross-implementation run, never prose. LARGE: lattice schemes from scratch, constant-time.
watching pq_webcrypto_kat
Pros none measured yetCons behind Chrome, Firefox, Safari, Edge, Servo (leads); open contract, nothing on disk yet
Metric-provenance gate with a DRIFTED stateDARK — runtime/_hdl_build/nx_uiq_perf.nx EXISTS but does not declare up_metric_prov: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH up_metric_prov. REFUTED by the sweep's own verifier: there is no new Core Web Vitals metric and no tightened LCP threshold in 2026 [webvitals26] -- a circulating secondary claim that the primary page does not support. Done when every performance bar carries the primary vendor URL defining it plus that page's last-updated date, refuses to publish a bar whose only witness is secondary, and a beat re-reads the primary and flags DRIFTED when its date moves. Exceed claimed: the DRIFTED leg, which turns a bar from a claim into a watched fact.
watching up_metric_prov
Pros none measured yetCons open contract, nothing on disk yet
Soft-navigation attributor for SPA vitalsDARK — runtime/_hdl_build/nx_browser_render.nx EXISTS but does not declare br_softnav: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH br_softnav. The real 2026 CWV change is measurement REACH: Chrome 151 shipped soft-navigation APIs so single-page applications can be measured per route [chrome151-notes]. Done when the conjunction of user interaction, URL change and paint emits a new time origin and re-attributes subsequent paint and interaction measurements to the new route, with browser coverage published beside every SPA vitals number.
watching br_softnav
Pros none measured yetCons behind Chrome (leads), Firefox, Safari, Edge (leads); open contract, nothing on disk yet
Post-MVP WebAssembly as the target, priced including compilationOpen — watching runtime/_hdl_build/nx_compile_wat.nx : wasm_postmvp_gc, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WATCH wasm_postmvp_gc. JetStream 3.0 shipped on 2026-03-31 and makes post-MVP WebAssembly -- exception handling, SIMD, WasmGC -- mandatory to score [jetstream3], while the W3C TR track sits at 2.0 and 3.0 is the living de-facto target [wasm-core-tr]. Done when the sovereign wasm lane covers those three with first-iteration cost measured INCLUDING compilation and instantiation, so a lazy strategy is priced honestly; six source toolchains is the anti-vacuity control. LARGE: WasmGC is a collector plus a type system.
watching wasm_postmvp_gc
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
Benchmark-version ledger with an UNCONTROLLED labelOpen — watching runtime/nx_browser_bench.nx : bb_version_ledger, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WATCH bb_version_ledger. The 2026 stack is JetStream 3.0 (2026-03-31) and Speedometer 3.1 (2025-03-31) per the vendor's own dated index [browserbench-ann]. Done when every published score carries suite name, exact suite version, that version's release date and the run date, and a score whose suite version is unknown is labelled UNCONTROLLED rather than published bare. Exceed claimed narrowly: the UNCONTROLLED label, which no rival's published score carries.
watching bb_version_ledger
Pros none measured yetCons behind Chrome, Firefox, Safari, Edge, Ladybird, Servo; open contract, nothing on disk yet
Gate on metric values, never on audit identifiersOpen — watching runtime/nx_browser_audit.nx : ba_metric_only, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WATCH ba_metric_only. Lighthouse has no successor -- it was consolidated into shared Performance Insights at 13.0 [lighthouse13], so audit identifiers may be renamed or removed underneath a consumer. Done when the sovereign audit computes its verdict from metric VALUES, which are stable and spec-defined, and treats audit-derived advice as a non-scoring worklist -- a separation the vendor itself states.
watching ba_metric_only
Pros none measured yetCons behind Chrome (leads), Edge (leads); open contract, nothing on disk yet
Interop score as the INTERSECTION with an investigation classDARK — runtime/nx_wpt_runner.nx EXISTS but does not declare wpt_interop_intersect: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH wpt_interop_intersect. Interop 2026 scores 20 focus areas plus 4 investigations on wpt.fyi [interop2026-webkit]. Done when the sovereign interop score counts only tests passing in EVERY implementation under comparison, publishes per-implementation pass rates beside it, and carries an explicit investigation class for areas where no valid pass rate can yet be computed rather than scoring them.
watching wpt_interop_intersect
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
Engine coverage and platform coverage as separate fieldsOpen — watching runtime/nx_browser_compat.nx : bcd_engine_platform, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WATCH bcd_engine_platform. WebGPU ships by default in all three engines but is NOT Baseline [webgpu-status26] -- the whole 2026 dispute is engine coverage against platform coverage collapsed into one boolean. Done when the support-status resolver keeps the two as separate fields and REFUSES to reduce them to one, naming the rule.
watching bcd_engine_platform
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
GPU feature-level ladder with a named fallback doorDARK — runtime/nx_wgsl.nx EXISTS but does not declare wg_tier_ladder: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH wg_tier_ladder. WebGPU compatibility mode shipped in Chrome 146 and reaches OpenGL ES 3.1 class hardware [webgpu146]. Done when GPU work requests the highest tier, falls back to a NAMED restricted tier, and announces which door was taken and why -- the restricted tier a first-class target with its own gate, per the estate's scale-from-a-sensor standing order.
watching wg_tier_ladder
Pros none measured yetCons behind Chrome (leads), Firefox, Safari, Edge (leads), Servo; open contract, nothing on disk yet
Energy per unit of work with host and workload in the receiptDARK — runtime/_hdl_build/nx_energy_probe.nx EXISTS but does not declare ep_per_load: something shipped at this path under another name, and this mark would read open forever. Repoint the contract to the real entry point (the plan rung AND this row) or rename the function; the flip follows on the next beat, and the comparewatch- plane row reads DARK until then. WATCH ep_per_load. There is NO standard for energy or resource measurement of page loads in 2026 [wsg-ir26]. Done when the probe pins the host, names the workload, samples platform power counters across a fixed number of loads or frames, and publishes joules per load with host and workload in the receipt, kept strictly separate from any proxy-based estimate. Exceed claimed narrowly: a counter-backed number where the field has only proxies.
watching ep_per_load
Pros none measured yetCons behind Chrome, Firefox, Safari, Edge, Servo; open contract, nothing on disk yet
Living-spec build date pinned, TR level recorded separatelyOpen — watching runtime/_hdl_build/nx_compile_wat.nx : wat_spec_pin, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. WATCH wat_spec_pin. WebAssembly 3.0 is the de-facto target while the W3C track sits at 2.0 [wasm-core-tr]. Done when the sovereign lane implements against the Community Group living spec and PINS the exact revision date it targets, recording the W3C TR level as a separate compliance fact never used as the implementation target, and gates on the JetStream 3.0 wasm workloads.
watching wat_spec_pin
Pros none measured yetCons behind Chrome (leads), Firefox (leads), Safari (leads), Edge (leads), Ladybird, Servo; open contract, nothing on disk yet
VERIFIER
the headless verifier fetches what the page declares it will fetchMeasured: pr_declared_hit exists in runtime/nx_pageref_lib.nx, verified at emit. every engine column executes the page script and so fetches the model, texture or animation the script asks for, and the field's page audit runs the page in a real engine and sees every fetched resource [lighthouse26]; the sovereign headless verifier does not run the script -- it follows the page's own meta name=nishi-<kind> declaration, fetches that asset and checks its magic bytes (NXA MAGIC-OK), so a WebGL page can no longer pass on one advert PNG; running the script itself is BR3's door, and a page that declares nothing still reads as unverified by name Adoption: LIB-WIRED importers=3 nonval=2 — fully adopted (top of its ladder).
Pros Nishi has it, measured on disk; fully adopted on the estate ladderCons none on the measured axes (rival marks are documented presence, not depth)
Rival-claim provenance. Every Yes, Best or Part mark in a rival column is a claim about someone else's product. rows with rival marks 115 · cited 34 · uncited 81. A cited row carries a reference mark that resolves to a pinned mirror (the refs gate measures that); an uncited row is an observation read and is badged in its evidence until a reference lands. The badge is the receipt, never the proof: a mark proves a mirror exists, not that the mirror supports the code.

Delivery and evidence

Inspect risks, technical debt, rendered observations, experiments and references. Read scope and limitations alongside every result.

Debt register

IdSevWhat it isUnblock
browser-build-desyncnot in this scope8nx_browser.nx is COMPILE-FAIL on buildroot since 2026-08-16, and 2026-08-18 SHARPENED it: the fault is a COMPILER PARSER BUG, not a br_comp_border source defect. REPRODUCED LOCALLY (no NAS load) by mirroring the 214-file import closure and building with the sovereign compiler -- control fails identically (br_draw not registered, error misattributed to the signature line). A plain-style rewrite of br_comp_border that removed every ampersand and bound every arithmetic subexpression did NOT clear it; a properly-closed trivial stub of br_comp_border made br_draw register but the SAME desync (kind=45 = &) reappeared inside br_draw, reading valid locals (bw2) as undefined and a correct 4-arg br_comp_bg call as wrong-arity. LOCALIZED 2026-08-18 to the border value-extraction block (the wv/hp digit scans in br_comp_border): removing that block alone makes br_draw register, keeping it in any form does not. Six source variants were built and REFUTED as the fix -- ampersand-free, every-subexpression-bound, cursor-clobber-free plain loops, a trivial closed stub, and splitting the block into a helper function (the desync just moves into the helper). Isolated probes of the same block build clean, so the trigger fires ONLY inside the full 214-file import closure. This is a compiler parser bug (a consumed closing brace under a specific statement block in a large translation unit), not a source defect, and no reasonable rewrite of br_comp_border clears it. Every NAS-side browser gate, deploy and census organ is blocked; the Windows daily driver (built from nishi_gui.nx) is unaffected.RESOLVED 2026-08-18: the desync was not in nx_parse at all -- nx_compile_x86.nx passed a fixed 262,144-token cap to lex_source and nx_tokenizer.nx's push_tok had no bound check, so every token past the cap silently overwrote the neighbouring allocation (the browser unit is ~1M tokens; the compiler's own unit sits ~5 percent under the cap, which is why only the browser fell). Fixed by DERIVATION (pool sized from post-expansion bytes; cap survives only as a floor) + a fail-loud push_tok guard; equiv net 10/10 + self-host GREEN, compiler promoted 5aaf6cd7, nx_browser BUILT and PROMOTED b2ce1f8e. The eight construct bisects failed because the defect was positional, not syntactic.
css-off-defaultnot in this scope6The daily driver still renders CSS-OFF by default (CSS_ENABLED=0) because the census pair favours OFF (426 vs 311 permil): the styled path collapses on ebay/yahoo and the OCR ruler penalises sub-14px styled text -- a measurement-philosophy gap as much as a render gap. 2026-08-26: the flip decision is now MECHANICAL rather than a reading of two numbers -- bsc_pair_verdict calls anything inside the census-variance band TIED rather than a win, so 426 versus 311 still says FAVOURS-CSS-OFF (a 115-permil gap against a 60-permil band) but a smaller future gap can no longer be spent as a flip. It reads UNOBSERVABLE today because the seeded planes carry struct readings and no OCR recall on either leg, which is exactly the honest answer for a census that has only run one axis.BR2 -- fs-normalised OCR or the struct axis weighted into the flip decision; the pair decides, never taste. And the struct axis is NOT yet weighable: on saved bytes the CSS-OFF wikipedia capture reads 916 permil deep against the CSS-ON captures 845, but those are two different saved documents rather than one document rendered twice, so it is not an A/B and must not be quoted as one. The paired run that would settle it needs OCR recall on both legs and one document per leg.
fetch-empty-sixnot in this scope6youtube, reddit, bing, instagram, duckduckgo, craigslist are FETCH-EMPTY: SPA shells that need the JS/API surface, plus a HelloRetryRequest the Chrome-JA3 hello does not yet handle (craigslist verdict=5).BR3, and the HRR path in the TLS client.
ua-sheet-site-hacksnot in this scope5COUNT CORRECTED 2026-08-26 -- this row UNDERSTATED itself by more than half. Enumerated from the UA sheet literal in nx_browser_render.nx (both the light and dark copies carry the same set), there are TEN MediaWiki-specific selectors, not four: .vector-menu-content-list, .vector-dropdown, .mw-interlanguage-selector, .wbc-editpage, .vector-toc, .vector-toc-list, .vector-toc-list-item, .vector-toc-link and .vector-page-toolbar all display:none, plus .infobox floated right at a hardcoded 300px. Nine hides and one float, all keyed on one sites class names, in the sheet every page on the web is rendered through.BR2 -- and the measurement that DECIDES retirement now exists, so this stops being a judgement call: render bench/selfpage/wiki_aug.html with the ten selectors removed and struct_diff the deep window ay=by=800 h=2000 against bench/top20/wikipedia_chrome_tall.png. The baseline is banked at 845 permil matched, dy 7, dx 80 over 84 oracle bands (2026-08-26, layout width 1024). If the reading holds, the crutches were carrying nothing and they go; if it falls, they were carrying a real layout gap and THAT gap is the rung, not the hack. Blocked only on a browser rebuild, which is the same blocker as debt browser-shot-width.
census-variancenot in this scope4The same binary read 486 (08-18) and 424-432 (07-28/29): live-page churn + oracle version + OCR variance is on the order of 60 permil, so the census cannot adjudicate a small engine change on its own.Publish every census with its row set, binary hash and oracle version; grade engine changes ONLY on saved bytes (render_ab + struct_diff); the census is the trend line.
queued-build-deploys-while-promising-otherwisenot in this scope6MEASURED 2026-08-26 on this very lane, and it is not browser-specific. /api/build target=nx_wpt_runner was REFUSED by nx_build_admit (procs_blocked 10 against a blocked_max of 8 -- an I/O storm, not CPU) and ABSORBED as deployq row BQ-nx_wpt_runner. Its refusal body promises, in these words, that the result lands in a planrun store and that you should promote DELIBERATELY AFTERWARDS. What actually happened when the row fired is in its own artifact: the queued lane builds through nx_sov_build_run, which printed DEPLOYED to serving root (twin refresh, live for the next fork). Measured either side of that fire, the served binary moved 598,416 -> 595,550 B and the engine sha16 moved 0f570c01e8ce4c68 -> 9a97da75f32c108d. So a caller who was told a build was merely QUEUED had a new binary installed on the serving root with NO nx_behaveprobe, NO nx_contentdiff and no promote decision anywhere in the path. The gap is between the promise and the mechanism, not in either alone: read on its own, the refusal text teaches every seat that a queued build is safe to leave unattended. NOTE FOR THE NEXT READER, because two seats reached different conclusions the same day: a sibling recorded the BR1 drift as already closed on the evidence that live equals staged equals source, and that reading was taken AFTER this deploy landed, when it was true. Both observations are correct about different moments; this row supplies the before-figure that the after-figure cannot contain.Either make the queued lane build-only and leave the promote to a deliberate call as the refusal already promises, or change the refusal text to say plainly that an absorbed build DEPLOYS. Whichever is chosen, the two must agree -- a message that describes a mechanism it does not have is worse than no message.
wpt-corpus-unbankednot in this scope7MEASURED 2026-08-26: the WPT corpus behind the 08-18/19 published counts was banked in NEITHER tree. bench/wpt did not exist on the NAS and held only wpt_history.tsv (370 B) on the laptop; an exhaustive WSL and laptop search returned zero WPT directories. The engine was banked and version-controlled, the YARDSTICK WAS NOT, so for eight days every published BR1 number was unreproducible by anyone including its author -- a benchmark whose fixtures are not stored is an assertion, not a measurement, and content-addressing makes this WORSE not better, because the runner refuses to re-run on a matching (engine, corpus) key and the key is computed from files that no longer exist. Two directories have since been recovered by hand and both hashed identical to their 08-18 rows, which is what proves the recovery faithful AND proves the loss was real. Still unbanked: dom_nodes (178 files) and html_syntax_fragments (13).BR21 -- one byte-preserving ingest closes both, and the recovered dom_lists plus dom_collections in bench/wpt with CORPUS.md are the pinned reference it must reproduce.
wpt-corpus-duplicated-and-spine-dir-keynot in this scope4TWO defects found together 2026-08-26, both cheap. (1) DUPLICATE CORPUS: two seats independently re-acquired dom/lists the same day into bench/wpt/dom_lists and knowledge/wpt/domlists. Proven byte-identical -- both produce corpus_sha16 54e90b086e0c6530 -- so this is genuine corroboration of fidelity from two directions, but it is also a second ruler and one of the two should be retired by adjudication, never unilaterally. The retrieval failure was mine: I searched bench/wpt (the path the harness's own history line names) and the laptop, and did not search knowledge/. (2) SPINE DIR KEY: the time spine keys a row on the directory BASENAME, so those two identical corpora recorded as dir=dom_lists and dir=domlists -- two independent trend lines over the same bytes, and the REGRESSION check compares only within a dir key, so neither run can ever see the other's history. A corpus is already identified exactly by its corpus_sha; letting a path basename shadow that hash is what splits the record.Retire one copy by adjudication and key regression on corpus_sha rather than on the basename, or state plainly that dir is a display label and not an identity.
images-lazynot in this scope4Lazy-load / srcset / data-src images are not fetched and SVG is skipped, so media-heavy pages render most figures blank even though the decoders are byte-exact.PARTLY RESOLVED 2026-08-26 by BR14, and the two halves of this row turn out to be two different defects that shared a symptom. THE SOURCE-SELECTION HALF IS FIXED AND PROVEN: nx_srcset_lib is wired into br_extract, so srcset, data-srcset, data-src, data-original and data-lazy-src resolve to a real URL instead of a data: placeholder (gate 59/59, mutation-proven, and laid 4 equals decoded 4 equals painted 4 through the real br_layout and the real paint on a fixture PNG). STILL OPEN AND NOT CLAIMED: SVG is still skipped, and that is NOT this rung -- nishi_gui load_images rejects a .svg suffix because the estate has no SVG rasterizer, which is BR17 bsvg_path; and the live wikipedia figure count was not measured because the Windows GUI binary was not rebuilt. Do not close this row on the strength of the selection fix: reading it as done would quietly claim the SVG half.
font-oracle-undeployednot in this scope4The oracle-metric font advances (hmtx-derived, Arial==Liberation Sans, measured 103/1000em drift, wikipedia to 99.4% of Chrome) EXIST in the laptop tree but font_set_adv_oracle is absent from buildroot/runtime/nx_font.nx -- a build-desync, so the compare cell honestly reads absent-from-shipping. This is the same class as the browser-build-desync: capability written and not deployed.BR2/BR4 -- deploy the font work to buildroot, or (if it depends on the browser build) land it with BR0; the watch flips on the next beat when the symbol reaches the shipping tree.
laptop-mirror-stalenot in this scope5CORRECTED 2026-08-25 -- THE DIAGNOSIS IN THIS ROW WAS WRONG IN A WAY THAT MAKES ITS OWN REMEDY DESTRUCTIVE, AND THE REMEDY WAS THE PART BEING ACTED ON. It said the laptop is STALE against buildroot and to SYNC THE CLOSURE FROM BUILDROOT. Measured on nx_http_client.nx by comparing both function sets (laptop 18 decls, NAS 34 via nx_fs outline; sizes 24,023 vs 24,092 -- only 69 bytes apart, which is what first refuted the simple missing-function story): the two files are BIDIRECTIONALLY FORKED. NAS-only: hc_set_identity hc_identity hc_put_ua hc_xhdr_has_ua hc_put_ua_x hc_put_caps nx_http_client_build_request_xhdr nx_http_client_build_request_cookie_xhdr. LAPTOP-only: nx_http_chunked_end nx_http_ci_match nx_http_client_build_request_ka nx_http_client_close nx_http_client_connect nx_http_client_get_on nx_http_client_read_one nx_http_content_length nx_http_hdr_end nx_http_hexval nx_http_is_chunked -- i.e. the whole chunked-transfer and keep-alive path. A one-way sync in EITHER direction silently DELETES eleven or eight functions. This is the same bidirectional shape already measured on nishi_gui.nx, so it is the mirror's general condition, not one file's accident. RAISED 3 -> 5 because a wrong remedy that reads as routine housekeeping is worse than a known gap.PARTLY RESOLVED 2026-08-25 -- the nx_http_client.nx instance is DONE and the Windows fetch engine SHIPS. Method, which is the reusable part: take the NAS-only functions ADDITIVELY (the laptop had none of the 8, so nothing could collide) while KEEPING the laptop-only 11; 18 -> 26 decls, nothing removed. NX_MAGIC_1024 deliberately kept under the NAS's own name -- renaming it to something better in ONE tree is how the pair forked in the first place, so a merge converges names rather than improving them. A SECOND duplicate then surfaced underneath: arena_new/arena_alloc defined in BOTH nx_runtime.nx and runtime.nx, two files that (line-endings normalised) differ by EXACTLY ONE LINE -- which syscall surface they import -- with identical 13-function sets and identical bodies. The estate had ALREADY solved that class and shipped the pattern: syscalls.nx is a 967-byte ALIAS STUB whose own comment says it splices the canonical file once and other importers dedupe to the same splice, no duplicate symbols, fixing the nxasm_main.nx duplicate-symbol error on 2026-05-19. runtime.nx was simply never given the same treatment. Converted it to that stub, which fixes all 21 `import runtime.nx` consumers globally, not just this closure. RESULT: nishi_fetch.exe rebuilt 1,054,208 B (1a9e0757, was ae9decdb from 07-29), smoke_exit=0 fetched_bytes=149307, and the GUI renders end-to-end through it. STILL OPEN: the fork is the MIRROR'S GENERAL CONDITION, not one file's -- nishi_gui.nx is bidirectionally forked too (NAS has the W_WriteFile const, laptop has the headless/ppm lane). Every future sync needs the same function-set diff first; there is still no instrument that produces one, and that missing organ is the real remedy.
linux-browser-second-render-corenot in this scope7MEASURED 2026-09-02: nx_browser.nx declares its own br_layout, br_draw_fb and br_shot_png and paints text with br_paint_text2x (the 8x8 bitmap at 2x); it does not import nx_browser_render.nx. The board's one-render-core row is TRUE of the Windows and NishiOS builds and FALSE of the promoted Linux binary, the NAS shot verb and the roster gate subject -- so the NAS census, the layoutsweep and nx_browser_gate row 12 all grade a renderer the typography work never touches. Two render cores is the duplicate-ruler defect at the centre of the board, and it hid in plain sight because both cores share every function name.BR29 -- compose the shared core into nx_browser.nx; nx_browser_gate row 12 must stay GREEN through the change and the NAS shot verb must paint the same pixels nishi.exe does.
nas-font-fixturenot in this scope4The NAS serving root has no font file the engine can read: web_assets/fonts/ is absent and web_assets/nishi_sans.ttf (the house font nx_ttf_fontlib_gate loads first) is absent too, only web_assets/nishi.ttf exists -- so the gate exited RED at its first tooth on the one host that publishes, and could never reach the professional-face teeth. 2026-09-02: the gate now SKIPs the house half via gv_need instead of exiting, the Liberation tarball is mirrored and pinned (knowledge/fetched/cmp_browser_liberation-fonts-ttf-2.1.5.tar.gz, sha 11387cec, 4392960 B), and nx_untar (gunzip ISIZE-derived, ustar, write boundary enforced) lands it under knowledge/fonts/ where the gate and the render instrument look second.run nx_untar on the mirrored tarball into knowledge/fonts/ and nx_font_ttf_emit for the house font, then wire nx_ttf_fontlib_gate into typography.gates and browser.gates as executed evidence.
leading-space-at-line-startnot in this scope4SEEN IN THE RENDER 2026-09-02 (stroke font and face alike): a run that wraps after an inline link begins the next line with a leading space -- the Functionality paragraph on the wikipedia fixture starts its second line with ' tiles, and pausing'. CSS white-space normal removes a collapsible space at the start of a line box; ours paints it, one glyph advance of dx on every such line, which struct_diff mean_dx carries.the wrap scan (font_vec_next_break_fs) and the paint pen both skip a collapsible space at a line start, proven by a fixture whose second line begins with a space in source and a tooth on the first glyph x of that line.

Risk register

RiskLikelihood x impactMitigation
A third-party engine, codec, shaper or toolchain enters the build or run pathpossible x catastrophic (operator 2026-09-02: never a third party in the build path, estate-wide license clean, sovereign from the first byte up and from the electronics up)The font lane is the template: the TrueType engine, the browser, every gate and the Windows PE are NishiLang through nx_cc, nxasm and our own PE writer; the Liberation faces are SIL-OFL DATA read by our engine with the OFL text shipped beside them (web_assets/fonts/ on the laptop, knowledge/fonts/ on the NAS); a Windows system face is a runtime fallback the user already owns, never a dependency; the industry instruments on the measurement rows are comparators run OUTSIDE, only their numbers and content-pinned mirrors enter. nx_selfsuff is the ruler; a twin that links, forks or shells a third-party binary has imported the oracle, not built a twin.

Release history and work log

The worked plan, on the board. Every leg appends what it measured, landed, retracted, learned and left queued, per rung, so a crash leaves the next seat a ledger here rather than a transcript to mine. Kinds: measure, land, retract, lesson, queue. Newest last.
WhenRungKindEntry
2026-09-02BR26lessonThe read engine nx_ttf_fontlib hard-coded unitsPerEm 1000 and ascender 760 (our house font); every professional face would have rasterized at half size with halved advances and nothing would have failed loudly. A metric that can be READ from the file must never be assumed.
2026-09-02BR26landnx_ttf_fontlib rewritten (upem, hhea, cmap glyphIdArray path, composites, negative lsb, ink past advance, kern table) + nx_ttf_fontlib_gate 23/23 bite-proven (planted upem=1000 -> RED T11/T13/T15; dead kern -> RED T14), both trees hash-verified 6b2aec85; the hand-baked oracle table retired after T13 proved it equal to hmtx for 95/95 chars.
2026-09-02BR26measurebench/selfpage/wiki_aug.html vs bench/top20/wikipedia_chrome_tall.png, nx_browser_render_shot 1024 then 1024 face, nx_struct_diff deep 800/800/2000: stroke 880 permil dy 9 dx 45 page_h 7027; face 892 dy 9 dx 53 page_h 7048 (Chrome 7582); first screen 578 both, dx 185 to 155.
2026-09-02BR26landFace hook = ONE ruler: nx_font font_set_face feeds font_adv_em, pair kern in font_vec_text_w_fs and font_vec_next_break_fs, render copies delegate; bpv_cell adopts tf_glyph records; nx_inline_vec_measure_gate 8/8; nishi.exe rebuilt (bdedbb5a) with Liberation loaded; NAS sources written under CAS.
2026-09-02BR29lessonnx_browser.nx (the promoted Linux binary, the NAS shot verb, the roster gate subject) declares its OWN br_layout/br_draw_fb/br_shot_png and paints 8x8 bitmap text -- a second render core sharing every function name with the shared one, so the NAS census is structurally blind to typography work. Debt 1788353483.
2026-09-02BR26lessonnx_research_fetch inflated a gzip PAYLOAD as transport encoding: the Liberation tarball mirror is a 4,392,960 B ustar with a provenance row reading complete against a 2,385,008 B upstream. A mirror whose bytes are not the URL's bytes has an unverifiable pin. Debt 1788353998; nx_untar detects gzip by magic, never by name.
2026-09-02BR26landnx_untar (new, LIVE) landed all 12 Liberation faces + OFL LICENSE under knowledge/fonts/ on the NAS; Regular hashes 76d04c18 = the laptop pin; nx_ttf_fontlib_gate on the NAS: Liberation half 12/12 PASS.
2026-09-02BR26lessonA gv_need on a witness structurally absent on the publishing host (a Windows system font on the NAS) makes a gate SKIP forever there: 12/12 teeth passed and the verdict still read SKIP. Such witnesses are OPTIONAL and announced.
2026-09-02BR27landEight-slot face registry (Liberation Sans+Serif R/B/I/BI) selected per run by ONE resolver nx_layout_face_for_box (font-weight, font-style, font-family, font shorthand, inherited, memoised) called by layout before measuring and by paint via br_face_resolve; UA h1-h6 bold; measure gate 11/11; nishi.exe 3e4a83dd; NAS layout via 3 anchored edits (137,559 B exceeds the 131,072 B per-argument cap).
2026-09-02BR27measureSame instrument, full family: deep 892 permil dy 9 dx 49, page_h 7090 (Chrome 7582), first screen 578 dx 155; crops: serif headings, bold runs, italic hatnote.
2026-09-02BR27retractA published correction said the fixture carried no heading-weight rule; it carries .mw-heading,h1,h2{font-weight:bold} then .mw-heading1,h1{font-weight:normal} (425,326 B -- a cut listing column read 5,326). Withdrawn on the measure gate's T15/T17.
2026-09-02BR2landCascade root cause: rh_cascade scored comma-list specificity over the whole list, so a class member leaked onto its type members and the earlier bold rule outranked the later normal one. Fixed by per-matching-member specificity (rh_match_complex_spec); measure gate T11-T17, 18/18; NAS render_html patched by 4 anchored edits (39,652 B); nishi.exe 8b8b5952.
2026-09-02BR2measureSame instrument after the cascade fix: first screen 578 to 684 permil (13 of 19 bands) dx 155 to 138; deep 892 to 880 dx 49 to 39 dy 9 to 8; page_h 7004; the title paints serif regular as Chrome does.
2026-09-02BR27lessonA correction is a hypothesis too: run the discriminating tooth before publishing it. The wrong correction stood on the board for under an hour only because the gate was already in the path.
2026-09-02BR26queueBehind nx_build_admit (I/O storm): nx_ttf_fontlib_gate (T21 optional witness), nx_font_full (house font), nx_inline_vec_measure_gate, nx_browser_render_shot. Recipe: nx_filecopy buildroot/_build/<t>.sov.elf <t>.sov.elf.new overwrite, nx_filehash, /api/promote expect_sha256; then run the gate on the NAS and add its rows to typography.gates and browser.gates.
2026-09-02BR31queueThe emitter grew a work-log renderer (plan_pass in nx_swcompare_lib, rows of this kind rendered per rung); nx_swcompare_matrix and nx_swcompare_sota rebuilds are queued behind admission. Recipe after they land: promote both with expect_sha256, then nx_restage both so buildroot/_offc (the copy the publisher forks) matches, then nishi_compare_regen; until then these rows are on the board as data the old emitter skips.
2026-09-02BR30measurenx_inline_vec_measure_gate 20/20 (T18: a covered U+00E9 keeps its UTF-8 bytes and reserves the face advance; T19: uncovered folds to e and the widths differ), nx_ttf_fontlib_gate 23/23; bench/selfpage/unicode_probe.html renders accented Latin, Greek, Cyrillic, bold and italic from real outlines through render_shot face (20 boxes)
2026-09-02BR30landLaptop tree: nx_ttf_fontlib tf_glyph_cp and tf_raster; nx_font font_next_cp (composes nx_utf8) and a codepoint-indexed face table FS_FACE_CPS=8704 (U+0000..U+21FF); nx_browser_render br_fold_text (fold only what the face lacks, both stages), br_text_cp (the contract symbol), atlas cells by codepoint, br_face_register covering the cmap; nx_html_entities regenerated per length (253 names). NAS: fontlib, measure gate and entities pushed whole under CAS; font and render pushed as hunk ladders
2026-09-02BR30lessonA heredoc-written patch collapsed backslash escapes and wrote a raw NUL into source; the compiler blamed the auto-appended crash handler (lang LN24) and a 253-name if-chain overflowed the per-function block pool (lang LN25). Construct high bytes in fixtures, write patch scripts with an exact-byte tool, split big tables by key
2026-09-02BR30queueUnmapped codepoints (CJK, Arabic, Devanagari) vanish instead of drawing the face notdef box; BR39 owns the notdef and the HTML5 entity superset; scripts beyond U+21FF need faces plus shaping (BR4). NAS rebuilds of the six queued targets fire behind admission; stage and promote each when they land
2026-09-02BR39landFirst half SHIPPED on the laptop: an unmapped codepoint under a face (beyond the U+21FF table, or with no cmap entry above it) draws the face's notdef box with gid 0's advance instead of vanishing -- slot 0 of the advance table is the notdef advance, font_face_has covers every beyond-table codepoint when it is set, the atlas keys those cells on codepoint 0 (tf_glyph_notdef). Measure gate 22/22 with T20 (bytes kept, notdef advance reserved) and T21 (no notdef advance folds away); the probe page shows three boxes for the CJK run. nishi.exe rebuilt 725,504 B 1A814622. The HTML5 entity superset stays open
2026-09-02BR30measureClosure ruler for the ship lane: 36 files in the browser build closure, 31 identical across trees, 5 diverged BOTH ways (nx_render_html, nx_glyph_stroke, nx_layout_block, nx_layout_from_dom, nx_png_write). Each side held real work the other lacked: the laptop had the dark-scheme media guard, real-deflate PNGs, the disc rounding fix and the image-reflow code; the NAS had the magic-const hoists and a void-tag rewrite. The union was computed per file, the laptop rebuilt from it (gates 22/22 and 23/23, probe renders) and the unions pushed to the NAS as hunk ladders verified to reproduce each union
2026-09-02BR30lessonTwo seats fixing one tree from two roots produce a fork where BOTH sides are right; adopting either copy wholesale deletes the other seat's fix. The union has to be computed per file and pushed as anchored hunks -- a closure ruler that names the diverged files is what makes the ship lane honest
2026-09-02BR30measureExecutable evidence on the NAS: nx_inline_vec_measure_gate laptop-built from the byte-equal tree (closure 38/38), promoted 25903ccb through the stage slot, run on the NAS 22/22 GREEN (T18 covered U+00E9 keeps bytes and the face advance, T20 beyond-table codepoint reserves the notdef advance). Row added to browser.gates. nx_browser_render_shot ships next
2026-09-02BR30landnx_browser_render_shot laptop-built from the byte-equal tree, staged through the door (574,680 B, 12 chunks) and promoted 1084adaa; the NAS now serves the same Unicode render core the daily driver uses. Regen #6 published 205 pages GREEN with forkfresh 4/4 after the byte-copy restage
2026-09-02BR39landSecond half on the laptop: the decoder table is the FULL HTML5 named character reference set, 2,125 names generated per length and per first byte (largest bucket 40 names, no function near the block pool), 93 two-codepoint references served by nx_html_entity_second so the public one-codepoint contract (nx_js_eval, nx_html_to_text) is untouched; the living standard wins the two disagreements (lang, rang moved to U+27E8/U+27E9). The decoder's name-length bound is DERIVED from the table (ENT_NAME_MAX=31; the old bound of 12 passed every longer reference through as literal text -- measured on hookleftarrow and NotEqualTilde). Notdef refined: an uncovered non-Latin codepoint inside the table draws the box too (Latin still folds to its base letter). Probe page: every HTML5 name decodes, every uncovered symbol boxes. nishi.exe rebuilt C4384123. The 554 KB table exceeds the per-argument write cap, so it ships to the NAS through the door under EC26
2026-09-02BR39lessonA search bound written as a constant beside a growing table is a second copy of the table's shape: the entity decoder looked 12 bytes ahead for the semicolon while the spec's longest name is 31, so the very names the new table added were the ones it could never reach. Derive the bound from the data it bounds
2026-09-02BR39queueThe HTML5 table (554,696 B) is on BOTH trees (NAS f88507fa via the EC26 door); the render tool rebuilt from the byte-equal closure (36/36) is 1,387,902 B sha 4983bfef on the laptop and NOT yet on the NAS: its upload (29 chunks) was stopped mid-run while the array storm holds, and the NAS still serves 1084adaa (pre-HTML5). Recipe when load allows: nx_content_put_client.py _build/nx_browser_render_shot.sov.elf nx_browser_render_shot.sov.elf.new contentput.cap, then /api/promote with expect_sha256=4983bfef...; regen #7 (job 1788383462) was still CLAIMED at 30 min
2026-09-02BR31landTHE WORKED PLAN IS ON THE BOARD: regen #7 (the first run of the generators carrying the log-row renderer) published sites/nishifamily/compare/browser/index.html with the Work log section (h2 id=worklog, one row per log entry, newest last, each linking its rung) -- 195 pages published; the five thin domains refused by the liar-kill kept their previous pages. Every plan with log rows now renders its ledger; a crash leaves the next seat this page, not a transcript
2026-09-02BR31landTHE WORKED PLAN IS ON THE BOARD: regen #7 (the first run of the generators carrying the log-row renderer) published sites/nishifamily/compare/browser/index.html with the Work log section (h2 id=worklog, one row per log entry, newest last, each linking its rung) -- 195 pages published; the five thin domains refused by the liar-kill kept their previous pages. Every plan with log rows now renders its ledger; a crash leaves the next seat this page, not a transcript

Risk register

RiskLikelihood x impactMitigation
A compiler fix for BR0 miscompiles the estatepossible x catastrophicThe compiler ships only through its canaried lane: nx_cc_equiv_staged over the pre-declared roster + nx_contentdiff GREEN before promote; if equivalence cannot be proven, the source-shape rewrite ships with the reproducer banked as a bite and the compiler defect stays filed.
A WPT number gets read as marketinglikely x mediumPublish pass/total PER DIRECTORY with the failing-fixture control shown; never a single percent; the slice is pre-declared before the run.
Chasing the live census instead of structural exactnesslikely x highThe ratchet metric is struct_diff on saved bytes (render_ab); the live census is the trend line and its variance is a named debt on this page.
Browser-sized builds hammer the boxlikely x mediumA browser build emits ~9 MB of assembly; bisect and build on the laptop toolchain, NAS builds only through nx_build_admit, and never retry a 503 in a loop.

Release history continued

WhenRungKindEntry
2026-09-04M7landSEPTEMBER 2026 SOTA ADMITTED FOR THE WEB PLATFORM AS COMPARE DATA, JOINING THE MEASUREMENT SECTION THIS BOARD ALREADY CARRIED AS THE ESTATE'S TEMPLATE: 11 new pinned refs, 17 rows, 6 pre-declared contracts. The sweep's browser domain returned 18 findings and its adversarial verifier confirmed 17, dropping 1 UNDATED; one confirmation was itself a REFUTATION -- there is NO new Core Web Vitals metric and no tightened LCP threshold in 2026 [webvitals26], a circulating secondary claim the primary page does not support, which is why the first contract admitted here is a metric-provenance gate with a DRIFTED state rather than a new metric. DEDUPLICATED BY URL BEFORE FETCHING, NOT BY KEY: four of the sweep's sources were already pinned on this board and are cited by their existing keys -- ladybird-apr26, webvitals26, interop2026-webkit, webgpu-status26 -- and one existing key, chrome151, names a DIFFERENT url than the release notes, so the notes were admitted under their own slug rather than colliding. Eleven new sources fetched at status=200, one of them 938 bytes, which the fetch lane's stub-refusal history made suspect; read in full it is a genuine static index with zero script tags and five dated links, small because it IS small, and it was admitted -- and it also shows Speedometer 3.1 dated 2025-03-31 and says nothing about MotionMark, so the row it backs claims only what the page says. THE FINDINGS THAT CHANGE THE LANE: Ladybird crossed 2,088,677 passing WPT subtests [ladybird-aug26] and passes 97.8 percent of test262 as 52,045 of 53,207 [ladybird-apr26] -- the buildable unit is the reporting discipline, numerator and denominator and date as three fields so a percentage cannot hide a shrinking denominator; Servo's multithreaded canvas reports plus 55 percent frame rate AND minus 42 percent power per frame together [servo-jul26], the pair this board now requires of every rendering optimization; JetStream 3.0 makes post-MVP WebAssembly mandatory to score [jetstream3] while the W3C TR track sits at 2.0 under a living 3.0 [wasm-core-tr]; Lighthouse has no successor [lighthouse13], so the sovereign audit gates on metric VALUES never audit identifiers; WebGPU ships everywhere but is not Baseline [webgpu-status26], which is engine coverage and platform coverage collapsed into one boolean -- admitted as a resolver that refuses to collapse them; and there is NO standard for page-load energy measurement [wsg-ir26], where the estate's counter-backed probe is a narrow exceed over a field of proxies. Six contracts BR41 to BR46 under milestone M7 with ver 7.0, each done-rule pre-declared with a control. All three appends verified single by row-unique counts on the NAS. ⚠RECORDED, NOT FIXED, BECAUSE IT IS NOT MINE: this plan already carries TWO ms rows named M6 -- the measurement lab and a native-emission migration -- both at ver 6.0; a milestone id declared twice is a coin flip wearing a schema for whichever reader takes first-match, the same class organ_kind.conf was found to have, and it predates this admission. The owning seat should renumber one.
2026-09-05BR40measurehead-mode census for the character lane, 2026-09-05: nx_browser runs page JS through nx_js_eval but has no WebGL or canvas context (txtscan count=0 for WebGL in nx_browser.nx and for getContext in nx_js_eval.nx), so /world/rigview and the DanceXR WebGL web player (an itch.io iframe running the LW build, mirrored as charsim ref dancexr-play) both render only in a third-party browser; nx_page_verify reads rigview GREEN having checked one PNG and not the script-fetched NXA -- the world door BR40 is what the character boards (charsim R36, koikatsu KK18) wait on
2026-09-05BR47measurefound while using the estate as a third party on DanceXR (2026-09-05): nx_page_verify read /world/rigview GREEN with checked=1, the one asset an advert PNG, while the page's whole subject is a 1.7 MB NXA fetched by script from the meta nishi-nxa declaration the page already carries -- a vacuous head-mode verdict for every WebGL page in the estate; the vocabulary owner nx_pageref_lib now carries pr_declared_hit and the verifier follows it (source landed, build through /api/build under admission)
2026-09-05BR47lessonboard hygiene seen while adding this rung: browser.plan carries ms
2026-09-05BR47measureTHE GATE BIT BEFORE THE PROMOTE (2026-09-05): nx_pageref_gate rebuilt with the declared-asset teeth (BUILT 42024 B sha 4b00a33d) and nx_behaveprobe live-vs-staged read live_rc=0 other_rc=1 -- the staged gate was RED on the first cut of pr_declared_hit, which walked back to the tag opener and exited at offset 0 WITHOUT reading it, so a tag opening the buffer (every fixture, any page fragment) could never be a meta; on a real page the doctype always precedes the tag, so production would have hidden the defect and only the fixture exposed it; fixed by testing the byte before the floor check, gate and verifier rebuild follow; the earlier 617488 B page_verify build carries the unfixed lib and is NOT promoted
2026-09-05BR47landDECLARED-ASSET VERIFICATION LIVE (2026-09-05): nx_pageref_gate rebuilt through the SOVEREIGN lane (36299 B sha b03a564c -- the mgmt lane had returned the pre-fix bytes 4b00a33d for the changed source), staged by nx_filecopy, nx_behaveprobe live-vs-staged read live_rc=0 other_rc=0 with 2476 B of teeth output against 1952 (the declared-asset teeth and both negative controls executed and passed), PROMOTED with prev banked and offc-installed; nx_page_verify built from the fixed lib (617496 B sha 5fafc976, contentdiff strict superset, 861 gained runs) PROMOTED with prev banked; the acceptance run on /world/rigview follows -- done-rule checked=2, declared-assets=1, NXA MAGIC-OK
2026-09-05BR47measureACCEPTANCE RUN, FIRST PASS (2026-09-05): the promoted verifier on /world/rigview reads checked=2 declared-assets=1 -- it now fetches /world/ref9d.nxa from the page's meta declaration where the old binary fetched one advert PNG -- and the verdict moved from a vacuous GREEN to UNOBSERVABLE unreadable-assets=1: the 1.7 MB rig came back status=0 bytes=-4 at fetch stage 4 with the TLS 1.2 fallback reporting t12-incomplete-flight (no SH/SKE inside the read budget) while the box sat in an I/O storm (procs_blocked 5-11); the advert PNG on the same page decoded fine; so the half of the done-rule that is the verifier's (follow the declaration, count it, refuse to acquit what it could not read) holds, and the half that is the fetch lane's (read a 1.7 MB asset through the sovereign edge under load) is the next re-run on a calm box -- MAGIC-OK unwitnessed
2026-09-05BR47retractTHIS RUNG WAS FILED AS BR41 AND COLLIDED (2026-09-05): browser.plan already carried rung BR41 (every performance bar carries its primary source and date) in the M7 block, and the live nx_goalmap v1.2 refused the whole board by name with duplicate-rung-id BR41 on its first 8-board run -- the detector built this morning against gameengine's GE50 pair fired on the seat that built it; renumbered to BR47 (BR40-BR46 taken), the ms M8 member and every log row this seat wrote moved with it, the other lane's BR41 untouched; the lesson is the one the goalmap already encodes: a rung id is claimed by a count over the board, never by the last id a seat happened to read
2026-09-05BR47measureTHE MAPPER NAMED THE MISSING CELL (2026-09-05): after the renumber, nx_goalmap v1.2 mapped browser without refusal (48 rungs, 15 matched, BR47 scored 4 with 6 log rows) and reported BR47 status=UNMAPPED -- the rung named pr_declared_hit but browser.matrix carried no row for it, so the published page could never flip; one VERIFIER watch row appended (organ runtime/nx_pageref_lib.nx, six engine columns all 1 because every engine executes the script and fetches the asset, grounds [lighthouse26]); re-mapped: status=PRESENT, matrix_rows 125 -> 126; the lesson is the goalmap's own -- a rung without a matrix row is a promise the hive cannot measure
2026-09-05BR47measureSECOND ACCEPTANCE RUN, BOX AT GRANT (2026-09-05, load1 22.7 with run queue 4/8 and D-state 4/8): nx_page_verify https://nishifamily.com/world/rigview -> page 200 49751 B, declared-assets=1 (the meta nishi-model row resolved to /world/ref9d.nxa), the asset's TLS 1.3 handshake completed (sh+kex 27 ms, fin 1 ms) but NO transfer line followed, the fetch ladder fell to a TLS 1.2 flight that read no ServerHello inside its budget (t12 rc=-3), and the asset was reported status=0 bytes=-4 UNOBSERVABLE (fetch stage 4); the advert PNG decoded 728x90; VERDICT=UNOBSERVABLE unreadable-assets=1 -- the third state fired correctly and MAGIC-OK stays UNWITNESSED; the discriminating fact is that the declared asset is a multi-megabyte rig and the only asset the verifier had ever read was a 3.7 KB PNG, so the per-asset read budget is the suspect, diagnosis in the next row
2026-09-05BR47measureROOT CAUSE OF THE MAGIC-OK MISS, MEASURED (2026-09-05): the declared asset /world/ref9d.nxa is 10,758,232 B (nx_fs size, exact=1) against the verifier's fixed PV_CAP of 8,388,608 B, so pv_check_asset's nx_https_fetch_follow returns -NX_FF_GET and the asset reads UNOBSERVABLE -- the EXACT seed-san.vrm class (10,917,800 B) the source already names in a comment; the third state fired correctly, this is not a lie, it is a fixed buffer cap that must be guessed, which the estate's own law forbids. A browser-grade verifier that only needs the MAGIC BYTES (NXANIM01, 8 bytes) must NOT read the whole 10 MB body -- the SOTA fix is a head-range read (nx_https_fetch_range, first 64 KB), which fits every asset, is resource-excellent, and is what a real engine does for media heads; this completes BR47's MAGIC-OK half
2026-09-05BR47queueHEAD-RANGE VERIFICATION SOURCE-LANDED (2026-09-05): nx_page_verify.nx 46847 -> 49455 B in four sequential CAS-verified edits -- PV_HEAD_CAP 65536 (the fetch spine's own padding unit NX_MAGIC_65536, not a fresh number), PV_HTTP_PARTIAL 206 and PV_HTTP_OK 200 named, static PV_HEADVER, and pv_check_asset's n<0 branch now re-fetches the asset head through nx_https_fetch_range and counts an NXANIM01 head as NXA MAGIC-OK VERIFIED-BY-HEAD (separate axis, printed verified-by-head=), a head without known magic stays UNOBSERVABLE, a head that cannot be read keeps the old line; recipe to finish: nx_sov_build_run nx_page_verify --build-only --debug, nx_filecopy the _build artifact to nx_page_verify.sov.elf.new, nx_contentdiff live vs staged (expect only gains), nx_behaveprobe, /api/promote by sha, nx_offc_install, then nx_page_verify https://nishifamily.com/world/rigview must read verified-by-head=1 unobservable=0 VERDICT=GREEN -- the before/after on the live rig IS the bite pair (UNOBSERVABLE measured twice before the edit)
2026-09-05BR47measureHEAD-RANGE RETRY LIVE, AND IT MOVED THE BLOCKER ONE LAYER DOWN (2026-09-05): nx_page_verify rebuilt (623400 B sha c47b0baa, contentdiff strict superset +4, behaveprobe live rc=3 vs staged rc=3 with 174 more bytes), PROMOTED prev=1, offc; live run on /world/rigview: the retry fired, its TLS 1.3 handshake completed on the pinned edge (sh+kex 20 ms fin 1 ms), and the GET stage failed with NO status ( head-range status=0 bytes=-4), so the page still reads verified-by-head=0 unobservable=1 VERDICT=UNOBSERVABLE; a status of 0 after a good handshake means no HTTP response was parsed, which is the overflow signature -- the edge answered the Range request with the whole 10 MB body and the spine's completing reader fails on overflow instead of handing back a prefix; the verifier lost nothing and gained one honest measurement per asset, but MAGIC-OK on a rig over 8 MB now needs either an edge that honours Range on static assets (206 + Content-Range) or a bounded-prefix reader in the fetch spine, and neither exists today -- declared as the successor rung, not folded into BR47
2026-09-05BR49queueHANDED TO THE TRAFFIC OWNER (2026-09-05): PM intake 1788634653 carries the measurement (Range ignored by the static door, TLS handshake good, reader overflow with no status), the incumbent to compose (nx_media_server's Accept-Ranges + Content-Range emission, nx_audio_serve_gate's 4-11 range proof shape, Content-Range PRESENT in 26 sites by nx_absent) and the done-rule; a front-door daemon deploy through the health-checked /api/deploy is an operator decision, so this lane ships the seat half (BR48) instead
2026-09-05BR48queueBOUNDED-PREFIX READER SOURCE-LANDED (2026-09-05): nx_https_get_complete.nx -- nx_https_req_complete now delegates to _gc_req_core(prefix_ok=0), new nx_https_req_prefix delegates with prefix_ok=1, and the record that crosses the cap is copied up to the cap, sealed TRUNCATED (announced) and returned instead of NX_HTTPS_GC_BUF_OVERFLOW; nx_https_fetch_follow.nx -- nx_https_fetch_range delegates to _ff_range_core(prefix_ok=0), new nx_https_fetch_head delegates with 1, same signature; nx_page_verify's head-range retry now calls nx_https_fetch_head; every existing caller keeps byte-identical behaviour by construction (additive extraction, the shape this file family already used on 2026-07-04); recipe: sovereign debug build of nx_page_verify compiles the closure, contentdiff + behaveprobe on a completing consumer (nx_https_get) prove the old path unchanged, promote by sha, live rigview must read verified-by-head=1
2026-09-05BR48landBOUNDED-PREFIX READER LIVE AND WITNESSED ON THE RIG (2026-09-05): nx_page_verify rebuilt through the sovereign lane (624592 B sha 3384269e), contentdiff lost exactly one run -- the nx_https_fetch_range symbol name the verifier no longer references, lost_other=0 -- and gained 4, behaveprobe live rc=3 vs staged rc=0, PROMOTED with allow_capability_loss=yes prev=1, offc; live run on https://nishifamily.com/world/rigview: the retry's prefix reader announced nishi-xfer TRUNCATED expected=10759112 got=139264 short=10619848, head-range status=200 bytes=65536 (the static door ignored Range and answered the whole body -- BR49's measurement, now from the 200 itself), NXA MAGIC-OK VERIFIED-BY-HEAD, checked=2 declared-assets=1 unobservable=0 verified-by-head=1 broken=0 VERDICT=GREEN; the page (49751 B cl-stop) and the advert PNG (3708 B DECODE-OK) went through the completing path with prefix_ok=0 and read identically to the previous binary, the in-run control for the extraction; the neg-control in BR48's done-rule (a head with no known magic stays UNOBSERVABLE) is exercised by the code path but not yet by a gate fixture -- owed, named here
2026-09-05BR47landMAGIC-OK HALF WITNESSED (2026-09-05): with BR48 live the declared rig on /world/rigview reads NXA MAGIC-OK VERIFIED-BY-HEAD and the page VERDICT=GREEN, the before/after on the live subject being UNOBSERVABLE (measured three times: pre-edit, first head-range cut, and the fetch_range cut) -> GREEN; BR47's done-rule is met on the mechanical side: the verifier fetches what the page declares (declared-assets=1) and proves it by its bytes; referee grade + operator ACCEPT owed
2026-09-05BR48measureTHE COMPLETING PATH IS PROVEN UNCHANGED, NOT ASSUMED (2026-09-05): nx_https_truncation_gate -- the spine's own gate for the refuse-on-overflow law -- rebuilt through the sovereign lane on the new _gc_req_core (35251 B sha b6b8e852, up from 31411 B), behaveprobe live-vs-staged: live_rc=0 other_rc=0 1590 B both sides first_diff_off=-1 IDENTICAL STRONG; promoted so the served gate matches its source; together with the rigview run's page and PNG fetches this is two independent witnesses that prefix_ok=0 callers kept byte-identical behaviour, while the prefix reader announced its truncation on the only call that asked for it
2026-09-05BR48queueTHE BITE PAIR SOURCE-LANDED IN THE VERIFIER'S OWN GATE (2026-09-05): nx_page_verify_gate.nx 16266 -> 22885 B -- at setup it writes two SPARSE fixtures under sites/nishifamily/render3d/ at the live rig's measured size (PVG_BIGHEAD_BYTES 10758232, lseek END check so a roster run never rewrites them): negctl_bighead_magic.nxa (head NXANIM01) and negctl_bighead_nomagic.nxa (zero head), plus two pages declaring them by meta name=nishi-model; teeth T15 fixture-reached-the-condition (both on disk at the declared size), T16 POSITIVE CONTROL (magic page GREEN with VERIFIED-BY-HEAD and verified-by-head=1), T17 neg-control (no-magic twin exits 3 with the no-known-magic line and verified-by-head=0), T18 never-RED-on-nomagic-head, T19 gv_bite pair; first sovereign build refused by admission (run queue 17/8), paced re-issue; recipe: build, stage, behaveprobe (other_rc must be 0 with 19/19), promote by sha, offc, then the roster carries it
2026-09-05BR48retractTHE GATE I PROMOTED CRASHES, AND THE PROBE THAT CLEARED IT MEASURED THE WRONG RUN (2026-09-05): nx_page_verify_gate 4e88f8d4 (44700 B) was promoted on contentdiff GREEN strict-superset + behaveprobe live_rc=0 other_rc=0, then the promoted binary died SIGSEGV after T8 at 0x405531 touching 0x40b09a -- 154 bytes PAST the mapped end of its own image (offset 45210, page end 45056) -- before any new tooth printed; the fixture directory held none of the bighead files, so the probe's rc=0 with 300 FEWER output bytes than live cannot have been a run of this binary's main to completion (the discrepancy was visible in the probe receipt and I read it as unexplained instead of as disqualifying); MECHANISM: pvg_has exits its inner loop with k = k + 1000 and then re-reads lit[k] -- the cursor-sentinel over-read nx_srclint hunts -- latent in the LIVE gate for weeks and armed the moment new literals moved one tooth string within 1000 bytes of the image end; FIX: pvg_has bounded by the literal's measured length with break, source-landed; the lesson is the estate's own: a probe whose output SHRINKS after teeth were ADDED is a RED, not a curiosity -- promote refused until the tooth count is read
2026-09-05BR48landBITE PAIR LIVE ON THE EDGE, 19/19 (2026-09-05): nx_page_verify_gate fb6105b8 (51736 B, debug flavour, pvg_has rewritten with a bounded loop) PROMOTED prev=1 and offc-installed, replacing the crashing 4e88f8d4; behaveprobe live_rc=0 (the crasher, misreported -- debt filed on nx_behaveprobe) other_rc=0 other_bytes=4088 vs 2675, and the INDEPENDENT witness that the setup ran was the fixture pair appearing on disk at exactly 10,758,232 B each; the promoted run via nx_job_run: T15 fixture-reached PASS, bighead-magic exit=0 T16 PASS (VERIFIED-BY-HEAD, verified-by-head=1, GREEN), bighead-nomagic exit=3 T17 PASS (verified-by-head=0, no-known-magic line), T18 never-RED PASS, T19 gv_bite BITE-PROVEN, NX-PAGE-VERIFY-GATE passed 19/19 verdict=GREEN; BR48's done-rule is met both directions on permanent published fixtures the gate maintains itself; follow-up source-landed (fixture paths joined onto the subject's dirname via PVG_ROOTP/pvg_abs so a probe forked from buildroot cannot write the fixture where no edge serves it) awaiting one more build and promote; referee grade + operator ACCEPT owed
2026-09-05BR48landGATE PATHS ANCHORED ON THE SUBJECT, LIVE 19/19 (2026-09-05): nx_page_verify_gate 4351bd6a (52608 B, debug) -- fixture paths joined onto pvg_dirname(elf) through PVG_ROOTP/pvg_abs so a roster beat, a probe or a seat forking from any cwd writes and reads the fixtures where the edge serves them -- contentdiff strict superset (+1 symbol), PROMOTED prev=1, offc-installed; promoted run via nx_job_run: T15 found both fixtures through the derived path without rewriting them, T16 PASS, T17 PASS, T18 PASS, T19 BITE-PROVEN, NX-PAGE-VERIFY-GATE passed 19/19 verdict=GREEN; BR47 and BR48 are complete on the mechanical side with permanent bite pairs on the live edge; open on this thread: BR49 (traffic owner, intake 1788634653), debt 1788635942 (nx_behaveprobe reports rc=0 for a signal-killed subject), referee grade + operator ACCEPT rows
2026-09-05BR48retractTHE PROBE DEFECT WAS A STALE BINARY, NOT A MISSING RULE (2026-09-05): debt 1788635942 framed nx_behaveprobe as mapping a signal to rc=0; reading the source shows the estate fixed exactly that on 2026-08-25 (wait_status_rc: a signal death reads 128+signal, the crash guard exits 139, nx_waitrc_gate proves both) and tr_run_capture already composes it -- but the SERVED probe lacked the tool_run diagnostic strings added 2026-08-28 (contentdiff: candidate gained NX-EXEC-FAILED and the crash-guard lines, 21 runs, nothing lost), so it predated the rule; rebuilt through the sovereign lane (26274 B sha 0dd7d287), PROMOTED prev=1, offc-installed; the lane-flavour size drop (29237 -> 26274) is the measured 6-17 percent band, not a loss; PROOF OWED and being built: nx_sigfixture, a registered subject that dies by a named signal on itself (SIGTERM for a true signal death, exit <code> as the control arm), so any live ruler can be asked how it reads a signal death instead of trusting its source; first build refused by admission, paced
2026-09-05BR48measureTHE PROBE IS PROVEN, NOT ASSERTED (2026-09-05): nx_sigfixture built (16316 B sha 357085ce), PROMOTED, REGISTERED (callable), offc, twin staged; nx_behaveprobe nx_sigfixture 15 -> live_rc=143 other_rc=143 (a true SIGTERM death read as 128+15 on both sides; the only byte difference is the printed pid), nx_behaveprobe nx_sigfixture exit 7 -> 7/7 IDENTICAL (the control arm); debt 1788635942 closed with a superseding correction record naming the false mechanism (a mapping defect) and the true one (a served ruler older than the estate's own 2026-08-25 rule); lesson: a stale copy of a correct instrument is indistinguishable from a broken one, and the only cure that survives is a referee that forks the LIVE ruler against a subject that dies by signal -- owed as nx_behaveprobe_gate, spend-gated next
2026-09-05BR48landTHE PROBE THREAD IS CLOSED WITH A REFEREE (2026-09-05): the ruler defect this rung surfaced is now proven fixed and permanently watched -- nx_sigfixture + nx_behaveprobe self mode + nx_behaveprobe_gate 11/11 GREEN on the deployed binaries (details and the retraction on engineshift ES25); every later promote on this board is judged by a probe that names a signal death instead of hiding it
2026-09-12BR6operatoroperator-unstall-20260912: Resume Nishi Browser alongside Beach, Video and Search through existing MCP/API owners. Current installed nx_browser shot of published browser board succeeds (job 1789237041: html=538954B boxes=12362 computed_decls=54682 page_h=211792 vw=1000); this proves headless layout, not navigation or served interaction. Existing BR29 remains source-grounded: nx_browser owns br_layout/br_draw_fb/br_shot_png and imports no nx_browser_render; shot paint width remains 1000 independently of requested layout width. Acceptance: callable navigation, input, screenshot and retained-evidence workflow on the shared render core; same viewport and source bytes, per-engine structural comparison, visible nishifamily.com interaction, dated release record. Installed/private/deployed/user-verified states must remain distinct. Reuse BR6/BR29 owners, no duplicate browser service.
On these two registers. Rows are declared in the domain's plan file and carry the debt id, which is the join key back to the sovereign debt plane — that plane, not this page, is the authority on state. Reconciling them automatically (the regen reading the plane and refreshing these rows) is a named, owed rung; until it lands, treat an id here as a pointer to look up, not a status to trust.
Honest verdict. Real evidence-backed exceed on sovereignty + integrity + reach; parity of KIND on the static content web with a measured 486 permil OCR reading recall vs Chrome (records: x 965, linkedin 958, example 947, wikipedia 877, hackernews 744); admitted BEHIND the incumbents AND behind Ladybird/Servo on the standards yardstick (WPT RUNS since 2026-08-18; the per-directory counts on the WPT row are the measured distance), JS depth, video, tabs, devtools, extensions, accessibility, process-sandbox, WebDriver BiDi, HTTP/2-3, Interop-2026 CSS and WebGPU -- honest, not overall victory. BR0 (the shipping-tree build) closed 2026-08-18 and BR1 (the WPT harness) landed 2026-08-18/19; ver 0.1 is done and the operator ratchet (BR2 structural exactness) is the front of the roadmap. 2026-09-02: real font files render through the sovereign TrueType engine (BR26 -- Liberation Sans outlines, hmtx advances and kern pairs through the ONE measure ruler), the daily driver nishi.exe carries it, and the same measurement names the next three rungs: faces by family and weight (BR27), one render core so the NAS census can see it (BR29), Unicode beyond ASCII (BR30).

Person · product · place — not yet measured for this domain

Every compare carries this layer. Declare knowledge/compare/browser.ppp (rows surface|nishi or c1..c4|label|url|connect naming OUR live surface and each rival's front door), run nx_ppp_probe domain browser, and this section fills itself on the next beat: the same ruler on both sides — privacy and CX (third-party hosts, tracker classes, cookies, security headers), design and longevity (design hygiene, computed WCAG contrast, render-blocking resources, unsized media, script weight, theme and motion queries), findability (landmarks, skip link, on-site search, breadcrumb, headings, internal links).

Mined from the field — review and competitive intelligence proposed to this board

Rows written by nx_intelmine_propose from nx_reviewmine_lib signals (Steam reviews under the exceeds / meets / mixed / does-not-meet rubric, the installed-title census) and routed here by capability_map.conf. DEFECT names a rival failing that a rung here answers; DEMANDED a capability buyers ask for and do not get; WE-DO-BETTER an exceed the reviews corroborate; THEY-DO-WELL a bar this board must meet; SHIPS a rival capability to match. A proposal is a lead, never a rung — it closes only when a rung with a gate lands, and nothing in this band changes a measured cell.

SignalKindTermTitleProposed rungEvidence
SHIPSengineChromiumDanceXR 1905510Web-runtime titles: DanceXR ships a Chromium runtime -- the Nishi browser as a game runtime doorfingerprint=installed-tree

proposals 1|malformed rows 0 (counted, never rendered: a row that is not prop| with 10 fields)|read-capped 0

The field — discovered, not chosen

Rows written by nx_field_discover from browser.seeds: the industry's own lists (Wikipedia wikitext, GitHub topics, awesome lists) read mechanically, every candidate counted across seeds. The matrix columns above are a SEAT'S pick; this band is the population they were picked from, and the stats line measures one against the other. A rival here is a lead, never a verdict — it earns a column when its capabilities are read and pinned.

field|seeds=4|scanned=4|fetched=4|reused=0|failed=0|named=4|candidates=4|mentions=4|capped=0 rival|Chrome|1|1|col0-chrome|https://developer.chrome.com/docs/lighthouse/overview|named rival|Firefox|1|1|col1-firefox|https://endoflife.date/firefox|named rival|Ladybird|1|1|col4-ladybird|https://ladybird.org/|named rival|Servo|1|1|col5-servo|https://servo.org/wpt/|named
RankRivalSeedsMentionsFirst seedKindLink
1Chrome11col0-chromenamedhttps://developer.chrome.com/docs/lighthouse/overview
2Firefox11col1-firefoxnamedhttps://endoflife.date/firefox
3Ladybird11col4-ladybirdnamedhttps://ladybird.org/
4Servo11col5-servonamedhttps://servo.org/wpt/

field candidates 4|shown 4 of 4|matrix columns in the field 4 of 6|discovered rivals with no column 0|malformed rows 0 (counted, never rendered)|read-capped 0

Gaps from the record — what the estate does that no board carries

The record census (nx_goalmap record) reads the invoked-tool population and every plan queue row and files each organ or directive that NO matrix, plan or gates row names. A row here is a callout the boards missed: adjudicate it onto a board or declare it infrastructure. Census state BLIND (age 74262 s), sources read 4 of 7 declared — a BLIND census is a FLOOR: unread sources can only add rows.

kindnameboardsourceevidence
directivenx_font_fullbrowserplan-queuerung=BR26
directivenx_browser_render_shotbrowserplan-queuerung=BR26
directivenx_audio_serve_gatebrowserplan-queuerung=BR49
directivenx_https_req_prefixbrowserplan-queuerung=BR48
directivenx_https_fetch_headbrowserplan-queuerung=BR48

rows shown 5|this board's directives 5|estate-wide un-boarded organs 492 (listed in full on /compare/ecosystem)|census rows 611|malformed 0 (counted, never rendered)

References

Beyond a link list. Every reference below resolves twice — the publisher's copy and, where banked, the estate's own non-rottable library mirror with a content pin — and carries its evidence class plus the exact claim on this page it grounds. Keyed marks like [key] in the matrix notes jump here. A dash means honestly absent, never assumed.
  1. [lighthouse26] Chrome for Developers, Lighthouse overview: an open-source automated tool for improving the quality of web pages -- audits for performance, accessibility, progressive web apps, SEO and more, run against any web page, public or requiring authentication. publisher · read in our library knowledge/fetched/cmp_browser_lighthouse-overview.html · pin ha3a5e253981908f1abd751e81b8f5c3c0420c9cb221e475c8d23e094d686aef8 · accessed 2026-09-02 · vendor-docGrounds: The field's page-quality audit (performance, a11y, SEO) that the sovereign page audit rows grade against: nx_uiq_perf is its static Core-Web-Vitals half, the runtime half is a watch.
  2. [webpagetest26] WebPageTest (catchpoint/WebPageTest on GitHub): the open-source web performance testing platform -- waterfalls, filmstrips, Core Web Vitals, real browsers at real connection profiles. publisher · read in our library knowledge/fetched/cmp_browser_webpagetest-readme.html · pin h8c324d0177ee6ada6ae444582f2c4b3b46dffeed0219090d6e40b30fbfddc0b6 · accessed 2026-09-02 · source-readGrounds: The synthetic-lab model (filmstrip + waterfall + connection profiles) the browser lab rung composes into ONE sovereign run over a URL or saved bytes.
  3. [speedometer3] BrowserBench Speedometer 3.0, About: a benchmark for web application responsiveness, jointly developed by Apple, Google, Mozilla and Microsoft, measuring simulated user interactions on representative web workloads. publisher · read in our library knowledge/fetched/cmp_browser_speedometer3-about.html · pin h3938fdf99faa55c0ad180622492c275f5c33752d27094b831ebaf095e1fa6f16 · accessed 2026-09-02 · published-standardGrounds: The cross-vendor responsiveness yardstick every incumbent publishes; our JS lane cannot yet run it (BR3), so the benchmark row is a watch with the dependency named.
  4. [perfetto26] Perfetto documentation: system-wide tracing and profiling for Linux, Android and Chrome -- CPU scheduling, memory, power rails and counters, with trace processor SQL for analysis. publisher · read in our library knowledge/fetched/cmp_browser_perfetto-docs.html · pin h35e5bf275d07712071f83a6e4883b588f0e6fd216f4eb1a80a9d68d26540dcca · accessed 2026-09-02 · vendor-docGrounds: The model for the sovereign trace and resource meter: per-frame timing, memory and power on ONE time spine; the estate already has nx_trace_emit (spans), nx_frame_budget and nx_energy_probe as the pieces.
  5. [webvitals26] web.dev, Web Vitals: the Core Web Vitals -- Largest Contentful Paint, Interaction to Next Paint and Cumulative Layout Shift -- with their thresholds, measured in the field and in the lab. publisher · read in our library knowledge/fetched/cmp_browser_web-vitals.html · pin h392e9890514a2fb1324180d47b6e1fdb652490f8db5a9ae678969c0b6b920739 · accessed 2026-09-02 · vendor-docGrounds: Names the three user-facing metrics the sovereign render must report on its OWN paint timeline (LCP and CLS are computable from our layout and paint passes without any rival present).
  6. [textrendertests26] unicode-org text-rendering-tests (GitHub): a test suite for text rendering engines -- shaping and positioning cases across scripts with expected SVG output, run by HarfBuzz, CoreText, DirectWrite and others. publisher · read in our library knowledge/fetched/cmp_browser_text-rendering-tests.html · pin h908bed781bb57d6fc64a4d587d1f7c86ba2052228ff4e978a60b0f2879edecb9 · accessed 2026-09-02 · datasetGrounds: The third-party shaping oracle for BR4 and typography R3: a sovereign shaper is graded against these expected outputs, never against itself.
  7. [mediacap26] W3C Media Capabilities specification (editor's draft): decodingInfo and encodingInfo -- whether a given codec configuration is supported, smooth and power-efficient on the device. publisher · read in our library knowledge/fetched/cmp_browser_media-capabilities-spec.html · pin hd8de115cd21548f78670e6a63f1b8a60692e99d75f31f2609b0e4a4881552e41 · accessed 2026-09-02 · published-standardGrounds: The API shape for the sovereign codec-capability matrix: supported, smooth and power-efficient per configuration, measured by running our own decoders, not declared.
  8. [test262-26] tc39/test262 (GitHub): the official ECMAScript conformance test suite. publisher · read in our library knowledge/fetched/cmp_browser_test262-readme.html · pin h2125a3fdbc1554da6eb44c320222fd9dc259e2a3a4c124bd49605ebbea746407 · accessed 2026-09-02 · datasetGrounds: The JS yardstick named in rung BR3 (Ladybird publishes 97.8 percent against it); the sovereign runner row grades js_eval on a pre-declared slice of it.
  9. [mdnbcd26] mdn/browser-compat-data (GitHub): the machine-readable browser compatibility data behind MDN and caniuse-style tables, per feature per browser version. publisher · read in our library knowledge/fetched/cmp_browser_mdn-bcd-readme.html · pin hd0f9e98584399bfe34c4149a899f91e876c0b0b4f161790e7a62202c4ec1548c · accessed 2026-09-02 · datasetGrounds: The compat ledger the sovereign column should be emitted INTO (one row per feature, measured by a gate, never hand-graded) so the estate's support matrix is comparable to the incumbents feature-for-feature.
  10. [interop2026] web-platform-tests Interop 2026: README (20 focus areas + 4 investigation efforts: accessibility testing, JPEG XL, mobile testing, WebVTT); dashboard at wpt.fyi/interop-2026. publisher · read in our library knowledge/fetched/cmp_browser_interop2026.html · pin hc68777bfc65a3b73f9eb65063bfd41ab4815547e643da8f2f0990458bf933f33 · accessed 2026-08-18 · published-standardGrounds: THE 2026 yardstick the four vendors converge on: the WPT row's bar, the Interop-2026 CSS row and rung BR10 grade against these directories -- and the honest admission that we have never run any of it.
  11. [interop2026-webkit] WebKit blog: Announcing Interop 2026 (published 2026-02-12) -- twenty focus areas, fifteen brand new and five carried over from Interop 2025; carry-over scores quoted on the page: Navigation API 92.3 percent, view transitions 90.8 percent overall (Safari 99.2), WebRTC 91.6 percent. publisher · read in our library knowledge/fetched/cmp_browser_interop2026_webkit.html · pin hbc3d9ee371e1c4076db2d9b8656becaec32cac54b35e7ea96262eb3c9e5dbf76 · accessed 2026-08-18 · vendor-docGrounds: Grounds the claim that the incumbents' 2026 work is convergence on shared focus areas (carry-overs still in the low-90s percent), not new engines -- so the parity target for the content web is stable.
  12. [ladybird26] Ladybird (independent from-scratch browser and engine, 501(c)(3) non-profit): first Alpha for Linux and macOS targeted for 2026; Rust adopted as the C++ successor language with subsystems ported incrementally; July 2026 newsletter blurb lists private browsing and browser profiles; Changing How We Develop Ladybird (2026-06-05) changed how code enters the project ahead of shipping to real users. publisher · read in our library knowledge/fetched/cmp_browser_ladybird26.html · pin ha968ef3739623f923f551f6f4208da12185182563604453688685346323ac135 · accessed 2026-08-18 · vendor-docGrounds: The from-scratch peer class this page now judges beside: the Ladybird column codes come from these reads; a sovereign engine that publishes no WPT number is behind this peer on the one axis peers can be compared on (the number itself is in the ladybird-apr26 row).
  13. [ladybird-apr26] Ladybird. This Month in Ladybird -- April 2026: WPT score went from 2,003,537 to 2,067,263 (headline gain of 63,726 subtests, of which 53,207 came from the upstream import of test262, where Ladybird passes 52,045 -- a 97.8 percent pass rate); Rust now mandatory in the build. publisher · read in our library knowledge/fetched/cmp_browser_ladybird_apr26.html · pin h342410a39c479d7f2fc818c12d6b49a2c0c53a0f0219e9120478708b1dd15bdb · accessed 2026-08-18 · vendor-docGrounds: The WPT-row bar for the independent-engine peer class (2.07M passing subtests) is quoted from this page, not from recall; it is the number rung BR1 has to publish beside.
  14. [servo03] Servo (Linux Foundation Europe): WPT Pass Rates dashboard tracking focus areas and the whole CSS and WPT suites, with per-test drill-down on wpt.fyi; Servo is a web rendering engine written in Rust with WebGL and WebGPU support (page description). publisher · read in our library knowledge/fetched/cmp_browser_servo_wpt.html · pin h00b094dfdf540cc1304a4bbfdcbdbd72113cb942a37b94d23e3812c80ef5ffbb · accessed 2026-08-18 · vendor-docGrounds: The second independent-engine column: Servo's WPT dashboard is the model for rung BR1 (publish per-directory pass counts on the compare page); its wgpu-backed WebGPU is why the canvas-GPU row codes Servo Yes (the gpuweb wiki lists it as in progress behind the dom.webgpu.enabled pref).
  15. [chrome151] Google Chrome release history (endoflife.date): Chrome 151 stable 28 Jul 2026, 150 on 30 Jun, 149 on 02 Jun, 148 on 05 May, 147 on 07 Apr 2026 -- four-week cadence. publisher · read in our library knowledge/fetched/cmp_browser_chrome_eol.html · pin h8da2ee3e05b4c04f7fca6cd6b4af3e0c8cad52c8000e8441f3e39cfb6a60788d · accessed 2026-08-18 · vendor-docGrounds: Names the oracle version behind the 2026-08-18 census (Chrome 151 headless) so the census row set and its oracle can be re-run against the same version, and dates the incumbent column.
  16. [firefox153] Mozilla Firefox release history (endoflife.date): Firefox 153 stable 21 Jul 2026 (153.0.4 on 11 Aug), 152 on 16 Jun, 151 on 18 May, 150 on 21 Apr 2026; 153 is the current ESR. publisher · read in our library knowledge/fetched/cmp_browser_firefox_eol.html · pin h72a0eaa4512d887faa88a4327f87cb477e756aeadcd1e44373a10fbe75ae80c5 · accessed 2026-08-18 · vendor-docGrounds: Dates the Firefox column and the Waterfox/Firefox-family oracle the ratchet still owes (Firefox is the third oracle the operator named on 2026-07-28).
  17. [bidi26] Firefox Developer Experience: CDP retirement in Firefox -- the CDP implementation removed in Firefox Nightly 141, so 141 is the first version where CDP cannot be used and WebDriver BiDi is the supported remote protocol; Puppeteer switched to BiDi for Firefox and removed its Firefox CDP support; Selenium APIs relying on CDP migrated to BiDi; Cypress drives Firefox over BiDi by default. publisher · read in our library knowledge/fetched/cmp_browser_bidi26.html · pin ha4a90b66248bc708bfdb7fe2b759bb4a7ff0343485be365f7a209d172ae0165b · accessed 2026-08-18 · vendor-docGrounds: Why the automation row is now named WebDriver BiDi rather than CDP, and why rung BR6 targets BiDi: the standard moved and the independent engines run their WPT through WebDriver servers.
  18. [webgpu-status26] W3C GPU for the Web CG: WebGPU implementation status (living wiki page) -- Chrome 113 on Windows and Mac (121 on Android 12+), Firefox 141 on Windows and 147 on all macOS versions with Linux enabled in Nightly and expected to ship in 2026, Safari enabled by default in macOS Tahoe 26, iOS 26, iPadOS 26 and visionOS 26; Servo in progress behind a pref. publisher · read in our library knowledge/fetched/cmp_browser_webgpu_status.html · pin h13147bcf021b934d075cde4594ee9f208e5188b38d49fa81c4fe5e05a376c013 · accessed 2026-08-18 · vendor-docGrounds: Grounds the canvas-GPU row's incumbent codes (all four Best) and the honest Nishi absence: we EMIT WebGL2/WebGPU pages for other browsers but render no canvas GPU ourselves (rung BR13).
  19. [browsershare26] Axis Intelligence Research. Browser Market Share 2026: Concentration, Engines, and the Numbers Panels Disagree On (published 2026-08-12, Statcounter Global Stats retrieved that day): worldwide all-device July 2026 -- Chrome 68.22 percent, Safari 16.47, Edge 5.37, Firefox 3.34; AI-first browsers (ChatGPT Atlas, launched 2025-10-21, and Perplexity's Comet, both Chromium-based) appear in none of the seven Statcounter panels, so the combined AI-browser category is bounded by the 2.66 percent unreported residual. publisher · read in our library knowledge/fetched/cmp_browser_browsershare26.html · pin h2b09f1b72a4c06ae88df50caa4d46db5d4799af84c7ee19b5851bd90d9142f00 · accessed 2026-08-18 · mirrored-indexGrounds: Grounds the agent-driven-browsing row: in-browser assistants are an incumbent feature and the AI-browser class is real but marginal in share (bounded, not measured), so our external agent drive lane is coded present-not-best and no in-browser assistant is claimed.
  20. [otel-cicd26] OpenTelemetry CI/CD Observability SIG: semantic conventions for pipelines and tests (cicd.* / test.* attribute families, Semantic Conventions v1.27+). publisher · accessed 2026-08-19 · published-standardGrounds: The wpt time-spine row schema is MAPPED onto these conventions (documented in nx_wpt_runner's header) so an OTLP exporter is a future formatter, not a redesign -- the observability lane speaks the field's language from day one.
  21. [develocity-pts26] Gradle Develocity 2026.1: Predictive Test Selection (probabilistic, calibrated to catch over 99 percent of non-flaky failures) and Flaky Test Detection (fail+pass within one execution marks FLAKY; flaky tests always selected). publisher · accessed 2026-08-19 · vendor-docGrounds: The August-2026 test-intelligence bar the runner is measured against -- and the honest exceed: their selection is a calibrated BET, ours is content-addressed EXACT (same engine sha + corpus sha cannot differ) because the engine is bit-deterministic; their flakiness is managed, ours is REFUTED (--twice: any divergence is a real bug, exit 5).
  22. [wptfyi-runs26] web-platform-tests wpt.fyi: run history keyed by browser + version + revision over time, diffable across runs. publisher · accessed 2026-08-19 · vendor-docGrounds: The domain-native precedent for results-documented-against-time: our wpt_history.tsv rows (epoch, dir, engine sha, corpus sha, partition, duration, verdict) are the same model held sovereign, with regression exit codes a beat can alarm on.
  23. [ladybird-aug26] Ladybird newsletter 2026-08-31: 2,088,677 passing WPT subtests, StyleBench 116.3, core rendering moved to Rust, first alpha still targeted for 2026. publisher · read in our library knowledge/fetched/cmp_browser_ladybird20260831.html · pin hf1a73460763f83f604894bad27a4220670dc81730e938e10816d5852945cbf79 · accessed 2026-09-04 · vendor-docGrounds: WPT conformance delta series with manifest-diff attribution
  24. [ladybird-devmodel26] Ladybird: Changing how we develop Ladybird (2026-06-05) -- public pull requests no longer accepted. publisher · read in our library knowledge/fetched/cmp_browser_ladybirdchanginghowwedev.html · pin h6b59ef263b380351b790f593498191ca0f75e19f2e0d9646a83938faf8bb6af7 · accessed 2026-09-04 · vendor-docGrounds: Contribution-provenance gate
  25. [servo-jul26] Servo blog 2026-08-31, July in Servo: v0.5.0, multithreaded 2D canvas at plus 55 percent frame rate and minus 42 percent power per frame. publisher · read in our library knowledge/fetched/cmp_browser_servojulyinservo.html · pin hd722378151e5349e1fb28d3cd496bfbb963ffb1f7cc6a74896ba9fb84879e6c5 · accessed 2026-09-04 · vendor-docGrounds: Throughput and energy reported as a pair
  26. [servo-jan26] Servo blog 2026-02-28, January in Servo: first engine to fully implement ML-KEM and ML-DSA in WebCrypto. publisher · read in our library knowledge/fetched/cmp_browser_servojanuaryinservo.html · pin hd2e9a5c1f88bbe7e9f7b4ad0928c7c32ffc82c09688eb7f98f62af7fdba1d620 · accessed 2026-09-04 · vendor-docGrounds: Post-quantum WebCrypto behind NIST known-answer tests
  27. [chrome151-notes] Chrome 151 release notes: soft-navigation APIs for single-page applications ship. publisher · read in our library knowledge/fetched/cmp_browser_developer151.html · pin h5c7ff57469ec788cd1951b263ec654bc554bc5ef7dd2f0965823b7c4b64df6b4 · accessed 2026-09-04 · vendor-docGrounds: Soft-navigation attributor for SPA vitals
  28. [jetstream3] BrowserBench: Announcing JetStream 3.0 (2026-03-31) -- post-MVP WebAssembly mandatory to score. publisher · read in our library knowledge/fetched/cmp_browser_browserbenchjetstream3.html · pin h1b66ef83c2b797124883703b3d4e8733d336a9fac3334ae742eae20b932cd413 · accessed 2026-09-04 · benchmarkGrounds: Post-MVP WebAssembly as the target, priced including compilation
  29. [lighthouse13] Chrome for Developers: Lighthouse 13.0 -- audits consolidated into shared Performance Insights, no successor tool. publisher · read in our library knowledge/fetched/cmp_browser_developerlighthouse130.html · pin h5a353a37edb1a593d3b0ed0b05542b789b7f55c1930afd1f76438160dd4067cd · accessed 2026-09-04 · vendor-docGrounds: Gate on metric values, never on audit identifiers
  30. [webgpu146] Chrome for Developers: New in WebGPU 146 -- compatibility mode reaches OpenGL ES 3.1 class hardware. publisher · read in our library knowledge/fetched/cmp_browser_developernewinwebgpu146.html · pin h25cc929d951ad6bcce1093bf8b062185110f8a8f5c60689020a3f55159222560 · accessed 2026-09-04 · vendor-docGrounds: GPU feature-level ladder with a named fallback door
  31. [wsg-ir26] W3C Draft Note, Web Sustainability Guidelines implementation report, 2026-08-20 -- no standard yet for page-load energy measurement. publisher · read in our library knowledge/fetched/cmp_browser_w3dnotewsgir202608.html · pin h85afc9fa03a92721760a739ef92b4f04e4c6325acdef1d5be83365c6f14265a6 · accessed 2026-09-04 · published-standardGrounds: Energy per unit of work with host and workload in the receipt
  32. [wasm-core-tr] W3C WebAssembly Core Specification, all versions -- the TR track sits at 2.0 while 3.0 is the living de-facto target. publisher · read in our library knowledge/fetched/cmp_browser_w3all.html · pin hd73bf555333fc18ac0a78d9864068810a8e6b137a05c2009d31d32eee1e646a3 · accessed 2026-09-04 · published-standardGrounds: Living-spec build date pinned, TR level recorded separately
  33. [browserbench-ann] BrowserBench announcements index: JetStream 3.0 (2026-03-31), Speedometer 3.1 (2025-03-31), Speedometer 3.0 (2024-03-11). publisher · read in our library knowledge/fetched/cmp_browser_browserbenchannouncements.html · pin h3e3d00f605b066d23d6325edf92cb3b9d353c054b8c90ae720e44203d463559c · accessed 2026-09-04 · mirrored-indexGrounds: Benchmark-version ledger with an UNCONTROLLED label

generated by nx_swcompare_matrix (sovereign NishiLang organ) from knowledge/compare/browser.matrix · source checks show implementation presence; runtime and user-outcome evidence are reported separately · JavaScript supports page controls