Repository navigation
EMS-b: the remaining paint seams (empty families, registries, engine paint roots, paint-vectors step); behaviour-preserving - #62
Merged
Conversation
…T071-ems.md), stacked on EMS-a
- CSS: seven empty paint families (css/properties/{radius,shadow,effects,outline,transform,background-layers,scrollbar}.ts) and two empty shorthand files, spread last in every aggregate.
- analysis/paint-values: one module per paint module, all stubs; computePaintValues is the last statement of computeLengths.
- Engine: packages/layout/src/paint.ts (BoxShape) and empty paint-{radius,shadow,gradient,transform,dash,scrollbar}.ts; translate generate.ts roots them (PAINT_ROOT_FILES) and the harness routes paint:<feature>:<fn> through units mode; layout:paint-vectors writes the six empty suites.
- Parity: paint-samples registry (16 stubs) appended to casePoints, SAMPLE_RULES gain shadow and gradient, checkPixels reads CHANNEL_DELTA_BY_KIND (every kind GATE_CHANNEL_DELTA; shadow and gradient through allowances/), LANE_FILES covers both allowances.
- Tests: the CSS-family and paint-values checks return to dragon/test/paint-seams.test.ts; layout, parity and translate seam tests; samples.test.ts pins retargeted (SAMPLE_RULES appends shadow and gradient; the box generator emits neither).
Split from ems-paint-seams 49a5f8e1: with EMS-a, this tree equals it.
…, profile:rows, parity:capture, profile:rows, layout:vectors, parity:dpr-capture, layout:dpr-vectors, layout:break-vectors, parity:break-capture, parity:pixel-capture, layout:paint-vectors, native:gen, node --conditions=dragon-internal examples/music-player/tools/check.ts, wpt:run --target web, wpt:update-expectations --target web, tw:sweep, parity:glyph-b3 --write-bottom-pins, media-sweep.ts and --check, parity:lanes --run-host): the six empty paint-vector suites, the translated engine and harness (paint roots and routing: digest headers, source line comments, paintResult) and a host-only lanes.json (rule kinds gain shadow and gradient); byte-identical to ems-paint-seams 49a5f8e1's outputs apart from lanes.json run fields
… earlier) into ems-b-paint-seams: generate.ts takes master's rt roots (ANIM-a2) and EMS-b's paint roots in one loop that refuses a missing root file by name (master's rt loop cast it); paint-roots.test pins both refusals; generated engine and harness files taken from master, regenerated next
…(PASSES=1 /tmp/emsb-regen2.sh: grammar:gen, ua:capture, parity:capture, profile:rows, parity:capture, profile:rows, layout:vectors, parity:dpr-capture, layout:dpr-vectors, layout:break-vectors, parity:break-capture, parity:pixel-capture, layout:paint-vectors, native:gen, node --conditions=dragon-internal examples/music-player/tools/check.ts, wpt:run --target web, wpt:update-expectations --target web, tw:sweep, parity:glyph-b3 --write-bottom-pins, media-sweep.ts and --check, parity:lanes --run-host): the translated engine and harness (master's rt roots plus EMS-b's paint roots and harness routing) and a host-only lanes.json; no capture, vector, profile or emitted file moves
…ory under packages/layout/paint-vectors that no paint-<feature>.ts root names (strayEntries), so a removed or misspelt feature's suite cannot linger unchecked; paint-vectors-cli.test pins the features, the not-ok refusal, the stray check and that the committed directory holds exactly the features (layout:paint-vectors --check passes)
…:devices): every lane in the same state as origin/master's (device-pixels fail on both targets as on master, all else pass, lane parity passes); device-failures-ios.json and device-failures-android.json byte-identical to master's. A first run hit a 180 s timeout in android layout-vectors-host under machine load and was rerun
…o ems-b-paint-seams: no source conflict; generated files kept from this side for pnpm regen to rebuild. scripts/regen.ts gains the paint-vectors step (pnpm run layout:paint-vectors, outputs packages/layout/paint-vectors/*/vectors.json, after pixel-capture and before native-gen; no earlier step reads them, so no readsLater), .gitattributes lists its output, and .macroscope/ignore.md covers it as generated output (the merge policy requires both)
…(/tmp/heavy-lease.sh pnpm regen: fixed point after 2 passes): the translated engine (master's T123 linebreak and EMS-b's paint roots and harness routing); lanes.json follows from the device run
…igin/master 9f1166d (/tmp/device-lease.sh pnpm run parity:devices): every lane in the same state as master's (device-pixels fail on both targets as on master, all else pass, lane parity passes); device-failures-ios.json and device-failures-android.json byte-identical to master's
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This is a broad cross-package paint-seam and tooling change with new registry hooks, parity sampling paths, translation roots, and regenerated outputs. It also modifies You can add or adjust custom eligibility rules. Learn more. |
thejackshelton
added a commit
that referenced
this pull request
Oct 1, 2026
thejackshelton
added a commit
that referenced
this pull request
Oct 1, 2026
…tHub cannot apply the dragon-generated merge driver, so the PR was conflicting on generated files; no source conflicts; generated outputs keep this side and pnpm regen rebuilds them next
thejackshelton
added a commit
that referenced
this pull request
Oct 1, 2026
…s again, before the first regen: no source conflicts; generated outputs keep this side (merge=dragon-generated) and pnpm regen rebuilds them next
thejackshelton
added a commit
that referenced
this pull request
Oct 2, 2026
…und again, before the first regen: no source conflicts; generated outputs keep this side (merge=dragon-generated) and pnpm regen rebuilds them next
thejackshelton
added a commit
that referenced
this pull request
Oct 2, 2026
…onflict (the previous merge left this branch at master plus SIZE-ar, so EMS-b's paint seams merge cleanly); generated outputs keep this side and pnpm regen rebuilds them
thejackshelton
added a commit
that referenced
this pull request
Oct 2, 2026
…tmp/heavy-lease.sh pnpm regen (fixed point after 2 passes): only native:gen (the translated engine gains EMS-b's paint roots beside SIZE-ar's ratio code) and the host lanes in lanes.json change; node scripts/check-aspect-ratio-migration.ts origin/master exits 0 with the same counts
thejackshelton
added a commit
that referenced
this pull request
Oct 2, 2026
…in again, before the first regen: no source conflicts; generated outputs keep this side (merge=dragon-generated) and pnpm regen rebuilds them next
thejackshelton
added a commit
that referenced
this pull request
Oct 2, 2026
…, before the first regen: properties.ts keeps SELD-R1b's pointer-events family right after grid and master's paint families after it, in LONGHANDS, INHERITED and PROPERTY_ASPECTS; seams.test.ts (EMS-b's paint-family order check) expects POINTER between GRID and the paint families in those three tables (intent kept: the paint families go last, after grid); generated outputs keep this side and pnpm regen rebuilds them next
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
EMS-b (T071, part 2 of 2): the remaining paint seams, stacked on EMS-a (#57). See notes/T046-paint-spec.md §3 and notes/T071-ems.md. Nothing changes behaviour: every seam is empty until PNT1, PNT2, BG2 and P6a fill it.
What changed
computeLengths;GATE_CHANNEL_DELTA.BoxShape) and six emptypaint-<feature>.tsroots. They are translated through generate.tsPAINT_ROOT_FILES, and the harness routespaint:<feature>:<fn>through units mode.pnpm run layout:paint-vectorswritespackages/layout/paint-vectors/<feature>/vectors.json(six empty suites).pnpm regenstep..gitattributesand.macroscope/ignore.mdlist its output as generated (AGENTS.md step 3, and LAND-1: pnpm regen (cached, fixed-point regeneration chain) and a merge policy for generated outputs #58's policy test).layout:paint-vectorsrefuses a directory that no paint root names. A new paint-vectors-cli test failed before the fix.Behaviour-preserving
pnpm run parity:devices) records every lane in master's state:out/device-failures-{ios,android}.jsonare byte-identical to master's.What passed
pnpm typecheck.pnpm test: 153 files; 3139 tests pass and 1 is skipped. The skipped test is the fullpnpm regen --check, which runs only withDRAGON_REGEN_CHECK=1.pnpm regenreached a fixed point in 2 passes.Changed tests
SAMPLE_RULESgains shadow and gradient. The:n3base-sample check excludes them, as it already excludes glyph, because no base point uses them.No tolerance, check or test is loosened or removed. The reviewed diff is 83 KB in 75 files.
🤖 Generated with Claude Code
Note
Add empty paint seams, registries, and paint-vectors generation step (EMS-b)
paint-<feature>.tsfiles), seven empty CSS property-family modules wired into properties.ts, and empty shorthand handler maps for outline and radiusPAINT_SAMPLESin parity andPAINT_VALUESin dragon, all using shared no-op factories that keep base points and leave computed properties unchanged.computeLengthsnow callscomputePaintValuesafter length resolutionlayout:paint-vectorsCLI in paint-vectors.ts that generates committed per-feature vector fixtures (currently empty) from paint roots, wired into regen.tspaintResultrouting (regenerated Swift/Kotlin outputs updated accordingly)CHANNEL_DELTA_BY_KIND(shadow/gradient currently equal the gate delta), andcaseSamplesroutes throughwithPaintSamplesMacroscope summarized 6ca5e59.