Nishi Browser
Target (state of the art): Visual output indistinguishable from Chrome on the TOP-20 REAL SITES (google/youtube/wikipedia/reddit/amazon/github/... — the standing suite in bench/nx_top20_parity.ps1, re-runnable): every fetchable site at layout height 90-111%, coarse parity >= 95%, tight >= 90%, paint < 2s; JS-wall sites tracked honestly as their own class until the JS axis lands. One page we authored ourselves proves nothing — the suite is real-web pages we don't control. Every rung below names the metric it moves and its proof; nothing counts without a gate or a measured re-run.
The ladder — how we get there
| status | rung | the number it moves | proof |
|---|---|---|---|
| DONE | Fractional font-size parse (13.5px read as 135px -> 3x-tall rows) | /experiential height 4580px -> 1418px (206% of Chrome -> 64%) | gate nx_css_fontsize_frac_gate 4/4 |
| DONE | CSS background propagation (white void below dark pages) | frame-7 luminance 236 -> 15; dark to page end | gate nx_browser_bg_cascade_gate 4/4 + pixel probe |
| DONE | Inline measure==paint unification (3 drifts: layout vec widths, paint inherited font-size, decimal-truncating parsers) | link/label gaps eliminated; readability study FAIL 25% -> PASS 100% | gate nx_inline_vec_measure_gate 4/4; before/after run 16b |
| DONE | padding/margin/font SHORTHANDS (one last-wins scan across longhand+shorthand per side) | height 61% -> 87% of Chrome; FIRST 100.0% coarse-parity screen | nx_css_boxmodel_gate 6/6; run /evidence/browser-height-2026-07-16 |
| DONE | line-height (unitless/px/font-shorthand /N, inherit-with-recompute, half-leading, measure==paint) | /experiential height EXACTLY 2227px == Chrome (100.0%); day arc 206% -> 100.0% | nx_lineheight_gate 6/6; also flushed + fixed a latent stale-index hazard (self-validating bucket index) |
| DONE | TOP-20 REAL-SITE SUITE (bench/nx_top20_parity.ps1, re-runnable) + spec background propagation | the standing benchmark: 20 real sites x (height ratio, coarse, tight) every run; already caught the canvas-propagation bug (google 0.0% coarse) same-day | run /evidence/browser-top20-2026-07-16; instruments labeled + failure classes (FETCH-EMPTY/CHROME-BLOCKED/HANG) |
| DONE | THE ORGAN EYE — nx_parity_judge (ink-mass + ink-spread + canvas-delta per pair -> BLANK/STRIP/CANVAS/SPARSE/NO-ORACLE/OK) | the operator's bar: the suite sees these failures with NO human in the loop; kills the blank-scores-97% metric hole | gate GREEN 6/6 vs the human truth set (real captures); wired into the suite (class column every run); it corrected the human once (HN canvas) |
| DONE | READING-RECALL tier (neutral OCR reads both renders; sovereign recall/precision/F1 scorer) — the typography-arc metric generalized | the "how bad" number the classes hid: suite mean ~384 of 1000 readable-text survival; stackoverflow CONTENT-OK -> 116 exposed | nx_ocr_recall_gate GREEN 5/5 (identity 1000, half 500, garbage 0, order-free, article-immune); wired into the suite (recall column every run); RACI examiner |
| NEXT | SOVEREIGN OCR (retire the Windows.Media.Ocr oracle from the loop) | the reading-recall capability must be ours: nx_ocr_classify/assemble (typography arc) reads OUR renders directly, no Windows dependency | oracle-only law; gate = sovereign-OCR recall within tolerance of the Windows-OCR reading on the same renders |
| NEXT | reading-recall ratchet: wikipedia 766 -> 950, suite mean 384 -> 700 | the standing quality bar (recall moves ONLY when text truly renders where it is readable) | re-run suite OCR tier after each engine fix; regression = any site's recall drops |
| NEXT | organ eye v2: attr-leak + box-overlap findings (needs a layout-tree dump from the shot lane) | stackoverflow's painted `data-s-popover...` + yahoo/wiki image-text overlap become machine findings | pixel-only cannot see these two classes |
| NEXT | google renders BLANK despite laying out 3378px (paint/visibility diagnosis) | google from organ-confirmed BLANK-NISHI to real parity; likely class: text color/visibility/overflow rules | probe = per-box painted-ink sweep on google's tree |
| NEXT | zero-width column collapse (bing/netflix 1-char strips; yahoo ad column) | three suite sites deformed by one layout bug class (flex auto-share or positioned containers at ~0 width) | reproducer = bing's saved HTML through the layout probe |
| NEXT | fetch reliability on the top-20 (5 sites FETCH-EMPTY: youtube/facebook/instagram/duckduckgo/craigslist) | the fetch axis: sites that return nothing to nishi_fetch (TLS fingerprint / redirect / HTTP-2-only classes to diagnose) | measure = FETCH-EMPTY count on the suite |
| QUEUED | % margins + margin collapsing | Wikipedia height 115% -> band (its shorthand margins now honored, slightly over) | measure = wiki height ratio |
| QUEUED | fractional-px layout (Q-space y) | the last 6 coarse cells: integer line rounding (23 vs 23.25) accumulates ~4px block drift per screen | measure = coarse parity 96.8% -> 100% steady |
| DONE | Paint-time cascade index (per-box computed-decl bucket) | Eaglercraft >170s (killed) -> 2s; unblocked suite page 3 | nx_cidx_equiv_gate GREEN (pure accelerator, 300 boxes x 4 resolvers, 0 divergence); run /evidence/browser-perf-2026-07-16 |
| DONE | Big-page fetch (512KB -> 4MB buffers) | full Wikipedia /Computer 0 bytes -> 966KB, renders 27,465px | proven live; 203KB baseline unregressed |
| QUEUED | Image float + positioning | Wikipedia photo floats right beside text instead of overlapping it | measure = wiki coarse parity + eyeball region |
| QUEUED | border-radius paint (pills, cards) | /experiential last cosmetic finding; verdict/pill regions match Chrome | measure = pill-region cell deltas |
| QUEUED | Font fidelity ratchet (glyph forms + AA vs system fonts) | tight paint parity 57%/46% -> 90%+ (the dominant residual once flow+height are right) | measure = tight grid parity per page |
| DONE | nx_browser_drive v1 (input injection: click/scroll/open/wait/shot) | interaction recordings became evidence (drove /experiential, clicked to the live ladder) | run /evidence/browser-drive-2026-07-16; DRIVE-COLLECT GREEN |
| NEXT | drive v2: type + form fields; CDP oracle for third-party browsers; agentic goal-directed play | the DOTA-style playtesting the experiential workstream targets | task 6 continuation |
Runs — the ratchet, dated
- 2026-07-16 — First honest baseline: heights 64%/111%, tight paint 56.5%/45.1; two root bugs found+fixed same day (3x row bloat, white void)
- 2026-07-16 — Inline text-flow root-fixed (3 measure-vs-paint drifts unified); readability study PASS 100%; heights 61%/106%
- 2026-07-16 — Paint cliff dead (eaglercraft >170s -> 2s, gated pure accelerator) + big-page fetch (wiki /Computer 0 -> 966KB, renders 27465px)
- 2026-07-16 — HEIGHT AXIS CLOSED on /experiential: shorthands + line-height -> exactly Chrome's 2227px (day arc 206% -> 100.0%); gates 6/6+6/6; two cascade/index bugs caught pre-ship
- 2026-07-16 — THE TOP-20 SUITE (standing, one command): 13/20 render; REAL parity wikipedia 90.6 + hackernews 88.5 + stackoverflow 81.7; caught TWO bugs same-day (canvas bg-propagation; and the METRIC ITSELF — blank google scored 97.3% = emptiness-gaming -> ink-weight rung); gaps named as rungs
Live surfaces
- /experiential — The census page the browser dogfoods (its own readability study target)