Repository navigation
WEBKIT-BOX 1: display parses as Chrome 145; -webkit-box refused precisely, -webkit-flex as flex - #181
Conversation
…nd aspect-ratio, float media size), ratio bands, iframe harness, guard and totality tests
…apture-media-data.ts
…(zoom 128), plant mediaFractionalBandDropped, register media_query_evaluator.cc and the local_frame_view.cc media size as references
… and break captures, vectors and the media sweep records of the three new media fixtures, media-range's 9-band web output and sweep records, profiles and the host lanes
…he one Chrome-ported media numeric file, exempt by exact path in s4b and ua); one harness injection (chrome.ts injectHarness, used by the iframe capture); hit-capture identity admits MQ-R0's new fixtures and the two ruled media-range emitted files; p1/hit 2028 -> 2052 in translate.test and device-vectors.test (24 new layout vectors: 6 fixtures x 4 DPRs), p1-floor raised with DRAGON_FLOOR_WRITE=1
… with its own kinnunen-bsd-2 text (2-clause BSD, holders Kinnunen/Nokia, Apple, Intel; T067 R2), not bsd-apple header-bsd-10; IDENTITY_RULED pins the post-ruling hashes of media-range{,-rtl}.css instead of skipping the hash; viewport.ts and the s4b/ua exemption say 'reproduces the measured media size' (local_frame_view.cc is LGPL, reference only)
…registry and mediaFractionalBandDropped moves to faults/mq-r0.ts; the p1/hit pins and p1-floor take master's side and are re-derived after regen
…erived hit count (checked against p1-floor.json)
Commands: pnpm regen --skip lanes-host --skip tw-sweep (macos-26) and pnpm regen --only lanes-host (xcode-27), alternated to a fixed point, then pnpm regen --only tw-sweep (macos-26). Base: c4af7e3 Run: https://github.com/compiled-run/dragoncss/actions/runs/37324380859
…words in, run-in, grid-lanes and ruby internals out); -webkit-box refused precisely, -webkit-flex as flex
…(inOrder over CHROME_PAGES, first-body check in viewport order) with MQ-R0's fractional bands sampled inside it (iframe at zoom 128 per band)
Commands: pnpm regen --skip lanes-host --skip tw-sweep (macos-26) and pnpm regen --only lanes-host (xcode-27), alternated to a fixed point, then pnpm regen --only tw-sweep (macos-26). Base: 0fa83b7 Run: https://github.com/compiled-run/dragoncss/actions/runs/37336867273
… twin around the shared collectNodes; the identity keeps master's IDENTITY_NEW (SELD-R1b and PNT2 transform fixtures) beside MQ-R0's IDENTITY_LATER and IDENTITY_RULED
Commands: pnpm regen --skip lanes-host --skip tw-sweep (macos-26) and pnpm regen --only lanes-host (xcode-27), alternated to a fixed point, then pnpm regen --only tw-sweep (macos-26). Base: c343a7e Run: https://github.com/compiled-run/dragoncss/actions/runs/37343675221
|
Landing stopped at step Fix the cause, then hand #181 back to the landing queue with the new clean head. |
…asserted invalid both ways in Dragon and Chrome) and the legacy -webkit- keywords, keeping the display twin floor of 33
|
Landing failure fixed in 45a1141: css-escapes display twin floor (27 < 33). The six keywords Chrome 145 drops (run-in, grid-lanes, inline-grid-lanes, ruby-base, ruby-base-container, ruby-text-container) are now escape twins asserted invalid in Dragon, escaped and plain, and dropped by Chrome both ways; the four legacy -webkit- keywords (which reach() skips for their leading hyphen) are twins too. display now has 37 plain spellings with twins; floor unchanged. css-escapes, display-parse, display-legacy, registry-claims and blockify pass; typecheck clean. |
|
Landing stopped at step Fix the cause, then hand #181 back to the landing queue with the new clean head. |
…D-R2's interaction cases and first-band condition with MQ-R0's mediaFractionalBandDropped filter; the identity keeps master's IDENTITY_NEW (with SELD-R2a's interaction fixtures) beside MQ-R0's lists; p1-floor takes master's hit 2108
Commands: pnpm regen --skip lanes-host --skip tw-sweep (macos-26) and pnpm regen --only lanes-host (xcode-27), alternated to a fixed point, then pnpm regen --only tw-sweep (macos-26). Base: 671e882 Run: https://github.com/compiled-run/dragoncss/actions/runs/37359968710
…ITE=1; floors only grow)
|
Landing stopped at step Fix the cause, then hand #181 back to the landing queue with the new clean head. |
Commands: pnpm regen
# Conflicts: # packages/parity/src/fixtures.ts
Merge driver for the sorted per-feature registries (dragon-sorted)
…ITE=1; floors only grow)
…usts GitHub's CONFLICTING, which ignores the merge drivers #190's dragon-sorted driver (and dragon-floor, dragon-generated) merge PRs that GitHub's plain text merge calls CONFLICTING, so admission failed #142 although it merges cleanly onto master. Before its build the driver now passes --conflicts-ok: a CONFLICTING head is judged as UNKNOWN, and the merge train, which merges with the drivers, fails a real conflict at merge.
Commands: pnpm regen
pr:review --conflicts-ok: admission defers conflicts to the merge train's drivers
Commands: pnpm regen; pnpm run parity:devices; pnpm regen
Commands: pnpm regen --skip lanes-host --skip tw-sweep (macos-26) and pnpm regen --only lanes-host (xcode-27), alternated to a fixed point, then pnpm regen --only tw-sweep (macos-26). Base: 65e9e6b Run: https://github.com/compiled-run/dragoncss/actions/runs/37377476074
MQ-R0: Chrome-exact @media evaluation (1/64 slack, whole-px orientation and aspect-ratio, float media size), orientation and aspect-ratio bands
Commands: pnpm regen; pnpm run parity:devices; pnpm regen
…d others): MQ-R0's slack-aware partition replaces the temporary near-threshold refusal (closeThresholds removed); the off-grid sweep runs on MQ-R0's partition with media-range, media-epsilon and the ratio fixtures and asserts its band everywhere; rt-band's atoms checked against media/evaluate.ts; mqr-orientation proves the ratio atoms; LATER_FIXTURES dropped for #189's registry check; at-rules keeps MQ-R0's accepted features with the MQ-R2/MQ-R3 refusal text
WEBKIT-BOX (1):
displaynow parses exactly as Chrome 145 does.display: -webkit-boxand-webkit-inline-boxwere called invalid; Chrome parses them, so Dragon now refuses them with a precise reason instead.What changed
scripts/gen-css-grammar.ts, newSYNTAX_OVERRIDES):displaytakes Chrome 145's grammar, from BlinkDisplay::ParseSingleValueandParseDisplayMultipleKeywords, in place of webref's.-webkit-box,-webkit-inline-box,-webkit-flexand-webkit-inline-flex. Blink's legacy keyword range runs from inline-block to -webkit-inline-flex.run-in(alone or in a list),grid-lanesandinline-grid-lanes(CSSGridLanesLayout is off in 145),ruby-base,ruby-base-containerandruby-text-container. Before this PR they parsed and were then refused as unsupported. That was a wrong acceptance: Chrome drops the declaration and an earlier one wins.css/display-legacy.ts(called fromparseValue):-webkit-flexand-webkit-inline-flexbecomeflexandinline-flex, which is how Chrome computes them (Blink has no EDisplay of their own). The web output emitsflex.-webkit-boxand-webkit-inline-boxare refused on every target withDRAGON_UNSUPPORTED_VALUE: "display: -webkit-box is unsupported: it selects Chrome's legacy -webkit-box layout, which Dragon does not lay out, line clamping with -webkit-box-orient: vertical and -webkit-line-clamp included". The span is the keyword. The fix says to use flex or inline-flex. Avar()that substitutes one of them gets the same reason.display-legacy:display-webkit-flex(ltr and rtl): a -webkit-flex row, a column, a blockified -webkit-inline-flex item, and an upper-case-WEBKIT-FLEX.reject-display-webkit-boxandreject-display-webkit-inline-box, both the line-clamp pattern, andreject-display-run-in.Line clamping is not in this PR
The TXT2 spec (notes/T149-txt2-spec.md R11, part TXT2-g) owns
-webkit-line-clamp,-webkit-box-orientand the-webkit-boxadjustment to flow-root. This PR does not duplicate that work. TXT2-g will lift this refusal for its accepted combination, indisplay-legacy.tsor in a per-element check. The general legacy box (-webkit-box-pack/align/flex/direction/ordinal-group) does not map cleanly onto flexbox. Blink lays it out through its own -webkit-box paths, and it is not fixed bydisplayalone, so it stays refused. Those properties keepDRAGON_UNSUPPORTED_PROPERTY.Proof
packages/parity/test/display-parse.test.ts(live Chrome 145.0.7632.6). It covers 1,095 display values: every keyword (including case variants), every two-keyword list over 18 keywords, and every three-keyword list over 9.webkitFlexAsBlock,runInAcceptedandwebkitBoxInvalid.packages/dragon/test/display-legacy.test.ts(14 tests): the refusal message, span, fix, blocked outputs and catalogue on every target, through var(), and with the line-clamp pattern. It also checks that -webkit-flex emits the same web CSS as flex, that -webkit-inline-flex gets the same diagnostics as inline-flex, that the autoprefixer chain compiles, and that the dropped values are invalid.runFixturewith live Chrome: all pass, includingdisplay-webkit-flex-rtl.What passed (base origin/master 65e91d9)
pnpm typecheck: clean.regenlabel (regen-on-ci). The grammar output and the new fixture captures land in the bot's commit.Expected regen and sweep movement
tw-sweep:line-clamp-1..6move fromrefused DRAGON_CSS_INVALID_VALUE ... chrome-parsesto a refusal Dragon no longer calls invalid.-webkit-line-clamp/-webkit-box-orientstay TXT2's. The-webkit-line-clampblocker changes from CSS_INVALID_VALUE (-webkit-box) to the precise refusals.Outside the spec
docs/goals/milestone-2-proof/notes/TW-SWEEP.md:39still says Dragon calls-webkit-boxinvalid. It is under docs/goals, so I left it for the PM.🤖 Generated with Claude Code