Replies: 1 comment
|
The mechanism this RFC's metrics depend on is now live, so it can move off "blocked on manifest adoption existing." PR #1353 shipped the manifest cascade over a pinned The tooling that would surface adoption (a validation Action, a repo template, platform-scoped querying via MCP) is tracked under epic spectrum-design-data-h890. Worth revisiting the metric definitions here now that there's a manifest to point them at. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Relationship to other work
spec/manifest.mddocs/rfc-coordination.mdSummary
Two metrics run today, informally: design-token version per platform, and AI-generated cross-platform difference reports. Neither is backed by a released tool, and both are behind the original Apr 3 target for KRs 2D/2E. This RFC is the formal proposal Aaron Brownlee asked for at the direction he set at the May 15 Director Review:
We propose two phases. Phase 1 is a bridge: turn the coverage scanners already built for the Jul 30 baseline into a deterministic, versioned, scheduled tool, so the Sep 30 POC has real numbers behind it. Phase 2 is the fix that actually lasts: every platform declares its relationship to the foundation using the existing platform manifest spec, and coverage metrics become a query over those manifests instead of a set of scanners we maintain by hand. Phase 1 gets us a number by Sep 30. Phase 2 gets us a number we don't have to keep re-earning every time a platform changes its build.
Problem
No platform declares its relationship to the foundation dataset today. Each one just consumes tokens however it consumes them, and the shape of that consumption is different everywhere: SWC 1st-gen resolves
var(--spectrum-x), SWC 2nd-gen compiles atoken()call through postcss-token, React Spectrum expandscolorScale()by regex into hundreds of literal names, and iOS ships its own asset catalogs. There's no common data source to read coverage from, so we scan compiled output instead, once per platform, using a different detector for each one.That's what produced the Jul 30 baseline: four hand-tuned scripts, each specific to one platform's build output, run manually against a single checkout. They're not scheduled, not in CI, and not resilient to a platform changing its own tooling. If SWC 2nd-gen changes how it compiles
token()calls, our detector for it breaks quietly and the number goes stale without anyone noticing.That's the actual problem: not that we lack a report, but that we lack a shared way for a platform to say what it depends on from the foundation. Everything downstream, coverage numbers included, is a workaround for that missing declaration.
Design principle
Aaron's ask sets the bar for both phases: AI can be the entry point (asking for a report, phrasing a query), but the number itself has to come from a deterministic, versioned, released tool. No AI in the number generation. The Jul 30 baseline already meets this bar (script-generated, re-run twice, byte-identical), and both phases below keep meeting it.
Proposal, Phase 1: productize the coverage scanners (bridge)
Turn the four platform-specific scanners behind the Jul 30 baseline into one released, versioned tool:
var()resolution, SWC2ndtoken()compiled-output scan, RScolorScale()expansion, iOS asset-catalog scan), moved from scratchpad scripts into a maintained package.This phase feeds the Sep 30 interim commitment: a POC/example metrics report to leadership generated by a real tool, not written by an AI. It's explicitly a bridge. The detectors stay brittle because they're inferring a relationship the platform never declared.
Proposal, Phase 2: manifest-derived metrics (target)
Once a platform's
manifest.mddeclares itsfoundationVersionpin,include/excludequeries, typedoverrides, andextensions, coverage stops being something we infer from compiled output and becomes something we read directly:foundationVersiontrails the latest release.This is the same manifest shape proposed for starter repos (the adoption on-ramp platforms fork to get onto the cascade). A platform adopting a starter repo gets metrics for free, because the manifest it already needs for adoption is the same manifest the metrics tool reads. Once a platform is on a manifest, its Phase 1 scanner retires.
Metrics methodology
Applies to both phases, since Phase 2 doesn't change what's being measured, only where the input comes from.
{token}alias references from each call site.Baseline evidence (Jul 30, first cut)
Two governance findings came out of the set/mode participation check run alongside this baseline, not from coverage itself:
wireframeis authored on 470 tokens with zero product usage across all four platforms. It's a dead set.Timeline
Open questions
foundationVersionandinclude/excludecurrent?All reactions