{"v":1,"run":"browser-height-2026-07-16","workstream":"S21 experiential / S18 graphics — browser chrome-parity ratchet","title":"Nishi browser — box-model shorthands land: first 100% coarse-parity screen vs Chrome","date":"2026-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.","artifacts":[{"file":"before_after_shorthands.png","caption":"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."},{"file":"comp_experiential_chrome.png","caption":"Chrome (left) vs Nishi after the shorthand fix (right) — the first 100.0% coarse-parity screen (pre-line-height)."},{"file":"comp_final_lineheight.png","caption":"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."}],"metrics":[{"name":"/experiential layout height","value":"2227px vs Chrome 2227px = 100.0% EXACT (day arc: 206% -> 64% -> 61% -> 87% -> 100.0%)","note":"The height axis is closed; every remaining delta is paint-side"},{"name":"line-height gate","value":"nx_lineheight_gate GREEN 6/6","note":"unitless (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)"},{"name":"Latent hazard flushed","value":"paint bucket-index now SELF-VALIDATES against its source array","note":"The gate caught the index answering for the WRONG page (multi-page consumers); guard = stamp + compare, fallback to full scan"},{"name":"/experiential coarse parity","value":"100.0% (192/192 cells, was 95.8%)","note":"FIRST perfect coarse screen: every structural region matches Chrome at tol 32"},{"name":"/experiential tight parity","value":"59.8% (was 57.3%)","note":"Font-raster dominated; the font-fidelity rung's ratchet"},{"name":"Wikipedia height","value":"8731px vs Chrome 7582px = 115% (was 106%)","note":"Wikipedia's own shorthand margins now honored — slightly OVER; % margins and margin-collapsing are the correcting rungs"},{"name":"Gate","value":"nx_css_boxmodel_gate GREEN 6/6","note":"padding shorthand geometry, margin rhythm 57px exact, em-against-inherited-fs (2em@20px=40), font:15px both resolvers, longhand-after-shorthand priority, can-fail control"},{"name":"Cascade lesson (2nd occurrence)","value":"longhand-always-wins FAILED the gate","note":"UA 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"},{"name":"Regression sweep","value":"fontsize-frac, inline-vec-measure, bg-cascade, cidx-equiv, negmargin — all GREEN","note":"No prior fix regressed"}]}
