Skip to content

fix(design-data): decompose background/opacity + misc fusion residue (284.6, 284.7, 284.8) - #1314

Merged
GarthDB merged 5 commits into
mainfrom
fix/decompose-background-residue-284-6
Jul 30, 2026
Merged

fix(design-data): decompose background/opacity + misc fusion residue (284.6, 284.7, 284.8)#1314
GarthDB merged 5 commits into
mainfrom
fix/decompose-background-residue-284-6

Conversation

@GarthDB

@GarthDB GarthDB commented Jul 29, 2026

Copy link
Copy Markdown
Member

Description

Three-part follow-up to #1313 (284.3), sweeping up the remaining property-fusion
residue that the earlier audit's token (legacyKey-shaped) filter missed.

284.6 — background/opacity residue

  • packages/design-data/tokens/color-aliases.tokens.json: split
    background-opacity-key-focus into object/property, matching the
    sibling background-*-opacity state tokens.
  • packages/design-data/tokens/color-component.tokens.json: split
    card-background-loading-color, table-selected-row-background-opacity
    (+ hover/non-emphasized variants), tree-view-row-background-hover, and
    tree-view-selected-row-background-{default,hover} into object/property,
    keeping existing legacyKey pins.

stack-item-selected-background-color-highlight was left unsplit — it fails
legacy-verify with component: "stack-item" set (the reference legacy JSON
has no component field for this token), and anatomy: "item" isn't
standaloneScope-flagged, so it would trip a new SPEC-025 error. That's a
registry decision, not a data-only change — out of scope here.

284.7 — final misc single-off residue

  • registry/variants.json: register base/layer (context) and hero
    (card emphasis) variant ids.
  • registry/property-terms.json: register rounding-increment.
  • color-aliases.tokens.json: background-{base,layer-1,layer-2}-color
    split into variant/object/property.
  • typography.tokens.json: default-font-family simplified to atomic
    property:"font-family".
  • layout-component.tokens.json: split card-selection-background-size,
    coach-indicator ring rounding-increments, menu-item-section-divider- height, radio-button-selection-indicator (adds state:["selected"]),
    table-border-divider-width, collection-card-minimum-height-hero-* (5),
    drop-zone-cjk-title-font-size.
  • layout.tokens.json: side-focus-indicator (vertical-tabs selection
    indicator) split into orientation:"vertical"/anatomy:"focus- indicator"/property:"thickness", reusing existing vocabulary.
  • opacity-checkerboard-square-{dark,light} intentionally left atomic — a
    design-asset checkerboard swatch, not a styling surface.

284.8 — surface-color legacy alias residue

The remaining surface-colorRole fusion bucket (179 unique tokens): registered
legacy-alias atomic property terms (background-color, border-color,
visual-color, border-opacity) that still structurally fused an object
concept into property. Team decision (Slack poll): split all four; leave
content-color/fill-color atomic (established precedent).

  • color-aliases.tokens.json, color-component.tokens.json,
    icons.tokens.json, layout-component.tokens.json,
    semantic-color-palette.tokens.json: split background-color
    object:"background" + property:"color", border-color
    object:"border" + property:"color", visual-color
    object:"visual" + property:"color", border-opacity
    object:"border" + property:"opacity", across 353 token entries, with an
    explicit legacyKey pin on every changed token.
  • Deprecated tokens with these properties were left untouched (out of scope).

Related Issue

Closes spectrum-design-data-284.6, spectrum-design-data-284.7, and
spectrum-design-data-284.8 (part of epic spectrum-design-data-284,
"Decompose fused token-name property values into structured fields").

Motivation and Context

284.3 (#1313) decomposed the bulk of surface/colorRole/anatomy fusion, but a
re-audit by the actual current property field (rather than the legacyKey-
shaped display string) turned up three more waves of residue: 8 background/
opacity tokens (284.6), a final grab-bag of one-off fusions across components
(284.7), and the last open surface-colorRole bucket of registered
legacy-alias properties (284.8). This PR closes all three.

How Has This Been Tested?

  • cargo run -p design-data-cli -- migrate legacy-verify --reference packages/tokens/src packages/design-data/tokens — byte-identical legacy output.
  • cargo run -p design-data-cli -- migrate roundtrip-verify packages/tokens/src — OK.
  • moon run design-data:validate — 0 SPEC-025 errors.
  • moon run sdk:codegen, moon run sdk:codegen-check, moon run sdk:test, moon run sdk:lint — all pass.
  • moon run :test (JS/AVA across the monorepo) — all pass.
  • node tools/changeset-linter/src/cli.js check --fail-on-warnings — both changesets valid.
  • Re-ran tools/token-mapping-analyzer — residue now limited to intentionally-atomic tokens (opacity-checkerboard-*, content-color), deprecated tokens (skipped by design), and pre-existing unrelated outliers (stack-item-background-color, border-dash-gap/length, etc.).

Screenshots (if appropriate):

N/A — data-only change.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • I have signed the Adobe Open Source CLA.
  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

Splits property fusion missed by 284.3 into structured name fields.

- color-aliases.tokens.json: background-opacity-key-focus -> object/property.
- color-component.tokens.json: card-background-loading-color,
  table-selected-row-background-opacity (+ variants), tree-view-row-background-hover,
  tree-view-selected-row-background-{default,hover} -> object/property.

Closes spectrum-design-data-284.6.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Jul 29, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 0778eb3

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 10 packages
Name Type
@adobe/spectrum-design-data Patch
@adobe/spectrum-component-api-schemas Patch
@adobe/design-system-registry Patch
@adobe/design-data-agent-mcp Patch
@adobe/design-data-mcp Patch
markdown-generator Patch
@adobe/token-corpus-migrate Patch
@adobe/token-naming-audit Patch
component-options-editor Patch
@adobe/spectrum-design-data-mcp Patch

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

@github-actions

Copy link
Copy Markdown
Contributor

🎨 Token Changes Report

Tokens Changed (0)

Original Branch: main


This comment was automatically generated by the token diff tool. 🤖

@github-actions

Copy link
Copy Markdown
Contributor

🧩 Component Schema Changes Report

No component schema changes detected.

This comment was automatically generated by the component schema diff tool. 🤖

@github-actions

github-actions Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Run report for 0778eb3f

Total time: 3m 24s | Comparison time: 5m 22s | Estimated savings: 1m 58s (36.7% faster)

Action Time Status Info
⬛️ SetupProto(0.57.4) 0ms Skipped
🟩 SyncWorkspace 11.9ms Passed
🟩 SyncProject(sdk) 0.7ms Passed
🟩 SyncProject(design-data) 1.4ms Passed
⬛️ SetupToolchain(node:20.17.0) 636.8ms Skipped
⬛️ SetupToolchain(rust:1.88.0) 922.7ms Skipped
🟩 SetupEnvironment(rust, sdk) 136.2ms Passed
⬛️ InstallDependencies(rust, sdk) 4.2ms Skipped
⬛️ SetupToolchain(pnpm:10.17.1) 863ms Skipped
⬛️ SetupToolchain(javascript) 0ms Skipped
🟩 SetupEnvironment(javascript) 0.9ms Passed
⬛️ InstallDependencies(javascript) 0.1ms Skipped
⬛️ SetupEnvironment(javascript, sdk) 3.4ms Skipped
🟩 RunTask(sdk:fmt-check) 689.7ms Passed
🟩 RunTask(design-data:validate-registry) 330.4ms Passed
🟩 InstallDependencies(javascript, sdk) 8.2s Passed
🟩 RunTask(sdk:codegen-check) 248.6ms Passed
🟩 RunTask(sdk:lint) 51.7s Passed
🟩 RunTask(sdk:build) 1m 47s Passed
🟩 RunTask(design-data:legacy-output) 797.9ms Passed
And 4 more...
Expanded report
Action Time Status Info
🟩 RunTask(design-data:roundtrip-verify) 2.1s Passed
🟩 RunTask(design-data:validate-dataset) 5.9s Passed
🟩 RunTask(design-data:validate) 3.1s Passed
🟩 RunTask(sdk:test) 3m 14s Passed SLOW
Changed files
.changeset/decompose-background-residue.md
.changeset/decompose-fusion-residue-sweep.md
.changeset/decompose-surface-color-object.md
packages/design-data/registry/property-terms.json
packages/design-data/registry/variants.json
packages/design-data/tokens/color-aliases.tokens.json
packages/design-data/tokens/color-component.tokens.json
packages/design-data/tokens/icons.tokens.json
packages/design-data/tokens/layout-component.tokens.json
packages/design-data/tokens/layout.tokens.json
packages/design-data/tokens/semantic-color-palette.tokens.json
packages/design-data/tokens/typography.tokens.json
sdk/core/src/registry_data.rs
tools/token-mapping-analyzer/scripts/decompose-surface-color-284-8.mjs
tools/token-mapping-analyzer/test/apply.test.js

Finishes the epic-284 property-fusion sweep: registers base/layer/hero
variants and rounding-increment, decomposes the last single-off tokens
(menu, radio-button, table-border, card-selection, coach-indicator ring,
default-font-family, collection-card hero heights, drop-zone cjk-title,
side-focus-indicator), and leaves opacity-checkerboard atomic (design asset).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@GarthDB GarthDB changed the title fix(design-data): decompose background/opacity fusion residue (284.6) fix(design-data): decompose background/opacity + misc fusion residue (284.6, 284.7) Jul 29, 2026
…property (284.8)

Splits background-color, border-color, visual-color, and border-opacity
into object + property across 353 token entries, resolving the last
open surface-colorRole fusion residue (closes spectrum-design-data-284.8).
content-color/fill-color remain atomic per prior epic-284 precedent.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@GarthDB GarthDB changed the title fix(design-data): decompose background/opacity + misc fusion residue (284.6, 284.7) fix(design-data): decompose background/opacity + misc fusion residue (284.6, 284.7, 284.8) Jul 29, 2026
GarthDB and others added 2 commits July 29, 2026 16:14
…acy-key test

apply.test.js's size-decomposition legacy-key check reconstructs the
pre-migration property by naively appending the size suffix, but
icon-domain tokens (e.g. ui-icon-2x-large) pin a legacyKey that drops
the word "size" entirely, so the reconstruction can never match. These
tokens' legacy-key preservation is already covered by the Rust-backed
migrate roundtrip-verify, same as the other OTHER_DECOMPOSABLE_FIELDS.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…cript

resolved was set from legacyKey two lines above, so resolved !== legacyKey
could never be true. Dead code — the script's actual correctness was
already verified by migrate legacy-verify/roundtrip-verify, not this check.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@GarthDB
GarthDB merged commit 3862608 into main Jul 30, 2026
9 checks passed
@GarthDB
GarthDB deleted the fix/decompose-background-residue-284-6 branch July 30, 2026 01:08
@GarthDB GarthDB mentioned this pull request Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant