← product evidence + the ladder to state of the art

Nishi browser — box-model shorthands land: first 100% coarse-parity screen vs Chrome

workstream: S21 experiential / S18 graphics — browser chrome-parity ratchetrun: browser-height-2026-07-162026-07-16

Verdict: THE HEIGHT AXIS IS CLOSED: /experiential now lays out at EXACTLY Chrome's height — 2227px vs 2227px, to the pixel (it started the day at 206%, was 61% this morning, 87% after shorthands, 100.0% with line-height). Two rungs landed in this run. (1) BOX-MODEL SHORTHANDS: real pages set spacing through `padding: 8px 12px` / `margin: 1.6em 0 .5em`, which the longhand-only lookups ignored; each side now resolves in ONE reverse scan across longhand AND shorthand — last declaration wins — after the first attempt (longhand-always-wins) failed its own gate on the same cascade-order disease as the dark-theme bug. (2) LINE-HEIGHT: unitless multiplier (inherits as the number, recomputes per descendant font-size), px form, and the `font: 15px/1.55` shorthand's /N — resolved identically in layout and paint (glyphs half-leading-centered in their line boxes). The gate hunt also flushed a latent stale-index hazard (the paint bucket index now self-validates against its source array). Coarse parity 96.8% — the remaining 6 cells are ONE band where integer-px line rounding (23 vs Chrome's 23.25) accumulates ~4px of block drift; fractional-px layout is the queued rung. Tight parity 57.2% stays font-raster-dominated.
evidence
Nishi vs Nishi — BEFORE (left): shorthand spacing ignored, everything cramped (61% of Chrome's height). AFTER (right): main's 32px padding, heading margins, the padded verdict box, table cell padding — the page breathes. Same engine, one resolver fixed. open full size
evidence
Chrome (left) vs Nishi after the shorthand fix (right) — the first 100.0% coarse-parity screen (pre-line-height). open full size
evidence
Chrome (left) vs Nishi with LINE-HEIGHT (right) — page height now EXACTLY 2227px, matching Chrome to the pixel. The 15px/1.55 body text breathes at Chrome's rhythm; remaining visible deltas are the pill shapes (border-radius), the vector font face, and ~4px of integer-rounding drift at the verdict box band. open full size

Measured

whatresultmeaning
/experiential layout height2227px vs Chrome 2227px = 100.0% EXACT (day arc: 206% -> 64% -> 61% -> 87% -> 100.0%)The height axis is closed; every remaining delta is paint-side
line-height gatenx_lineheight_gate GREEN 6/6unitless (32=2x16), font-shorthand /1.55 (23=15x1.55), fixed px (30), inherit-with-recompute (30=1.5x20 not 24), layout==paint resolver parity, can-fail control (17 legacy)
Latent hazard flushedpaint bucket-index now SELF-VALIDATES against its source arrayThe gate caught the index answering for the WRONG page (multi-page consumers); guard = stamp + compare, fallback to full scan
/experiential coarse parity100.0% (192/192 cells, was 95.8%)FIRST perfect coarse screen: every structural region matches Chrome at tol 32
/experiential tight parity59.8% (was 57.3%)Font-raster dominated; the font-fidelity rung's ratchet
Wikipedia height8731px vs Chrome 7582px = 115% (was 106%)Wikipedia's own shorthand margins now honored — slightly OVER; % margins and margin-collapsing are the correcting rungs
Gatenx_css_boxmodel_gate GREEN 6/6padding shorthand geometry, margin rhythm 57px exact, em-against-inherited-fs (2em@20px=40), font:15px both resolvers, longhand-after-shorthand priority, can-fail control
Cascade lesson (2nd occurrence)longhand-always-wins FAILED the gateUA margin-top (earlier) beat author margin shorthand (later); rewrote as one last-wins scan across both properties — same law as the background fix; the gate caught it before ship
Regression sweepfontsize-frac, inline-vec-measure, bg-cascade, cidx-equiv, negmargin — all GREENNo prior fix regressed

Machine detail: api.json · related: /evidence/nishi-browser