Skip to content

ENFORCE design-system in CI: enforcing gate-ds-conformance + typography/spacing/layout coverage + visual-regression/frames Playwright gate #134

Description

@izzywdev

@claudeThe design-system is NOT being enforced; prod UI is visually inconsistent (fonts, alignment, layouts). The gate-ds-conformance gate shipped report-only (|| true) and only greps for raw hex/px/font — it never blocks, and it can't catch visual inconsistency. Harden the ADLC so design-system-first is actually ENFORCED. Author canonically in FuzeSDLC (L0) + propagate to FuzeFront. Land via PR.

Make it enforcing + catch real inconsistency

  1. Flip gate-ds-conformance to ENFORCING (remove the || true / report-only) so a PR with non-token UI FAILS. Keep the per-component @claude extraction-issue behavior.
  2. Broaden the conformance check beyond raw hex/px: also FAIL on
    • hard-coded font-family / font-size / font-weight / line-height not from the typography tokens,
    • hard-coded spacing/margins/padding not on the spacing scale,
    • ad-hoc layout (raw fl/grid values, magic widths) outside the layout primitives,
    • inline style={{…}} with literal visual values, and
    • re-declared components that duplicate an existing DS primitive.
      Exclude the design-system package itself. Make the messages actionable (file:line + the token to use).
  3. Add a VISUAL verification gate (this is the missing piece — grep can't see misalignment): wire the ui-frame-contract Playwright-against-approved-frames as a REQUIRED pre-merge gate, and add visual-regression / screenshot-diff of the key screens (shell, billing, security/org, app menu) against approved baselines so font/alignment/layout drift FAILS CI. frontend-test-engineer owns the Playwright/visual side.
  4. Wire both as required status checks in the harden-gate stack + the branch ruleset (devops-engineer applies the ruleset once the repo is clean).
  5. Update the baseline + frontend-engineer/frontend-test-engineer agent defs: every UI PR must pass the enforcing DS gate + the visual gate; design-system-first is a hard merge gate, not advisory.

STATE

done = report-only token-grep gate exists (#108); remaining = enforcing + typography/spacing/layout/inline-style coverage + visual-regression/frames-Playwright required gate + ruleset wiring + agent-def updates. decisions = design-system-first is a BLOCKING gate.

End with DONE: <PR links FuzeSDLC + FuzeFront>. @izzywdev BLOCKED: <q> + STATE if blocked.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions