fix(design-data): decompose typography component-scale fusion (284.9) - #1315
Merged
Conversation
… spectrum-design-data-284.9)
- packages/design-data/tokens/typography.tokens.json: split component-{size}-{weight}
into variant:"component" + property:"typography" + size + weight, legacyKey pinned.
- packages/design-data/registry/variants.json: register "component" under new
typography-role category (compact in-component scale alongside body/detail/heading/title).
- packages/design-data/registry/property-terms.json: register "typography" (composite
type-style property term).
- sdk/core/src/registry_data.rs: regenerated via moon run sdk:codegen.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… fused content-color, square-dark/square-light, and row-height each have a segment that collides with an unrelated object/anatomy registry id, which tripped the property-fusion detector's structural-hits check even though these are already-decided atomic terms (bead 284.3/284.9 judgment calls). Add them to the existing COMPOUND_PROPERTIES allowlist so they short-circuit before the structural check, same mechanism already used for corner-radius/border-width. Residue report drops from 36 flagged tokens to the 1 genuine remaining case (stack-item-selected-background-color-highlight, blocked by legacy.rs's component-field hoisting, not a detector gap). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… registry
opacity-checkerboard-square-{dark,light} tokens keep their atomic
property values (not split into anatomy:"square" + a color field) per
the dark/light-tile-identity vs. colorScheme-theme distinction, but
they were missing from property-terms.json entirely.
- **packages/design-data/registry/property-terms.json**: register
square-dark/square-light with descriptions clarifying they identify
the tile's fixed relative lightness, not the colorScheme theme.
- **sdk/core/src/registry_data.rs**: regenerated from the registry above.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
🦋 Changeset detectedLatest commit: 9ea4ecc The changes in this PR will be included in the next version bump. This PR includes changesets to release 10 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Contributor
Run report for 9ea4ecceTotal time: 3m 19s | Comparison time: 5m 15s | Estimated savings: 1m 55s (36.6% faster)
Expanded report
Changed files |
Contributor
🎨 Token Changes ReportTokens Changed (0)Original Branch: This comment was automatically generated by the token diff tool. 🤖 |
Contributor
🧩 Component Schema Changes ReportNo component schema changes detected.This comment was automatically generated by the component schema diff tool. 🤖 |
This was referenced Jul 30, 2026
Merged
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.
Description
Finishes epic spectrum-design-data-284 (fused
name.propertydecomposition): the lastgenuine residue was the 15
component-{size}-{weight}typography tokens, which fused atypography-role variant, the composite type-style property, and a t-shirt size into one
string. This PR also fixes two false positives in the
tools/token-mapping-analyzerresidue detector and documents the
opacity-checkerboard-square-{dark,light}propertyterms that were flagged by it.
component-l-boldetc.into
variant:"component"+property:"typography"+size+ existingweight.legacyKeyis pinned throughout, so legacy output is unchanged.componentunder a newtypography-rolecategory (compact in-component scale, alongside body/detail/heading/title).typography(composite type-style property) and
square-dark/square-light(opacity-checkerboardtile color, kept atomic — "dark"/"light" identify the tile's fixed relative lightness,
not the surrounding colorScheme theme, so decomposing further would collide with
colorSchemesemantics).content-color,square-dark,square-light, androw-heightas unresolved fusion — they'reregistered atomic property terms whose segments happen to collide with an unrelated
object/anatomy registry id, not real decomposition gaps.
Related Issue
Closes spectrum-design-data-284.9.
Motivation and Context
Last item in the 284 fusion-residue sweep — after this, every
name.propertyin thecorpus is atomic, with fused segments moved to structured fields.
How Has This Been Tested?
cargo run -p design-data-cli -- migrate legacy-verify— legacy output OK, byte-identical.cargo run -p design-data-cli -- migrate roundtrip-verify— roundtrip OK.moon run design-data:validate sdk:test sdk:lint— all green.moon run :test(JS/AVA) — all green except a pre-existingsdk-wasm:testparityfailure (
Dataset.embedded() query result .raw is a plain object, not a Map),confirmed to fail identically on
mainin an isolated worktree — unrelated to this change.Types of changes
Checklist: