Skip to content

feat: design knowledge split with rendered design review#68

Open
svihra wants to merge 4 commits into
N4M3Z:mainfrom
svihra:feat/design-knowledge
Open

feat: design knowledge split with rendered design review#68
svihra wants to merge 4 commits into
N4M3Z:mainfrom
svihra:feat/design-knowledge

Conversation

@svihra

@svihra svihra commented Jul 8, 2026

Copy link
Copy Markdown

Problem

Design guidance in forge-core stops at aesthetics: DesignFrontend covers distinctive marketing/landing design, but nothing covers data-dense product UI (dashboards, admin, analytics), nothing holds the cross-cutting design canon in one authoritative place, and nothing can verify a built interface against that canon. Source-level review cannot do the last part: it is blind on CSS-in-JS and React Native, and no static scan computes rendered contrast.

Approach

Split design knowledge by discipline and add rendered verification:

  • DesignPrinciples — non-invocable canon: durable framework-agnostic foundations, WCAG-anchored hard checks, advisory thresholds tiered so only spec-defined values fail. Cited by the other design skills.
  • DesignDashboard — data-UI discipline: density, chart-to-data-shape matching, state completeness, progressive disclosure.
  • DesignFrontend — rescoped to marketing/landing/brand-aesthetic surfaces; dashboards route to DesignDashboard.
  • DesignReview — capture-agnostic reviewer per ARCH-0015: consumes screenshot + axe-core JSON per (state, viewport); hard verdicts come only from axe; axe incomplete and absent states report not-verified, never pass; screenshot judgments carry a separate judgment-fail verdict. Capture is delegated (e.g. Playwright MCP), never bundled — forge-core owns the contract, not a browser.

Verified end-to-end with real Playwright + axe-core captures of a seeded-defect dashboard; the validated artifact set and expected findings live in tests/fixtures/design-review/. Verification produced two contract fixes now included: WCAG 2.5.8's spacing exception (isolated small targets pass legitimately) and the judgment-fail verdict split.

Out of scope

Bundled capture tooling, multi-theme review, auto-discovery of states, and interaction/video review (recorded in ARCH-0015).

Test plan

  • forge validate green; forge assemble builds all five Design skills
  • Playwright + axe-core captures: seeded contrast defect reported at 1.46:1 from axe, clustered 18px targets fail target-size, isolated small target passes via spacing exception
  • Three independent review runs: hard verdicts axe-only, incomplete → not-verified, withheld states → not-verified, empty artifact dir → loud no-op, emoji flagged as smell-not-ban
  • Fixture regeneration documented (tests/fixtures/design-review/expected-findings.md)
  • Reviewer confirms DesignFrontend/DesignDashboard USE WHEN split routes correctly

🤖 Generated with Claude Code

svihra added 4 commits July 7, 2026 16:52
Split design guidance by discipline. DesignFrontend now owns distinctive
and premium aesthetics (landing, marketing, brand); DesignDashboard owns
data-dense product UI (dashboards, admin, analytics) with density, state
completeness, chart-to-data-shape matching, and progressive disclosure.

DesignPrinciples is a non-invocable reference holding the cross-cutting
canon both skills cite: durable foundations, WCAG-anchored hard checks,
and advisory thresholds tiered so only spec-defined values fail.
Plan for verifying built UI against the DesignPrinciples canon. Owns the
review contract (screenshot + axe-core JSON per state/viewport, axe rule
IDs mapped to principle checks) rather than a browser: capture is
delegated to an existing tool such as a Playwright MCP. Records the
dangers (false confidence via axe 'incomplete' or missing states, vision
measurement leakage, non-determinism) and the not-verified reporting
semantics that close them.
Implements ARCH-0015. Capture-agnostic reviewer: consumes a screenshot
plus an axe-core JSON per state and viewport, sources hard checks only
from axe (color-contrast, target-size mapped to DesignPrinciples), and
reports axe 'incomplete' and absent states as not-verified rather than
pass. Screenshots drive vision judgment (structure, anti-slop, state
coverage) only. No artifacts means a no-op that reports the gap.
Playwright + axe-core captures of a seeded-defect dashboard exercised
the full contract: axe-only hard verdicts, incomplete-as-not-verified,
withheld states reported not-verified, no-artifact no-op, and emoji as
smell-not-ban all held across three independent review runs.

Two contract fixes from verification: target-size maps to WCAG 2.5.8
including its spacing exception (isolated small targets pass
legitimately), and screenshot judgments get a dedicated judgment-fail
verdict so verified-* stays reserved for axe-backed findings.

tests/fixtures/design-review/ holds the validated artifact set with
expected findings and the capture script to regenerate it.
@svihra svihra requested a review from N4M3Z as a code owner July 8, 2026 21:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant