Repository navigation
CTX-PROOF-2: inherit proven on the flex, box-sizing, margin, padding, border and size longhands (30 alias probes) - #210
Conversation
…der-radius on iOS and Android, rebuilt from #80/#81 on master Carries the radius half of #80 (paint-radius.ts, its harness cases, vectors input generator and host plumbing) and #81 (parsing, computed values, lowering, emission, rounded background, border and clip stages, the radius-square plant, the pnt1-radius proofs and fixtures) onto master's per-feature registries, and adds -webkit-border-radius with Chrome's legacy two-value parsing, the radius-longhands fixture, and native refusals for rounded html, body and replaced elements.
…does not model rounded corners yet), the identity check strips the corner radii added since its base, and pnt1-radius covers radius-longhands
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: 61f24f0 Run: https://github.com/compiled-run/dragoncss/actions/runs/37382572332
…mily registers between pointer-events and transform, and a rounded box leaves the hit facts unchanged (the hit lane refuses rounded cases by name)
…a corner longhand is refused by name
# Conflicts: # packages/parity/src/hit-capture.ts
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: 4094fb1 Run: https://github.com/compiled-run/dragoncss/actions/runs/37389802133
# Conflicts: # packages/layout/test/paint-seams.test.ts # packages/translate/harness/harness.ts
…orthands/radius.ts cites css_parsing_utils.cc ConsumeRadii); no uncited replaced_painter.cc reference
…job.sh pnpm regen: fixed point after 3 passes, 27 steps)
…acy shorthand (PNT1-radius), so it leaves the still-refused list
…rget, as Chrome drops it; any other encoding, form or position is refused - css/at-rules/charset.ts: the handler, one line in AT_RULE_HANDLERS, and a 'drop' AtRuleOutcome the driver skips; the at-rule context carries its source text and whether it starts the sheet. - Fixture group charset: charset-utf8 and charset-utf8-upper must render as charset-none in Chrome (dragon/test/charset.test.ts), and three rejects (another encoding, not at the start, single quotes). - seams.test.ts: charset leaves the refused list with its own handler; the byte-identical pin is the base's hash without it.
…t-regen2: pnpm regen, fixed point): the charset fixtures' captures, emitted CSS, vectors and break vectors, the profiles (proof cases added, no row or status changed), the native lanes record, the hit facts and the translate corpus
…, margin, padding and border-width longhands The coverage-rank alias probes (-webkit-justify-content, -webkit-flex-direction, -webkit-box-sizing, -webkit-margin-before and the rest, about 320 reach-points) are refused only because no fixture used inherit on these longhands; the resolver handles inherit the same way for every longhand. One fixture in ltr and rtl: an inheriting flex container (direction, wrap, justify, align-items, align-content, column-gap), inheriting flex items (grow, shrink, basis, align-self, order), inherited box-sizing, margins, paddings, border widths and their logical forms, each checked in Chrome to move a frame, plus the block-flow forms the probes use (computed values). Group inherit-contexts, one GROUPS line
… (not-flex-container, the context the alias probes key), border style and colour, height and min/max sizes inheriting
…it (now proven by ctx-proof-inherit) to unset; border-top-width: inherit compiles (proven by ctx-proof-inherit) while initial stays refused
…and max-width inherits in its own child where the inherited value decides the frame (#210 review, Low: the shared child left min-height, max-height and min-width unbound); each checked in Chrome to move a frame in both directions
|
Precomputed review (Low, ctx-proof-inherit.html:31,
|
…eeps -webkit-keyframes and charsetAtRule; the seams pin drops both from its list, and master gives the same hash for that list (bb433400…)
…, fixed point)
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: 6279b61 Run: https://github.com/compiled-run/dragoncss/actions/runs/37848210107
|
Landing stopped at step Fix the cause, then hand #210 back to the landing queue with the new clean head. |
…339px tall, so the dashed bp border ran past Chrome's raster and p6a-dash-oracle's pre-T116 subset proof failed at landing); the flex boxes are 10-20px shorter and keep free space, so every inherit still moves a frame Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WSkSiXMPXTAsNpS9BD9LDR
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: 7f8b04e Run: https://github.com/compiled-run/dragoncss/actions/runs/37858809480
|
LAND-READY Re-handed after the landing failure at c317973 (p6a-dash-oracle pre-T116 subset for ctx-proof-inherit[-rtl]: the fixture page overflowed the 400x300 viewport). Fix 7f8b04e keeps the page inside the viewport; the invariant is untouched. Lane receipt (PM session A): pnpm typecheck pass; platform-free dragon {aliases,initial-line-width,casc,cascade-var,registry-claims,profile-index} pass (local, at 7d8d3f1); ci:regen https://github.com/compiled-run/dragoncss/actions/runs/37858809480 (regen commit 7d8d3f1); ci:test-files https://github.com/compiled-run/dragoncss/actions/runs/37862382139 (tested 7d8d3f1 at 7d8d3f1: targeted set plus every fixture-wide parity file incl. p6a-dash-oracle 314, parity 519, native-host 326, device-lanes 60; 0 failed); pr:review 210 --once exit 0 (UNREVIEWED: Macroscope spending limit). Independent Claude review of c317973..7d8d3f1 (the fixture fix and its regen; checks that each inherit claim is still proven), Medium or higher only: {"pr":210,"head":"7d8d3f1c3b46faa45e63cc6f778d543b2f32e0f8","findings":[]}Generated by Claude Code |
Commands: pnpm regen; pnpm run parity:devices; pnpm regen
Commands: pnpm regen; pnpm run parity:devices; pnpm regen
@charset "utf-8"; at the start of a sheet is a no-op on every target (Chrome drops it); other encodings and positions refused
Commands: pnpm regen; pnpm run parity:devices; pnpm regen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WSkSiXMPXTAsNpS9BD9LDR
…-longhands: no source conflicts; generated files keep this side until the CI regen Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WSkSiXMPXTAsNpS9BD9LDR
…flicts Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WSkSiXMPXTAsNpS9BD9LDR
CTX-PROOF-2. This PR adds one parity fixture that proves
inheriton the flex, box-sizing, margin, padding, border and size longhands. The coverage-rank alias probes (-webkit-justify-content: inherit,-webkit-flex-direction: inherit,-webkit-box-sizing: inherit,-webkit-margin-before: inheritand the rest) were refused only because no fixture usedinheriton these longhands. The resolver handlesinheritthe same way for every longhand. There is no engine, compiler, gate or tolerance change. Reviewed diff: about 9 KB.How the batch was found
I listed every DRAGON_UNPROVEN_CONTEXT, and every UNSUPPORTED_VALUE whose value is a CSS-wide keyword, across three sources: the coverage-rank probes (#146's script, run locally), the Tailwind sweep snapshot and the music player's north-star check. I grouped them by (value kind, context) and ranked them by reach.
inheritin block flow on the alias rows, about 320 reach-points.What changed
inherit-contexts(packages/parity/src/fixture-groups/inherit-contexts.ts, oneGROUPSline) withctx-proof-inherit, run in ltr and rtl. It contains:not-flex-containercontext the probes key.inheritin a flex or box context moves a frame in Chrome. I checked this by removing each declaration alone and diffing Chrome's boxes, in both directions (the CTX-PROOF 2/2: parity fixture proving rem lengths in the music player's flex and positioned contexts #180 min-height lesson).Result
inheritrows; the rest are the parent declarations in the contexts the fixture uses. Rows removed: 0. Status changes: 0.-webkit-box-sizing,-webkit-justify-content,-webkit-align-items,-webkit-flex-direction,-webkit-flex-grow,-webkit-flex-wrap,-webkit-flex-shrink,-webkit-flex,-webkit-flex-flow,-webkit-flex-basis,-webkit-align-self,-webkit-align-content,-webkit-order,-webkit-column-gap, the margin and padding before/after/start probes, the border before/after probes and the logical size probes.inherit.Tests changed, with reasons
aliases.test.ts, "an unsupported value says which alias set it": the example was-webkit-box-sizing: inherit, which this PR proves. It is now-webkit-box-sizing: unset, still without a row. Same intent: the message names the alias.initial-line-width.test.tslatent finding: the test pinnedborder-top-width: inheritandinitialas refused.inheritis now proven here (ctx-proof-inherit) and CASC 1: @supports decided at build time as Chrome 145 decides it; revert and revert-layer; CSS-wide keyword rows #200 provedinitial(casc-css-wide), so the case now asserts both compile, and that each is backed by its web and iOS profile rows (block/ltr and block/rtl) naming its fixture (casc-css-wide[-rtl]for initial,ctx-proof-inherit[-rtl]for inherit). No other check was dropped.hit-capture-identityneeds no change, because the new files belong to a registered fixture.What passed
pnpm regenreached a fixed point. The outputs are in their own commits, "Regenerate: pnpm regen".pnpm typecheck: pass.vitest run packages/layout packages/dragon(the CI platform-free set): 98 files pass. The two pins above were then retargeted and pass (aliases and initial-line-width, 25 tests).Catch-up with #200 (CASC-1)
Merged origin/master 9b32f10 in 921361f. Only one file conflicted:
packages/dragon/test/initial-line-width.test.ts. #200 had changed the latent-finding case to "inherit stays refused, initial compiles" and this branch had it as "initial stays refused, inherit compiles". The resolved case asserts that both compile, each backed by the profile rows and fixture that prove it (see Tests changed). The other shared files merged without conflict:packages/parity/src/fixtures.ts(it keeps both thecascandinherit-contextsgroups) and the generated profiles (web, ios, android, merge=dragon-generated, which keep this side and are rebuilt by regen). After regen, bothborder-top-width:initial(casc-css-wide) andborder-top-width:inherit(ctx-proof-inherit) rows are in the web and iOS profiles.pnpm install --frozen-lockfilepassed.Landing failure at c317973, and the fix (7f8b04e)
The landing driver's full test (https://github.com/compiled-run/dragoncss/actions/runs/37855032315, chrome shard 2/4) failed
p6a-dash-oracle.test.ts> "the T116 skips drop no pixel the pre-T116 comparison checked" forctx-proof-inheritandctx-proof-inherit-rtl.bpbox (y 296 to 319) ran past the bottom of Chrome's capture. The current comparison skips pixels outside the raster, but the pre-T116 comparison counts them, so those pixels (bp:0..19,600at DPR 2) were not a subset..fc > divis 50 → 40px tall..fc2 > divis 60 → 40px tall..rowis 30 → 20px tall.bpsits at y 256 to 279 andhpat y 279 to 299.align-content: flex-endkeeps 10px of free space.justify-content: space-betweenkeeps 15px.align-self: centercentres the 8px items in 20px.packages/parity/fixtures/ctx-proof-inherit.html, so that every border pixel is inside the Chrome capture.What passed at 7d8d3f1
pnpm ci:regen ctx-proof-2 --head 7f8b04e2af42942900458b9238944e640b11a9b5pushed regen commit 7d8d3f1. https://github.com/compiled-run/dragoncss/actions/runs/37858809480pnpm typecheck: pass (local).pnpm ci:test-files: all pass. https://github.com/compiled-run/dragoncss/actions/runs/37862382139pnpm pr:review 210 --once: exit 0, with 0 unanswered findings. It reports UNREVIEWED because Macroscope hit its monthly spending limit.🤖 Generated with Claude Code
Generated by Claude Code