There was an error while loading. Please reload this page.
Ledger tooling and the scores page are on main; activate T34
Delete the superseded hardening and auditor pages; repoint every link at the rubric
Component Auditor: fix the renamed Design Conventions table, the ledger link, and the tool that does not exist
Component auditor: one component a night, audit-fix-reaudit, ledger as the only state, no issues
Wiki-wide: drop the mode-letter shorthand for plain language
Ledger: the JSON is the only stored form; delete the generated table Component-Scores.md was a second copy of component-scores.json and went stale the moment the JSON changed without a regeneration. The ledger now has exactly one stored form (the JSON) and exactly one view (the sandbox page), which fetches it at runtime and can therefore never be out of date. Every page that linked [[Component Scores]] now links the sandbox page.
Document the ledger write path end to end
Audit loop: file an issue per BLOCK, link it from the ledger, re-audit on resolution
Auditor and rubric: recording the score in the ledger is part of every audit
Component Auditor: run the rubric instead of restating its checks Sections 1-11 duplicated the Component Audit Rubric and had already drifted from it. The page keeps what is unique to the role: nightly selection, batching, the PR conventions, the refinement loop and the state file.
Fold the API Auditor's composition checks into the Component Auditor Slot hoisting, the raw-element prop-interface angle, undemonstrated escape hatches and boolean-or-config were dropped when the roles merged; the successor had no composition section at all. They are live checks, so they move rather than retire.
Fix token names in the token layer and type scale tables Size, radius, shadow, ease and typography examples named tokens that are not in tokens.stylex.ts. The raw text scale is --font-size-*, not --text-*, and there is no --shadow-menu.
Correct the neutral gray token names to the ones that exist --color-secondary, --color-muted and --color-wash are not in packages/core/src/theme/tokens.stylex.ts. The real roles are --color-neutral (self-contained elements), --color-background-muted (containers with content), --color-track (slim rails) and --color-background-body (page level).
Correct the extensibility mechanism: VariantMap interfaces, not defineTheme variants defineTheme has no variants key. Extensible props declare a *Map interface in the component's public subpath barrel, derive the prop type from it, and let unknown values fall through to base styles.
Correct the input size union and heights to sm/md/lg at 28/32/36px TextInput, Selector and Button all derive size from the same sizeStyles keyed sm/md/lg, backed by --size-element-sm/md/lg (28/32/36px). There is no inputs-only sm|md union, and --size-sm/md/lg do not exist.
Async actions: the shipped prop is changeAction, not on{Verb}Action Every async-capable core component ships changeAction / clickAction; there are zero on*Action props in packages/core/src. Async actions drop the on prefix.
Correct export conventions: exports map is generated, not tsup The core exports map is generated by scripts/sync-exports.js and guarded by sync:exports:check and verify-exports.mjs. Hand-editing it is a review reject. vega is the only package still built with tsup.
Clarify transient reorder opacity exception
Document reorder interaction state
Refine rest-forwarding guidance: per-category precedence (combine/compose/clobber) + composeEventHandlers Correct the earlier oversimplified 'spread ...rest' rule. Document that prop collisions resolve per category: className/style combine (mergeProps), contract props let the component win (set after {...rest}), owned handlers compose (composeEventHandlers, #3863), neutral pass-throughs forward. Update the Component Auditor check to match — it's a judgment check on collision handling, not just 'does ...rest exist'.
Component Auditor: catch components that extend BaseProps but never forward ...rest Add a check (and the underlying API convention) for the silent-drop bug fixed in #3738 and #3852: a component extends BaseProps so data-testid/aria-* type-check, but never captures/spreads ...rest, so those pass-through attributes never reach the DOM. Documents the placement rule (after mergeProps, before component-owned role/aria) and distinguishes it from the composed-component overwrite check.
Add Design Conventions page Design-side sibling of API Conventions: the intention behind token choices (foundations), standard state representations across component archetypes, and how design quality is evaluated. - Wire the Contributing Design Review section and Home index to the new page - Component Auditor gains a Design Conventions dimension for the objectively-checkable rules (spacing grid, concentric radius, contrast, type hierarchy, motion safety, stacking); subjective visual judgment stays in Hardening Layer 3
Update wiki for XDS → Astryx rename Refresh outdated references across all wiki articles to match the current codebase after the XDS → Astryx rebrand: - Package scope @xds/* → @astryxdesign/* (theme-default/theme-daily → theme-neutral; ESLint rule → @astryx/*) - CLI command xds → astryx; fix stale commands (build-theme → theme build, agent-docs folded into init) - CSS/layers: xds.css → astryx.css, @layer xds → @layer astryx-base, @layer xds.theme → @layer astryx-theme - Config key "xds" → "astryx"; env var XDS_THEME → ASTRYX_THEME - Repo facebookexperimental/xds → facebook/astryx; versions 0.0.15 → 0.1.1 - Swizzle output dir components/xds/ → components/astryx/ - API rename xdsThemeProps → themeProps (verified against source) - Asset set xds_oss → astryx (browse via internalfb.com/assets/set/astryx) - Correct component-purity docs: components are unprefixed (no "Astryx" prefix) Co-authored-by: Cursor <cursoragent@cursor.com>
Astryx design system wiki Documentation for the Astryx design system: API conventions, component authoring, theming, RSC utilities, Night Watch automation, and contribution guides.