{"v":1,"run":"browser-top20-2026-07-16","workstream":"S21 experiential / S18 graphics — browser chrome-parity ratchet","title":"Nishi browser vs Chrome — the TOP-20 real-site suite (first honest baseline)","date":"2026-07-16","verdict":"The benchmark is now 20 real sites we do not control (operator: one self-authored page proves nothing), re-runnable as one command (bench/nx_top20_parity.ps1) — and its FIRST HONEST LESSON is about the metric itself: the eyeball pass caught Nishi rendering google.com as a BLANK page that still scored 97.3% coarse, because google is mostly white space and a blank white page matches white space. Region-mean parity is GAMEABLE BY EMPTINESS on sparse pages — so google/reddit/ebay/example's high scores are VACUOUS until an ink-weight check lands (the next instrument rung: compare content-pixel mass per side; a side with a fraction of the oracle's ink cannot score parity). What stands after that discipline: wikipedia 90.6% coarse and hackernews 88.5% are REAL (dense text pages, visually confirmed); stackoverflow 81.7 / netflix 80.2 / linkedin 79.6 render real content with real gaps. The suite still earned its keep twice over: run 1 caught the canvas background-propagation bug (a banner div painted google's whole canvas dark; fixed to spec root-chain html->body, gate + /experiential void re-verified), and run 2's eyeball caught the blank-parity metric hole. Named gaps, each a ladder rung: google renders blank despite fetching (layout has 3378px of content — paint/visibility diagnosis queued); 5 sites FETCH-EMPTY (youtube/facebook/instagram/duckduckgo/craigslist); bing + github 0.0% (background images + attribute-selector themes); x/reddit tiny JS shells; amazon blocks headless Chrome (no oracle); ebay's oracle was a bot page.","artifacts":[{"file":"comp_wikipedia.png","caption":"BEST REAL RENDER — Wikipedia: 90.6% coarse. Body text, links, infobox image all render; the skin sidebar column collapses; height 115% (margin-collapse)."},{"file":"comp_hackernews.png","caption":"hackernews: every story, link, point-count and comment-count renders — but the TABLE MODEL scatters them (ranks isolated, subtexts shoved right by flex-ified table rows). (A human first read the dark region as a wrong canvas; the organ eye measured canvas-delta 23 and was right — it is the post-content area, not the page canvas.)"},{"file":"comp_stackoverflow.png","caption":"stackoverflow: real content in readable flow (questions, sidebar text, survey banner) — but the multi-column layout linearizes, AND raw HTML attributes leak into painted text (the visible `data-s-popover-placement=...` string) — a tokenizer bug with a clean reproducer."},{"file":"comp_linkedin.png","caption":"linkedin: text content renders fully and readably (headings, links, agreements — even menu items Chrome hides). Missing: the two-column split, the illustration (SVG), button shapes. Content parity without layout parity."},{"file":"comp_x.png","caption":"x.com: same class as linkedin — the login shell's full text renders in clean linear flow (97% of the words are there); no giant X logo (SVG), no buttons, no two-column split."},{"file":"comp_bing.png","caption":"bing — THE COLUMN-COLLAPSE SPECIMEN: Nishi paints a one-character-per-line vertical strip on gray where Chrome shows a full-bleed photo. Two rungs in one image: a container laid out at near-zero width (every line breaks after one glyph), and background-image unpainted."},{"file":"comp_netflix.png","caption":"netflix: the same 1-char vertical collapse (\"MLB Home Run Derby 2026\" spelled downward) on the correctly-propagated near-black canvas; the hero collage is background imagery we don't paint."},{"file":"comp_yahoo.png","caption":"yahoo: the closest to a real portal render — nav, links, Trending, headlines AND photos paint — but images overlap text (no float/position), an ad column collapses to 2-chars-per-line, and the card grid linearizes."},{"file":"comp_google.png","caption":"google — Chrome (left) vs Nishi (right, BLANK): fetched, laid out 3378px, painted nothing visible — and STILL scored 97.3% coarse because google is mostly white space. The image that exposed the metric hole (ink-weight rung) and, earlier, the canvas-propagation bug. Two bugs from one site."},{"file":"comp_reddit.png","caption":"reddit — BOTH SIDES JUNK, honestly labeled: Chrome's oracle is itself a bot-block page (\"You've been blocked by network security\"), Nishi shows one orange image block. The 92.1% score is two near-empty pages agreeing; the CHROME-BLOCKED class exists for exactly this."},{"file":"comp_github.png","caption":"github: 0.0% coarse, honestly — its dark theme lives behind attribute selectors (html[data-color-mode]) and hero imagery, neither matched nor painted yet."},{"file":"comp_ebay.png","caption":"ebay: Chrome got a 354px bot-challenge stub while Nishi fetched real content — the oracle failed, not the engine; scored ratio 347% is meaningless and flagged."},{"file":"comp_example.png","caption":"example.com control: renders correctly; the tall-window Chrome capture centers content vertically so the naive tight score is a capture artifact, noted."}],"metrics":[{"name":"Suite verdict (renderable 13 of 20, ink-disciplined)","value":"REAL parity: wikipedia 90.6 · hackernews 88.5 · stackoverflow 81.7 · netflix 80.2 · linkedin 79.6 · bbc 71.3","note":"VACUOUS (blank/sparse-matching, pending ink-weight): google 97.3 · ebay 99.4 · example 98.9 · reddit 92.1 — high numbers on near-empty renders count for NOTHING"},{"name":"Metric hole found by the eyeball pass","value":"blank Nishi google scored 97.3% coarse","note":"region-mean parity is gameable by emptiness on sparse pages -> NEXT instrument rung: ink-weight (content-pixel mass per side; ink ratio << oracle => BLANK-NISHI class, no parity awarded)"},{"name":"google renders BLANK despite fetching","value":"nishi_h=3378 laid out; zero visible paint","note":"paint/visibility diagnosis = the top engine rung from this run (text color? visibility rules? fold?)"},{"name":"The suite caught a real engine bug on run 1","value":"google/reddit coarse 0.0% -> 97.3%/92.1%","note":"canvas bg propagated from ANY first non-white block (a banner div); spec fix = root chain only (html->body); /experiential void re-verified dark (luma 17) after the fix"},{"name":"FETCH-EMPTY (5)","value":"youtube, facebook, instagram, duckduckgo, craigslist","note":"nishi_fetch returns nothing — the fetch-reliability rung (TLS fingerprinting / redirect chains / HTTP-2-only to diagnose)"},{"name":"Oracle failures (2)","value":"amazon (Chrome headless blocked), ebay (Chrome got a 354px bot page while Nishi got real content)","note":"the CHROME-BLOCKED class exists so two blank pages can never again score 100% parity (run 1 did exactly that)"},{"name":"Named paint gaps from the suite","value":"background-image (bing full-bleed photo), attribute-selector themes (github data-color-mode), JS shells (x, reddit skeletons)","note":"each a ladder rung with its measuring site"},{"name":"Height ratios (renderable)","value":"wikipedia 115 · bbc 112 · netflix 120 · hackernews 134 · stackoverflow 88 · linkedin 77 · github 51 · google 42","note":"over-100s = margin-collapse rung; under-50s = JS-populated content we honestly don't have"},{"name":"THE ORGAN EYE (nx_parity_judge) — the suite now sees these failures WITHOUT a human","value":"gate GREEN 6/6 against the human truth set from this very run","note":"autonomous classes per pair: BLANK-NISHI (google, netflix, ebay) · NO-ORACLE-CONTENT (bing) · CANVAS-OFF (github) · SPARSE-NISHI (linkedin, x, stackoverflow) · CONTENT-OK (wikipedia, hackernews, yahoo, example, reddit)"},{"name":"The organ out-judged the human once","value":"hackernews \"dark canvas\" human read -> canvas-delta 23 (fine)","note":"the dark region is the post-content area, not the page canvas — the eyeball was wrong, the measurement was right; caption corrected"},{"name":"Common failures, machine-countable now","value":"1 blank-paint class (google) · 1-char column collapse (bing/netflix strips) · canvas themes (github) · decoration/column loss (linkedin/x/so) · table scatter (HN) · attr-leak (SO) · overlap (yahoo/wiki)","note":"judge v2 rungs: attr-leak + overlap need a layout-tree dump from the shot lane (pixel-only can't see them)"},{"name":"READING RECALL — the number that ends \"it looks fine\" (OCR tier: the same neutral instrument reads BOTH renders; sovereign scorer = truth-token recall, permille)","value":"suite mean ~384 of 1000: the Nishi browser preserves ~38 percent of what a Chrome reader can read","note":"per site: x 848 · example 789 (even the trivial control loses 21 percent to font quality) · linkedin 772 · wikipedia 766 (our best real page: \"bad but legible\") · bbc 543 · hackernews 400 (the table scatter halves readability) · stackoverflow 116 (the CONTENT-OK class hid an 88 percent reading loss) · github 108 · yahoo 84 · google/reddit/netflix/ebay 0 (blank) — instrument bench/nx_ocr_read.ps1 (Windows.Media.Ocr, typography-arc pattern) + organ _offc/nx_ocr_recall.elf (identity self-test 1000)"},{"name":"Precision tells its own story","value":"wikipedia precision 507 vs recall 766","note":"we paint MORE tokens than Chrome shows (duplicated/garbled runs + menu text Chrome hides) — badly-placed text is as measurable as missing text"},{"name":"Repeatability","value":"ONE command: bench/nx_top20_parity.ps1 — self-judging + read-scored","note":"Chrome oracle + Nishi record + sovereign instruments + nx_parity_judge class + OCR reading-recall per site; results committed with the run"}]}
