Replies: 1 comment 1 reply
-
|
This is great @GarthDB ! I have some comments: The problem/solution is mismatched
The problem defined here includes the overarching challenges we've identified, but this is not a solution to all of them. The way this is written strongly suggests that the token lifecycle metadata is the solution to this problem. I would recommend reducing the problem definition here to the specific problem the lifecycle metadata solves: "No formal lifecycle tracking or deprecation process exists" This is made more unclear by the Strategic Goal section, which only includes the higher level problem statement, and nothing about the lifecycle. Alternatively rephrasing the solution to clarify or include "...to ensure the enhancements to our token system required to solve the larger problem can be clearly communicated, tracked, and managed by our team and consumers" so it's clear this doesn't solve the problems of discoverability, managing complexity, or naming issues. Context item questionsTwo items in your context origin section have me confused
Could you clarify what this is referring to with links to provide context? Related workCould we add SDS-15500 to this list? ProposalI really like this proposal 👏. The level of granularity in the lifecycle data is a much more sophisticated solution than simple TimelineThis looks like a timeline for the entirety of the semantic token work, rather than a timeline for this specific proposal (adding metadata to tokens / schema). This positions the proposal as being dependent upon asynchronous work, which it should not be if it's merely about adding this new metadata into the token system. Is this RFC proposal about adding metadata, or is it about the entirety of the refinement initiative (adding semantic tokens, deprecating old ones)? My impression is that the proposal you're making is an architectural enhancement that will support the refinement work, but it is not dependent upon it to be implemented. If this work is dependent upon the other work, I have other details as the January time frame is only for Layout tokens; not for other token types. Also that work is tracked under SDS-15500. Related links redundancyIt's a bit unclear what the difference is between the "Related work" section and "Related links" at the bottom. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
[UPDATED] RFC: Token Lifecycle Metadata Framework
Status: Draft - Updated Based on Feedback
Author: Garth Braithwaite
Related: DNA-1458, SDS-15500
Recent Updates (Oct 29, 2025): Updated based on @NateBaldwinDesign's feedback to clarify scope, dependencies, and timeline. This RFC is about the infrastructure (lifecycle metadata), not about specific token deprecations.
Executive Summary
This RFC proposes a systematic token lifecycle metadata framework for the Spectrum design data system, providing the infrastructure needed to safely evolve the token system over time.
Problem: No formal lifecycle tracking or deprecation process exists, making it difficult to safely evolve the token system without breaking implementations or surprising consumers.
Solution: Establish a token lifecycle metadata schema (inspired by Swift's
@availableattribute) and governance-driven deprecation process that ensures backwards compatibility and clear communication. This foundational infrastructure will enable future token refinement initiatives (such as SDS-15500) to proceed safely while maintaining backwards compatibility.This RFC's Specific Goal
Establish a token lifecycle metadata framework that enables the safe evolution of the token system, ensuring that consumers:
Related Work
Proposal: Token Lifecycle Metadata Schema
Inspired by: Swift's
@available, SassDoc's@deprecatedEvery token will include lifecycle metadata:
{ "token-name": { "value": "...", "lifecycle": { "introduced": "2.0.0", // Semver when token was added "lastModified": "2.1.0", // Last semver where value/metadata changed "status": "active", // active | deprecated | removed "deprecated": null, // Semver when marked deprecated "plannedRemoval": null, // Target semver for removal "renamed": null, // New token name (if renamed) "message": null // Deprecation/migration message } } }Example: Deprecated Token
{ "button-background-primary": { "value": "{action-background-default}", "lifecycle": { "introduced": "1.0.0", "lastModified": "3.0.0", "status": "deprecated", "deprecated": "3.0.0", "plannedRemoval": "4.0.0", "renamed": "action-background-default", "message": "Use semantic token 'action-background-default' instead. This token will be removed in 4.0.0." } } }Governance-Driven Deprecation Process
Mandatory: At least 2 monthly governance meetings must occur between deprecation announcement and token removal.
Example Timeline:
Implementation Phases
Phase 1: Schema and Infrastructure
lifecyclefields to Design Data JSON schemaDeliverable: Token schema supports lifecycle metadata with full validation. All existing tokens have baseline lifecycle data.
Future Work: Using the Framework for Token Evolution
Once the lifecycle metadata framework is in place (this RFC), it will enable safe token evolution across multiple initiatives:
Semantic Token Refinement (SDS-15500)
Layout Token Work (SDS-15227, SDS-15229)
Note: The lifecycle metadata framework (this RFC) is not dependent on these token refinement initiatives. It's an architectural enhancement that enables them to proceed safely.
Dependencies
This RFC Requires:
This RFC Does NOT Require:
This RFC Enables (Unblocks):
Tooling and Automation
Build-Time Warnings
Example (CSS build warning):
Example (Swift compilation warning):
Developer Experience
Success Metrics
Process Metrics
References
Jira Tickets
External Inspiration
@availableAttribute@deprecatedAnnotation📄 Full RFC: Available in internal docs with complete details on proposal, risks, alternatives, and implementation details.
Beta Was this translation helpful? Give feedback.
All reactions