Skip to content

History / Night Watch Component Auditor

Revisions

  • Ledger tooling and the scores page are on main; activate T34

    @cixzhang cixzhang committed Aug 11, 2026
  • Delete the superseded hardening and auditor pages; repoint every link at the rubric

    @cixzhang cixzhang committed Aug 11, 2026
  • Component Auditor: fix the renamed Design Conventions table, the ledger link, and the tool that does not exist

    @cixzhang cixzhang committed Aug 11, 2026
  • Component auditor: one component a night, audit-fix-reaudit, ledger as the only state, no issues

    @cixzhang cixzhang committed Aug 11, 2026
  • Wiki-wide: drop the mode-letter shorthand for plain language

    @cixzhang cixzhang committed Aug 11, 2026
  • 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.

    @cixzhang cixzhang committed Aug 11, 2026
  • Document the ledger write path end to end

    @cixzhang cixzhang committed Aug 11, 2026
  • Audit loop: file an issue per BLOCK, link it from the ledger, re-audit on resolution

    @cixzhang cixzhang committed Aug 10, 2026
  • Auditor and rubric: recording the score in the ledger is part of every audit

    @cixzhang cixzhang committed Aug 10, 2026
  • 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.

    @cixzhang cixzhang committed Aug 10, 2026
  • 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.

    @cixzhang cixzhang committed Aug 10, 2026
  • 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.

    @cixzhang cixzhang committed Aug 10, 2026
  • 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).

    @cixzhang cixzhang committed Aug 10, 2026
  • 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.

    @cixzhang cixzhang committed Aug 10, 2026
  • 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.

    @cixzhang cixzhang committed Aug 10, 2026
  • 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.

    @cixzhang cixzhang committed Aug 10, 2026
  • 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.

    @cixzhang cixzhang committed Aug 10, 2026
  • Clarify transient reorder opacity exception

    @ernestt ernestt committed Aug 6, 2026
  • Document reorder interaction state

    @ernestt ernestt committed Aug 6, 2026
  • 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'.

    @cixzhang cixzhang committed Jul 12, 2026
  • 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.

    @cixzhang cixzhang committed Jul 12, 2026
  • 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

    @ernestt ernestt committed Jul 8, 2026
  • 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>

    @rubyycheung rubyycheung committed Jul 1, 2026
  • Astryx design system wiki Documentation for the Astryx design system: API conventions, component authoring, theming, RSC utilities, Night Watch automation, and contribution guides.

    @cixzhang cixzhang committed Jun 23, 2026