Skip to content

feat(spec): sync design-data-spec, SDK validators, registry, and tooling from beta#837

Merged
GarthDB merged 4 commits into
mainfrom
feat/spec-sync-to-main
May 5, 2026
Merged

feat(spec): sync design-data-spec, SDK validators, registry, and tooling from beta#837
GarthDB merged 4 commits into
mainfrom
feat/spec-sync-to-main

Conversation

@GarthDB
Copy link
Copy Markdown
Member

@GarthDB GarthDB commented May 5, 2026

Description

Brings the most up-to-date design-data-spec content from origin/beta and PR #814 onto main in a single unified PR — without touching packages/tokens/.

Changes grouped by area:

packages/design-data-spec/

  • Proposal 010: composite token support — $valueType field, value-type schemas (typography, drop-shadow, typography-scale), rules SPEC-014/015/016, conformance fixtures
  • Proposal 012: string-name escape hatch — plain-string name allowed as tech-debt escape, rule SPEC-017, conformance fixtures
  • Proposal 003: scaleIndex field declaration
  • Updated spec prose: token-format.md, taxonomy.md, evolution.md, manifest.md

packages/design-system-registry/

  • Vocabulary expansion across anatomy-terms, sizes, and variants to close gaps surfaced by token-to-spec gap analysis

sdk/core/

  • SPEC-017 validator (spec017.rs) — string-name tech-debt rule
  • Typography-scale handling in legacy.rs / migrate.rs
  • Registry data growth in registry_data.rs
  • lib.rs cleanup, Cargo.toml dep cleanup

docs/proposals/

  • Proposals 001–010 and 012 (typography taxonomy, component property axes, numeric scale index, drop-shadow classification, compound states, vocabulary gaps, ordinal rank, typography-scale composite, composite token support, string-name escape hatch)

tools/token-mapping-analyzer/

  • Decomposer and registry-index enhancements, updated tests, .gitignore

.moon/workspace.yml

  • Normalized all moon project IDs to kebab-case (was a mix of camelCase and hyphenated)

.changeset/

  • Three changesets scoped to @adobe/design-data-spec and @adobe/design-system-registry only — no @adobe/spectrum-tokens entries

Related Issue

Related to #814 (token-to-spec gap analysis) and the beta release branch work in #817, #819, #820.

Motivation and Context

The beta branch and PR #814 both advanced the spec significantly but on separate tracks. This PR merges that work onto main so the normative spec, SDK validators, and registry vocabulary are available without waiting for a full tokens release.

Key constraint: packages/tokens/ is intentionally unchanged — the typography-scale and token-rename work from #814/#819 will land in a follow-up PR.

How Has This Been Tested?

  • git diff main..HEAD -- packages/tokens/ — empty (hard guard passes)
  • moon run sdk:test — 164 tests pass (incl. SPEC-017 string-name validator)
  • moon run design-data-spec:check — layout guard passes
  • moon run design-system-registry:test — 65 tests pass
  • moon run component-schemas:test — 27 tests pass (no regression)
  • moon run tokens:test — 20 tests pass (no regression)
  • moon run sdk:codegen-check — registry_data.rs and manifest.schema.json up to date
  • pnpm ava in tools/token-mapping-analyzer — 10 tests pass
  • Verified both ### Value-type declaration and ### String-name escape hatch sections present in spec/token-format.md
  • .changeset/ files list only @adobe/design-data-spec and @adobe/design-system-registry

Types of changes

  • New feature (non-breaking change which adds functionality)

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.

GarthDB added 2 commits May 4, 2026 19:53
…yzer from beta to main

Brings the most up-to-date spec, schemas, conformance fixtures, SDK
validators, registry vocabulary, and supporting tooling onto main, without
touching packages/tokens/.

Includes Proposal 010 (composite tokens), Proposal 012 (string-name
escape hatch), proposals 001–010 + 012 documents, registry vocabulary
expansion (anatomy-terms, sizes, variants), SPEC-014/015/016/017 rules
and fixtures, scaleIndex field, and the token-mapping-analyzer tooling.
Rename camelCase project IDs to hyphenated equivalents:
  componentSchemas → component-schemas
  designDataSpec → design-data-spec
  csvGenerator → token-csv-generator
  componentDiff → component-diff-generator
  spectrumDiffCore → spectrum-diff-core
  diff → token-diff-generator

Also update the dependent reference in markdown-generator/moon.yml and
the command example in design-data-spec/README.md.
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 5, 2026

🦋 Changeset detected

Latest commit: 25bcf64

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

This PR includes changesets to release 3 packages
Name Type
@adobe/design-data-spec Minor
@adobe/design-system-registry Minor
markdown-generator 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

@GarthDB
Copy link
Copy Markdown
Member Author

GarthDB commented May 5, 2026

Run report for 25bcf64e

Total time: 2m 29s | Comparison time: 7m 28s | Estimated savings: 4m 58s (66.7% faster)

Action Time Status Info
⬛️ SetupProto(0.51.4) 0ms Skipped
🟩 SyncWorkspace 6.7ms Passed
🟩 SyncProject(release-analyzer) 0.6ms Passed
🟩 SyncProject(s2-visualizer) 0.7ms Passed
🟩 SyncProject(component-schemas) 0.4ms Passed
🟩 SyncProject(design-data-spec) 0.3ms Passed
🟩 SyncProject(design-system-registry) 0.4ms Passed
🟩 SyncProject(s2-docs-mcp) 0.3ms Passed
🟩 SyncProject(optimized-diff) 0.3ms Passed
🟩 SyncProject(visualizer) 0.4ms Passed
🟩 SyncProject(spectrum-diff-core) 0.4ms Passed
🟩 SyncProject(release-timeline) 0.4ms Passed
🟩 SyncProject(component-options-editor) 0.4ms Passed
🟩 SyncProject(component-diff-generator) 0.3ms Passed
🟩 RunTask(s2-docs-mcp:build) 38.5ms Passed
🟩 SyncProject(token-diff-generator) 3.9ms Passed
🟩 SyncProject(sdk) 0.4ms Passed
🟩 SyncProject(tokens) 0.4ms Passed
🟩 SyncProject(token-csv-generator) 0.3ms Passed
🟩 SyncProject(markdown-generator) 0.4ms Passed
And 62 more...
Expanded report
Action Time Status Info
🟩 SyncProject(site) 0.4ms Passed
🟩 RunTask(release-timeline:clean) 45.7ms Passed
🟩 SyncProject(spectrum-design-data-mcp) 0.4ms Passed
🟩 SyncProject(viewer) 5.4ms Passed
🟩 RunTask(viewer:clean) 67.4ms Passed
🟩 RunTask(site:copySpec) 1.2s Passed
⬛️ SetupToolchain(node:20.17.0) 2.4s Skipped
🟩 SetupToolchain(rust:1.85.0) 17.7s Passed
🟩 InstallWorkspaceDeps(node:20.17.0) 15.6s Passed
🟩 RunTask(s2-docs-mcp:report) 144.2ms Passed
🟩 InstallProjectDeps(node:20.17.0, sdk) 15.7s Passed
🟩 InstallWorkspaceDeps(rust:1.85.0, sdk) 903.9ms Passed
🟩 RunTask(design-system-registry:validate) 340.1ms Passed
🟩 RunTask(release-timeline:updateData) 1.7s Passed
🟩 RunTask(design-data-spec:check) 209.7ms Passed
🟩 RunTask(spectrum-diff-core:test) 2.5s Passed
🟩 RunTask(spectrum-design-data-mcp:test) 2.5s Passed
🟩 RunTask(token-csv-generator:generateCSV) 269.7ms Passed
🟩 RunTask(release-analyzer:test) 2s Passed
🟩 RunTask(s2-docs-mcp:bundle) 169.1ms Passed
🟩 RunTask(s2-docs-mcp:index) 158ms Passed
🟩 RunTask(optimized-diff:test) 2.3s Passed
🟩 RunTask(site:generateToolsPage) 1.1s Passed
🟩 RunTask(s2-visualizer:typescript) 4.4s Passed
🟩 RunTask(visualizer:typescript) 4.5s Passed
🟩 RunTask(token-csv-generator:test) 2s Passed
🟩 RunTask(component-options-editor:test) 10.3s Passed
🟩 RunTask(design-system-registry:test) 1.9s Passed
🟩 RunTask(tokens:buildManifest) 315.3ms Passed
🟩 RunTask(component-options-editor:lint) 8.9s Passed
🟩 RunTask(component-options-editor:type-check) 8.8s Passed
🟩 RunTask(component-schemas:test) 4.4s Passed
🟩 RunTask(component-diff-generator:test) 4.1s Passed
🟩 RunTask(sdk:codegen) 340.7ms Passed
🟩 RunTask(sdk:codegen-check) 206ms Passed
🟩 RunTask(token-diff-generator:test) 9.4s Passed
🟩 RunTask(release-timeline:build) 3s Passed
🟩 RunTask(spectrum-diff-core:ci) 31.9ms Passed
🟩 RunTask(optimized-diff:benchmark) 1.2s Passed
🟩 RunTask(s2-visualizer:build) 6.5s Passed
🟩 RunTask(visualizer:build) 6.3s Passed
🟩 RunTask(component-options-editor:validate) 26.5s Passed
🟩 RunTask(component-diff-generator:diff) 374.5ms Passed
🟩 RunTask(component-diff-generator:ci) 13.6ms Passed
🟩 RunTask(component-options-editor:build) 56.9s Passed
🟩 RunTask(sdk:lint) 55.4s Passed
🟩 RunTask(token-diff-generator:diff) 425.5ms Passed
🟩 RunTask(token-diff-generator:ci) 21ms Passed
🟩 RunTask(tokens:buildTokens) 1m 46s Passed
🟩 RunTask(tokens:build) 24.2ms Passed
🟩 RunTask(viewer:prepare) 266.6ms Passed
🟩 RunTask(viewer:export) 111.3ms Passed
🟩 RunTask(markdown-generator:generate) 726.2ms Passed
🟩 RunTask(site:copyContent) 148.5ms Passed
🟩 RunTask(site:build) 6.7s Passed
🟩 RunTask(site:export) 24.7ms Passed
🟩 RunTask(sdk:build) 51.9s Passed
🟩 RunTask(tokens:verifyLegacyRoundtrip) 805.8ms Passed
🟩 RunTask(tokens:verifyDesignDataSnapshot) 1.5s Passed
🟩 RunTask(tokens:validateDesignData) 1.6s Passed
🟩 RunTask(sdk:test) 1m Passed
🟩 RunTask(tokens:test) 3.8s Passed
Touched files
.changeset/proposal-010-composite-token-support.md
.changeset/proposal-011-string-name-escape-hatch.md
.changeset/registry-anatomy-variants-expansion.md
.moon/workspace.yml
docs/proposals/001-typography-taxonomy.md
docs/proposals/002-component-property-axes.md
docs/proposals/003-numeric-scale-index.md
docs/proposals/004-drop-shadow-classification.md
docs/proposals/005-compound-states.md
docs/proposals/006-vocabulary-gaps.md
docs/proposals/008-ordinal-rank-field.md
docs/proposals/009-typography-scale-composite.md
docs/proposals/010-composite-token-support.md
docs/proposals/011-string-name-escape-hatch.md
packages/design-data-spec/README.md
packages/design-data-spec/conformance/README.md
packages/design-data-spec/conformance/invalid/SPEC-016/expected-errors.json
packages/design-data-spec/conformance/invalid/SPEC-016/tokens.tokens.json
packages/design-data-spec/conformance/invalid/SPEC-017/expected-errors.json
packages/design-data-spec/conformance/invalid/SPEC-017/tokens.tokens.json
packages/design-data-spec/conformance/valid/composite-drop-shadow.json
packages/design-data-spec/conformance/valid/composite-typography-scale.json
packages/design-data-spec/conformance/valid/composite-typography.json
packages/design-data-spec/conformance/valid/string-name-escape-hatch.json
packages/design-data-spec/fields/scaleIndex.json
packages/design-data-spec/rules/rules.yaml
packages/design-data-spec/schemas/field.schema.json
packages/design-data-spec/schemas/token.schema.json
packages/design-data-spec/schemas/value-types/drop-shadow.schema.json
packages/design-data-spec/schemas/value-types/typography-scale.schema.json
packages/design-data-spec/schemas/value-types/typography.schema.json
packages/design-data-spec/spec/evolution.md
packages/design-data-spec/spec/token-format.md
packages/design-system-registry/registry/anatomy-terms.json
packages/design-system-registry/registry/sizes.json
packages/design-system-registry/registry/variants.json
sdk/core/Cargo.toml
sdk/core/src/legacy.rs
sdk/core/src/lib.rs
sdk/core/src/migrate.rs
sdk/core/src/registry_data.rs
sdk/core/src/validate/rules/mod.rs
sdk/core/src/validate/rules/spec017.rs
tools/markdown-generator/moon.yml
tools/token-mapping-analyzer/.gitignore
tools/token-mapping-analyzer/src/decomposer.js
tools/token-mapping-analyzer/src/registry-index.js
tools/token-mapping-analyzer/test/decomposer.test.js

GarthDB added 2 commits May 4, 2026 21:01
When syncing spec content from beta, the RFC reconciliation work landed
in main via #824 was accidentally regressed because beta forked before
that commit. Restore the non-lastModified portions:

- taxonomy.md: 'Structure vs. component — when does the line move?'
  section with the worked card example and Nate Baldwin attribution,
  plus the RFC #806 reference in the categories note.
- manifest.md: query-language deferral clarification pointing at
  query.md as the normative reference.

The lastModified-related portions of #824 (token-format.md lifecycle
table, evolution.md mapping) are intentionally not restored, since the
SPEC-014 ID is now occupied by composite-inline-alias-exists.
Closes the 010→012 numbering gap by renumbering the string-name
escape hatch (originally landed on beta as Proposal 012) to 011.
This PR is the proposal's first appearance on main, so the rename
does not affect any published references on main.

- Rename docs/proposals/012-string-name-escape-hatch.md -> 011-...
- Rename .changeset/proposal-012-... -> proposal-011-...
- Update file titles and changeset body to 'Proposal 011'
- Update example UUID in spec/token-format.md from 0012 to 0011
  to match the proposal-number convention used in the example.
@GarthDB GarthDB merged commit 29531ee into main May 5, 2026
4 checks passed
@GarthDB GarthDB deleted the feat/spec-sync-to-main branch May 5, 2026 03:48
@GarthDB GarthDB mentioned this pull request May 5, 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