.ux-rule-catalog-table td { vertical-align: top; } .ux-rule-catalog-summary { max-width: 42rem; font-size: 0.9rem; color: var(--forge-text-2); line-height: 1.45; } .ux-rule-catalog-rule code { font-size: 0.85em; } .ux-rule-catalog-maintainer summary { cursor: pointer; font-weight: 600; } .ux-rule-catalog-table-wrap { overflow-x: visible; }

Auditor & fixing ecosystem

Every rule in the registry has its own handbook page at ux-audit-rules/<rule-id-kebab>.html (example: DET.NAV.DEDUP). For ruleset harnesses and fixers, see Auditor & fixing ecosystem. Optional Before/After gallery scrolls all rule fixtures on one page. For WCAG/axe and DET.A11Y.* campaigns, see the sibling Accessibility audit rules catalog and a11y Before/After gallery.

Lifecycle

Canonical rule definitions live under docs/design/ux-audit/. The blender emits registry.generated.json. Handbook detail pages are agent-written Markdown siblings in docs/design/ux-audit/rule-pages/ and compile to HTML under showcase/ux-audit-rules/ (one HTML file per rule).

  1. Blend — refresh registry from design docs and implementations.
  2. pagegen — one Cursor agent per stale/missing rule writes the .md sibling.
  3. build-showcase — compiles overview + detail HTML (no agents at build time).

Refresh handbook

cd tools/website-ux-auditor
npm run blend-rules
npm run pagegen -- --lane both --max-rules 10
npm run pagegen:manifest

cd ../..
python3 generator/build-showcase.py

Use npm run pagegen -- --dry-run between batches until no targets remain. Bump an implementation file to change contentVersion; stale pages appear in the table below.

Coverage summary

Registry fingerprint
aef1de6082cf0f50d463783c843dee0ffb9132fbd5ed4ea6e5bb3f031f359c72
Total rules
138
Deterministic
108
AI
30
Handbook current
116
Stale
0
Missing
22

Deterministic rules (DET)

Each rule has its own page under ux-audit-rules/ — click the rule id or Open page for purpose, how it is fixed, Before/After, and remediation.

Rule What it checks Examples Open page
DET.AMBIENT.Z_INDEX (first-screen) currentTest stub for pagegen skip logic.Before/AfterOpen page
DET.APP.AI_PROVENANCE (trustAndEcosystemTruth) currentAI suggestion surfaces show label, provenance, confidence, and accept/reject/revert controls.Before/AfterOpen page
DET.APP.BULK_ACTION_SCOPE (trustAndEcosystemTruth) currentBulk/destructive actions state selected count before execution.Before/AfterOpen page
DET.APP.CLIENT_ERROR_LOG_CLEAN (interaction) currentScenario steps must not leave console/page errors after interactions.Before/AfterOpen page
DET.APP.CONTROL_A11Y (accessibility) currentHarness stub — open the handbook page for fixture context, Before/After, and remediation.Before/AfterOpen page
DET.APP.DATA_REFRESH_STALENESS (informationArchitecture) currentData-heavy panels show freshness and refresh/retry actions.Before/AfterOpen page
DET.APP.DEMO_DISCLOSURE (trustAndEcosystemTruth) currentDemo and mock regions must be visibly labeled in the same section.Before/AfterOpen page
DET.APP.DISABLED_REASON (accessibility) currentDisabled primary controls expose why they are disabled.Before/AfterOpen page
DET.APP.EMPTY_LOADING_ERROR_SUCCESS (informationArchitecture) currentWorkspaces show one primary state with heading and next action.Before/AfterOpen page
DET.APP.ERROR_BOUNDARY_RECOVERY (informationArchitecture) currentFailed routes show recovery UI instead of a blank shell.Before/AfterOpen page
DET.APP.FOCUS_TRAP (accessibility) currentBootstrap modals/offcanvas and KS diagram/topic-preview overlays must keep keyboard focus inside the open shell until dismiss, with a reachable exit control.Before/AfterOpen page
DET.APP.MODAL_DISMISSAL_GUARD (accessibility) currentModals include close affordance and unsaved/destructive guards.Before/AfterOpen page
DET.APP.PERSISTENT_CHROME (informationArchitecture) currentWhen a desktop-interface contract promises a persistent shell, header, nav, aside, and footer regions outside main must stay mounted with stable KS hashes and global link sets across crawled routes.Before/AfterOpen page
DET.APP.PRIMARY_CTA (conversion) currentAt most one visible primary action per workspace.Before/AfterOpen page
DET.APP.PRIMARY_STATE (informationArchitecture) currentOne visible primary workspace state region per active studio page.Before/AfterOpen page
DET.APP.PRIMITIVE_MARKERS (visual-catalog) currentHarness stub — open the handbook page for fixture context, Before/After, and remediation.Before/AfterOpen page
DET.APP.PRIMITIVE_SOURCE (visual-catalog) currentKS_REACT_PRIMITIVE components spread ksReactPrimitiveAttrs in source.Before/AfterOpen page
DET.APP.PRIMITIVE_STYLES (visual-catalog) currentReact primitive mounts load forge-react-primitives / ks-fe styling.Before/AfterOpen page
DET.APP.ROUTE_DEEPLINK_STATE (informationArchitecture) currentDeep-linked routes render main content and active nav matches location.Before/AfterOpen page
DET.APP.SHELL_INTEGRATION (informationArchitecture) currentNo Bootstrap alert/badge metaphors beside governed react-primitive roots.Before/AfterOpen page
DET.APP.TAB_PANEL (accessibility) currentSelected tabs expose aria-selected, aria-controls, and a visible panel.Before/AfterOpen page
DET.APP.TILE_AFFORDANCE (conversion) currentLink-styled dashboard tiles are operable links or keyboard buttons.Before/AfterOpen page
DET.APP.TOAST_LIFECYCLE (accessibility) currentToasts use live regions, dismiss when persistent, and avoid covering CTAs.Before/AfterOpen page
DET.APP.WIZARD_PROGRESS_CONTROLS (informationArchitecture) currentWizards expose step progress, Back/Next, and disabled-next reasons.Before/AfterOpen page
DET.APP.WORK_STATE_PERSISTENCE (informationArchitecture) currentEditable workspaces expose autosave, draft recovery, or saved-view persistence cues.Before/AfterOpen page
DET.BUTTON.GROUP.MAX (conversion) currentHorizontal CTA and toolbar clusters expose at most three visible actions before overflow or disclosure; extras belong in menus, secondary links, or follow-on sections.Before/AfterOpen page
DET.CARD.ACTION_LIMIT (conversion) currentEach standard Kitchen Sink card exposes at most one filled primary CTA; extra actions use outline/secondary buttons, text links, or an explicit toolbar-card contract.Before/AfterOpen page
DET.CARD.TITLE (accessibility) currentEvery Kitchen Sink card root exposes a visible title (heading or .card-title) or an equivalent accessible name via aria-labelledby or aria-label.Before/AfterOpen page
DET.CATALOG.CONTRACT_SPECIFICITY (visual-catalog) currentRegistry-linked design contracts must carry hash-specific Expected look, Anatomy, Forbidden patterns, and Deterministic checks—not thin generic boilerplate or duplicated slabs pasted across unrelated…Before/AfterOpen page
DET.CHART.ALT_SUMMARY (accessibility) currentEvery visible Kitchen Sink chart or graph mount exposes a non-trivial text summary, aria-describedby target, or nearby caption for non-visual readers.Before/AfterOpen page
DET.CHROME.BOUNDARY (informationArchitecture) currentVisible header, footer, and sidebar chrome outside main must separate from the reading canvas via border, distinct background, or box-shadow per chrome-region contracts.Before/AfterOpen page
DET.CONTEXT.BURDEN (first-screen) currentQuantitative caps on header navigation, pre-main link clusters, nav chrome bands, and hero-fold interactive controls keep public homepages story-led instead of docs-shaped.Before/AfterOpen page
DET.CONTRACT.PATH (visual-catalog) currentActive visual-registry rows with contract_status own or family-covered must point at an on-disk design contract Markdown file under docs/design/catalog/.Before/AfterOpen page
DET.CONTRACT.PLACEHOLDERS (visual-catalog) currentRegistry-linked design contracts must not ship template filler (lorem ipsum, XYZ headings, insert markers) or unresolved TBD/TODO/FIXME stub bullets when strict catalog lint is enabled.Before/AfterOpen page
DET.CTA.HIERARCHY (conversion) currentEach logical viewport region—hero, open modal or panel, sticky footer band—exposes at most one filled primary action; competing primaries demote to outline, text link, or disclosure.Before/AfterOpen page
DET.CTA.LABEL_NONEMPTY (accessibility) currentEvery visible button, link, and role=button/link control exposes at least one trimmed character of accessible name via visible text, aria-label, aria-labelledby, value/alt, or sr-only helper text.Before/AfterOpen page
DET.DATA.COLOR_ONLY (accessibility) currentChart legends, token swatches, and encoded table cells must pair color with visible text, patterns, or icons—not hue alone where the auditor can detect a swatch or fill.Before/AfterOpen page
DET.DATA.TABLE_HEADERS (accessibility) currentVisible Kitchen Sink data tables expose column or row headers with valid th scope or explicit headers associations on body cells.Before/AfterOpen page
DET.DIAGRAM.ALT (accessibility) currentaria-hidden, role, and alt/aria-label must agree for Kitchen Sink diagram tiles, ASCII figures, and catalog-linked SVG mounts.Before/AfterOpen page
DET.DIAGRAM.ASSET_REGISTRY (visual-catalog) currentDiagram catalog keys and shipped assets/svg paths must roll up under active diagram-family and diagram-asset-group rows in the Kitchen Sink visual registry before consumers render them.Before/AfterOpen page
DET.DIAGRAM.LABELS (visual-catalog) currentCatalog-linked diagram tiles must expose readable SVG or ASCII text that matches js/ks-diagram-catalog.js legend node keys (items[].node).Before/AfterOpen page
DET.EXTERNAL_LINK.SAFETY (trust) missingtrust · minorBefore/AfterOpen page
DET.FORM.LABEL_ERROR_SUMMARY (accessibility) currentMulti-field forms expose visible labels, inline field errors, and a submit-time error summary.Before/AfterOpen page
DET.HASH.MARKERS (visual-catalog) currentEach governed visual root emits matching hash="XYZ" and data-ks-hash="XYZ" values (exactly three ASCII letters).Before/AfterOpen page
DET.HASH.REGISTRY_ROW (visual-catalog) currentEach emitted three-letter KS hash must exist in visual-registry.generated.json with registry type matching data-ks-type when that attribute is present.Before/AfterOpen page
DET.HTML.EMPTY_INLINE (accessibility) currentMain content must not contain empty strong or em tags—common when autodoc table focus rows or Markdown transforms emit emphasis wrappers without visible text.Before/AfterOpen page
DET.INVENTORY.CROSSWALK (visual-catalog) currentShowcase-emitted KS hashes must be a subset of visual-registry.generated.json; no invalid-format hash tokens in showcase HTML or JS.Before/AfterOpen page
DET.JS.NO_CONSOLE_ERROR (interaction) currentPlaywright smoke must complete tab, collapse, theme, and nav toggles without console errors or uncaught page exceptions on Kitchen Sink scripted surfaces.Before/AfterOpen page
DET.JS.PROGRESSIVE (interaction) currentHarness stub — open the handbook page for fixture context, Before/After, and remediation.Before/AfterOpen page
DET.KS.CONSUMER_ASSET_BUNDLE (visual-catalog) currentKS consumer pages load required theme and react-primitive CSS; Vite asset links resolve in live crawl.Before/AfterOpen page
DET.KS.CONTRACT_EXAMPLE_SYNC (visual-catalog) currentRule-page examples, defect fixtures, and contract verification snippets stay aligned per governed hash and rule id.Before/AfterOpen page
DET.KS.CSS_SCOPE_LEAK (visual-catalog) currentKS theme CSS does not apply destructive global styles to host-app controls outside governed roots.Before/AfterOpen page
DET.KS.HASH_SEMANTIC_UNIQUENESS (visual-catalog) currentA KS hash is not reused for unrelated data-ks-type and data-ks-name anatomy on the same page or build output.Before/AfterOpen page
DET.KS.PRIMITIVE_VERSION_MATCH (visual-catalog) currentRuntime data-ks-primitive-version matches registry/contract primitive_version when either is present.Before/AfterOpen page
DET.KS.VISUAL_FAMILY_COVERAGE (visual-catalog) currentConsumer-bound components, react primitives, and SVG assets have registry rows and contracts where policy requires.Before/AfterOpen page
DET.LANDMARKS.REQUIRED (accessibility) currentEach page exposes exactly one main landmark, a navigation landmark when global wayfinding exists outside main, and semantic header/footer landmarks when site chrome is present—each unique at document…Before/AfterOpen page
DET.LAYOUT.GRID_CONSISTENCY (readability) currentLong-form body copy aligns to KS layout containers (max width, gutters); no accidental full-bleed text rivers, section gutter drift, excessive measure, or handbook dead gutter beside the doc sidebar.Before/AfterOpen page
DET.LOADING.EMPTY_ERROR_STATES (informationArchitecture) missinginformationArchitecture · majorBefore/AfterOpen page
DET.MEDIA.ASPECT_RATIO (first-screen) missingfirst-screen · warnBefore/AfterOpen page
DET.METADATA.SOCIAL_PREVIEW (metadata) missingmetadata · minorBefore/AfterOpen page
DET.MOBILE.NAV_DISCLOSURE (accessibility) missingaccessibility · majorBefore/AfterOpen page
DET.MOTION.NO_AUTO_PLAY_FLASH (accessibility) currentVisible CSS animations and autoplay video must stay below WCAG general flash frequency (more than three flashes per second) and avoid blink/strobe keyframe names.Before/AfterOpen page
DET.MOTION.PREFERS_REDUCED (accessibility) currentWhen the user enables reduced motion, non-essential CSS animation, transitions, autoplay video, and SVG SMIL must stop; essential loading and progress indicators may continue.Before/AfterOpen page
DET.NAV.BREADCRUMB (informationArchitecture) currentHandbook, product, and showcase hub pages expose visible Kbc breadcrumb chrome when doc-sidebar rails or showcase mastheads signal deep IA—home and marketing landing layouts are exempt.Before/AfterOpen page
DET.NAV.DEDUP (informationArchitecture) currentSame navigational destination must not repeat across conflicting chrome bands (primary, sidebar, offcanvas) without breadcrumb hierarchy or intentional IA split.Before/AfterOpen page
DET.NAV.DEPTH (informationArchitecture) currentGlobal primary nav outside main stays at top level plus one flyout tier (list depth ≤ 2); deeper trees belong in Ksr sidebar, offcanvas, or an explicit mega-menu pattern (≤ 4 tiers).Before/AfterOpen page
DET.NAV.FOCUS_ORDER (accessibility) currentTab traversal follows top-to-bottom, left-to-right reading order on sampled paths through header, main, and footer chrome—no positive tabindex, large upward jumps, or row inversions.Before/AfterOpen page
DET.NAV.IN_PAGE_TOC (informationArchitecture) currentHandbook and doc-hub pages expose visible Ktx on-this-page navigation when outline or word count exceeds threshold; every TOC hash link resolves to a heading inside main.Before/AfterOpen page
DET.NAVLAYOUT.FOCUS_TRAP missingminorBefore/AfterOpen page
DET.NAVLAYOUT.HASH_ROOT missingminorBefore/AfterOpen page
DET.NAVLAYOUT.ORACLE_PRESENT missingminorBefore/AfterOpen page
DET.NAVLAYOUT.REDUCED_MOTION missingminorBefore/AfterOpen page
DET.PAGE.LANG (accessibility) currentThe root html element declares a BCP 47 language tag so assistive tech, hyphenation, and translation tools can infer the page's primary language.Before/AfterOpen page
DET.PAGE.MODE (informationArchitecture) currentEach page declares one primary mode above the fold (marketing, handbook, listing, product, presentation, app) via KS layout metadata or compatible shell signals—no competing handbook chrome on landin…Before/AfterOpen page
DET.PAGE.TITLE (metadata) currentEvery page exposes a non-empty, descriptive document title so browser tabs, bookmarks, search snippets, and assistive tech can identify the page without reading the body.Before/AfterOpen page
DET.PAGE.VIEWPORT (accessibility) currentEvery web page declares a viewport meta tag so mobile browsers scale layout to device width instead of rendering a desktop-width column with pinch-zoom only.Before/AfterOpen page
DET.PROSE.LENGTH (readability) currentVisible paragraphs stay within the 85-word readability budget; card lists cap at three outcome bullets and main-column lists at twelve scannable items.Before/AfterOpen page
DET.PY.KS_HASH_ATTRS (visual-catalog) currentPython HTML renderers stamp governed visual roots through ks_hash_attrs or ks_catalog_hashes helpers—not inline hash or data-ks-* attribute strings.Before/AfterOpen page
DET.PY.OPTIONAL_REGIONS (informationArchitecture) currentHarness stub — open the handbook page for fixture context, Before/After, and remediation.Before/AfterOpen page
DET.RESPONSIVE.NO_HORIZONTAL_OVERFLOW (first-screen) missingfirst-screen · majorBefore/AfterOpen page
DET.ROUTE.CONTENT_UNIQUENESS (informationArchitecture) missinginformationArchitecture · majorBefore/AfterOpen page
DET.ROUTE.HTTP_STATUS_CANONICAL (informationArchitecture) missinginformationArchitecture · majorBefore/AfterOpen page
DET.SCREENSHOT.STATUS (visual-catalog) currentHarness stub — open the handbook page for fixture context, Before/After, and remediation.Before/AfterOpen page
DET.SCROLL.PAGE_ONLY missingminorBefore/AfterOpen page
DET.SEARCH.FILTER_STATE (navigation) missingnavigation · warnBefore/AfterOpen page
DET.SECTION.HEADING (semantics) currentHarness stub — open the handbook page for fixture context, Before/After, and remediation.Before/AfterOpen page
DET.SECTION.SINGLE_JOB (informationArchitecture) currentHarness stub — open the handbook page for fixture context, Before/After, and remediation.Before/AfterOpen page
DET.SPATIAL.HASH_ROOT (visual-catalog) currentSpatial showcase demos (Flp, Hol, Tlz, …) must emit paired hash and data-ks-hash markers on their root element.Before/AfterOpen page
DET.SPATIAL.ORACLE_PRESENT missingminorBefore/AfterOpen page
DET.SPATIAL.POINTER_COARSE_SKIP missingminorBefore/AfterOpen page
DET.SPATIAL.PRESERVE_3D_SUPPORT missingminorBefore/AfterOpen page
DET.SPATIAL.REDUCED_MOTION_STATIC missingminorBefore/AfterOpen page
DET.STATUS.FEEDBACK_REGION (accessibility) missingaccessibility · warnBefore/AfterOpen page
DET.STUDIO.FULLPAGE_SHOT currentPDCA capture expands nested scroll roots so assessors see below-the-fold competing jobs.Before/AfterOpen page
DET.STUDIO.H1 currentWorkspace exposes a non-empty h1 so page identity and rail match checks can run.Before/AfterOpen page
DET.STUDIO.HASH currentGoverned Studio surfaces emit data-ks-hash on visual roots for catalog and regression traceability.Before/AfterOpen page
DET.STUDIO.JOB_BUDGET currentOne primary workspace job per view; secondary jobs behind Svc tabs or disclosure—not competing H2 scroll sections.Before/AfterOpen page
DET.STUDIO.MECHANISM_LEAD currentLead paragraph after H1 states human outcome before harvest/API/pipeline mechanism vocabulary.Before/AfterOpen page
DET.STUDIO.TESTID currentPages expose data-testid hooks for Playwright PDCA gates and stable automation.Before/AfterOpen page
DET.STUDIO.TITLE_NAV_MATCH currentPage H1 matches the active app-rail label so operators always know where they are.Before/AfterOpen page
DET.SURFACE.ELEVATION_TOKEN (readability) currentHarness stub — open the handbook page for fixture context, Before/After, and remediation.Before/AfterOpen page
DET.TABLE.RESPONSIVE_CONTROLS (accessibility) missingaccessibility · majorBefore/AfterOpen page
DET.THEME.CONTRAST_MIN (accessibility) currentHarness stub — open the handbook page for fixture context, Before/After, and remediation.Before/AfterOpen page
DET.THEME.FONT_STACK (readability) currentHarness stub — open the handbook page for fixture context, Before/After, and remediation.Before/AfterOpen page
DET.THEME.RADIUS_SHADOW_TOKEN_DRIFT missingminorBefore/AfterOpen page
DET.THEME.SPACING_TOKEN_DRIFT missingminorBefore/AfterOpen page
DET.TOKEN.NO_DRIFT (readability) currentHarness stub — open the handbook page for fixture context, Before/After, and remediation.Before/AfterOpen page
DET.VISUAL.RHYTHM (readability) currentHarness stub — open the handbook page for fixture context, Before/After, and remediation.Before/AfterOpen page
Maintainer metadata (versions, fingerprints)
RuleRegistryPagepage_versiongenerated_at
DET.AMBIENT.Z_INDEXimplementedcurrent2b25223e2675734e…2026-05-19T12:00:00Z
DET.APP.AI_PROVENANCEimplementedcurrent460a8845024f7b08…2026-08-13T02:54:59.996Z
DET.APP.BULK_ACTION_SCOPEimplementedcurrent97e223cb22b18295…2026-08-13T02:31:56.997Z
DET.APP.CLIENT_ERROR_LOG_CLEANimplementedcurrent8c10a5efa9df3db8…2026-08-13T02:31:57.001Z
DET.APP.CONTROL_A11Yimplementedcurrent0d83d076836cd9b2…2026-05-23T13:24:10Z
DET.APP.DATA_REFRESH_STALENESSimplementedcurrent268202638f60f253…2026-08-13T02:31:57.010Z
DET.APP.DEMO_DISCLOSUREimplementedcurrent21ddb6237563e9cc…2026-05-28T17:05:34.718Z
DET.APP.DISABLED_REASONimplementedcurrent92ed77c94c7904dd…2026-08-13T02:31:57.015Z
DET.APP.EMPTY_LOADING_ERROR_SUCCESSimplementedcurrent5be4ea9ab1153c5c…2026-08-13T02:31:57.017Z
DET.APP.ERROR_BOUNDARY_RECOVERYimplementedcurrentaeb27af67134ea35…2026-08-13T02:31:57.028Z
DET.APP.FOCUS_TRAPimplementedcurrentfa54f85a86239b0c…2026-05-19T20:15:00.000Z
DET.APP.MODAL_DISMISSAL_GUARDimplementedcurrent7d5f3450a3d51854…2026-08-13T02:31:57.037Z
DET.APP.PERSISTENT_CHROMEimplementedcurrent2cce7e9b6941663d…2026-05-19T18:45:00.000Z
DET.APP.PRIMARY_CTAimplementedcurrentc77e5e20f41bdde9…2026-05-28T17:05:34.723Z
DET.APP.PRIMARY_STATEimplementedcurrent2b2cf27faeb1cb5d…2026-05-28T17:05:34.727Z
DET.APP.PRIMITIVE_MARKERSimplementedcurrentc11418a99a10722e…2026-05-23T13:24:10Z
DET.APP.PRIMITIVE_SOURCEimplementedcurrent4442b823bacd1c3e…2026-05-28T17:05:34.731Z
DET.APP.PRIMITIVE_STYLESimplementedcurrent99ba11a044f8f491…2026-05-28T17:05:34.733Z
DET.APP.ROUTE_DEEPLINK_STATEimplementedcurrentbd901511c6c891a5…2026-08-13T02:31:57.045Z
DET.APP.SHELL_INTEGRATIONimplementedcurrentd6679097aa455efb…2026-05-28T17:05:34.736Z
DET.APP.TAB_PANELimplementedcurrentb2b1b6cdf3d830b2…2026-05-28T17:05:34.738Z
DET.APP.TILE_AFFORDANCEimplementedcurrent434a258de5ac9ffe…2026-05-28T17:05:34.739Z
DET.APP.TOAST_LIFECYCLEimplementedcurrentd8a5e6b353e1e7c2…2026-08-13T02:31:57.049Z
DET.APP.WIZARD_PROGRESS_CONTROLSimplementedcurrent441aea767ca5d203…2026-08-13T02:31:57.049Z
DET.APP.WORK_STATE_PERSISTENCEimplementedcurrent4d908e875b164225…2026-08-13T02:55:00.035Z
DET.BUTTON.GROUP.MAXimplementedcurrentdeeade550dd6b0bb…2026-05-19T20:15:00.000Z
DET.CARD.ACTION_LIMITimplementedcurrent027283a58b7fb397…2026-05-19T20:30:00.000Z
DET.CARD.TITLEimplementedcurrent307a4c7b8e49c737…2026-05-19T19:12:00.000Z
DET.CATALOG.CONTRACT_SPECIFICITYimplementedcurrentead5bfa4ac1bb0cf…2026-05-19T21:18:42.000Z
DET.CHART.ALT_SUMMARYimplementedcurrent4cf13b868a97652c…2026-05-19T20:15:00.000Z
DET.CHROME.BOUNDARYimplementedcurrent0a07923a0bc853e8…2026-05-19T20:15:00.000Z
DET.CONTEXT.BURDENimplementedcurrent8ed7dbbf91a9eefe…2026-05-19T21:30:00.000Z
DET.CONTRACT.PATHimplementedcurrent848626e86a365232…2026-05-19T21:30:00.000Z
DET.CONTRACT.PLACEHOLDERSimplementedcurrent532b64cc2b8c299e…2026-05-19T22:45:00.000Z
DET.CTA.HIERARCHYimplementedcurrent7d0adc7985064ad5…2026-05-19T22:00:00.000Z
DET.CTA.LABEL_NONEMPTYimplementedcurrent0cc9e7ee9238b539…2026-05-19T21:45:00.000Z
DET.DATA.COLOR_ONLYimplementedcurrent0e2f78e4b63580f0…2026-05-19T21:45:00.000Z
DET.DATA.TABLE_HEADERSimplementedcurrent3009d93382a3693a…2026-05-19T22:35:00.000Z
DET.DIAGRAM.ALTimplementedcurrentc2ab7e7153de1333…2026-05-19T21:45:00.000Z
DET.DIAGRAM.ASSET_REGISTRYimplementedcurrentcd428cae4e8e5dcd…2026-05-19T21:30:00.000Z
DET.DIAGRAM.LABELSimplementedcurrenta7d1ca51d575ec6d…2026-05-19T22:35:00.000Z
DET.EXTERNAL_LINK.SAFETYimplementedmissing27c7f3b38eb92be8…
DET.FORM.LABEL_ERROR_SUMMARYimplementedcurrentff733229fa88cc37…2026-08-13T02:31:57.071Z
DET.HASH.MARKERSimplementedcurrentf1ae381bf7bcb852…2026-05-19T22:20:00.000Z
DET.HASH.REGISTRY_ROWimplementedcurrent949dc8ca3b8efaca…2026-05-19T22:45:00.000Z
DET.HTML.EMPTY_INLINEimplementedcurrent0b7168d011bcb269…2026-05-25T11:30:00.000Z
DET.INVENTORY.CROSSWALKimplementedcurrentf3a0b4f85d20ea43…2026-05-25T14:32:00.000Z
DET.JS.NO_CONSOLE_ERRORimplementedcurrent7e300ed7abefc067…2026-05-25T20:15:00.000Z
DET.JS.PROGRESSIVEimplementedcurrentc8300c84053af89a…2026-05-23T13:24:10Z
DET.KS.CONSUMER_ASSET_BUNDLEimplementedcurrentcc60b809f05a02ab…2026-05-28T20:30:00.000Z
DET.KS.CONTRACT_EXAMPLE_SYNCimplementedcurrent373d976454d3f1c1…2026-05-28T20:30:00.000Z
DET.KS.CSS_SCOPE_LEAKimplementedcurrent81a4a151ee134726…2026-05-28T20:30:00.000Z
DET.KS.HASH_SEMANTIC_UNIQUENESSimplementedcurrent09a9534a9ea872d6…2026-05-28T20:30:00.000Z
DET.KS.PRIMITIVE_VERSION_MATCHimplementedcurrentd62aa3874ad23258…2026-05-28T20:30:00.000Z
DET.KS.VISUAL_FAMILY_COVERAGEimplementedcurrent372fb6ccde94dcae…2026-05-28T20:30:00.000Z
DET.LANDMARKS.REQUIREDimplementedcurrent881b1032b396bfc9…2026-05-25T12:00:00.000Z
DET.LAYOUT.GRID_CONSISTENCYimplementedcurrentc6b2a80fec72bb05…2026-05-25T14:00:00.000Z
DET.LOADING.EMPTY_ERROR_STATESimplementedmissing67d20dcc3f53630d…
DET.MEDIA.ASPECT_RATIOimplementedmissing68164ff05af411ac…
DET.METADATA.SOCIAL_PREVIEWimplementedmissing5e5a0dc366d03d37…
DET.MOBILE.NAV_DISCLOSUREimplementedmissing9cad94131447e5e9…
DET.MOTION.NO_AUTO_PLAY_FLASHimplementedcurrent9b9cc8e4e70ccca5…2026-05-25T14:30:00.000Z
DET.MOTION.PREFERS_REDUCEDimplementedcurrentba704b046845ce6f…2026-05-25T16:30:00.000Z
DET.NAV.BREADCRUMBimplementedcurrent610d62ebbaa882d5…2026-05-25T15:30:00.000Z
DET.NAV.DEDUPimplementedcurrentbcb3250c8589083c…2026-05-25T17:00:00.000Z
DET.NAV.DEPTHimplementedcurrentbac5e0016081460b…2026-05-25T18:00:00.000Z
DET.NAV.FOCUS_ORDERimplementedcurrent555bab17dd9bce4f…2026-05-25T21:15:00.000Z
DET.NAV.IN_PAGE_TOCimplementedcurrentff3a63a2098f666b…2026-05-25T20:30:00.000Z
DET.NAVLAYOUT.FOCUS_TRAPstubmissingbfaf1a73288800e3…
DET.NAVLAYOUT.HASH_ROOTstubmissing1ff3337de820e481…
DET.NAVLAYOUT.ORACLE_PRESENTstubmissing9cbb27ac2b169629…
DET.NAVLAYOUT.REDUCED_MOTIONstubmissingb7ec6de38be4f011…
DET.PAGE.LANGimplementedcurrent661657afbda75b63…2026-05-25T14:32:00.000Z
DET.PAGE.MODEimplementedcurrentdcd1e91b8f8ccccc…2026-05-25T19:00:00.000Z
DET.PAGE.TITLEimplementedcurrent417f3664f6b9f482…2026-05-25T16:45:00.000Z
DET.PAGE.VIEWPORTimplementedcurrent0c328d35ecd81437…2026-05-25T17:30:00.000Z
DET.PROSE.LENGTHimplementedcurrent54c427c7bc70b67c…2026-05-25T18:30:00.000Z
DET.PY.KS_HASH_ATTRSimplementedcurrentde5768f49c9d7e5f…2026-05-25T16:20:00.000Z
DET.PY.OPTIONAL_REGIONSimplementedcurrente40887ce72864aca…2026-05-23T13:24:10Z
DET.RESPONSIVE.NO_HORIZONTAL_OVERFLOWimplementedmissingfb60febc0efd83fe…
DET.ROUTE.CONTENT_UNIQUENESSimplementedmissingde8d89d55c74da96…
DET.ROUTE.HTTP_STATUS_CANONICALimplementedmissingb1c6e09bc2b7ee23…
DET.SCREENSHOT.STATUSimplementedcurrentd10b8604068a062f…2026-05-23T13:24:10Z
DET.SCROLL.PAGE_ONLYstubmissingd77a6d4c668c7180…
DET.SEARCH.FILTER_STATEimplementedmissing3447d994d35ca27b…
DET.SECTION.HEADINGimplementedcurrent78c1baf2f436e662…2026-05-23T13:24:10Z
DET.SECTION.SINGLE_JOBimplementedcurrent8127174a3da197c9…2026-05-23T13:24:10Z
DET.SPATIAL.HASH_ROOTimplementedcurrent1b3aaed0d0d901d9…2026-07-22T00:00:00.000Z
DET.SPATIAL.ORACLE_PRESENTstubmissingcc4afee4c20fb599…
DET.SPATIAL.POINTER_COARSE_SKIPstubmissing594e6a62800a888c…
DET.SPATIAL.PRESERVE_3D_SUPPORTstubmissingb7df1c6e5c29dffb…
DET.SPATIAL.REDUCED_MOTION_STATICstubmissing2571bb1350665ec9…
DET.STATUS.FEEDBACK_REGIONimplementedmissingd48e0ff7273696ab…
DET.STUDIO.FULLPAGE_SHOTstubcurrent7a4fa8e1a9f25f9c…2026-08-13T00:00:00.000Z
DET.STUDIO.H1stubcurrent0280725bc69635b7…2026-08-13T00:00:00.000Z
DET.STUDIO.HASHstubcurrente6c019f41fd50037…2026-08-13T00:00:00.000Z
DET.STUDIO.JOB_BUDGETstubcurrent3a4db172c90476c5…2026-08-13T00:00:00.000Z
DET.STUDIO.MECHANISM_LEADstubcurrent21e66554b835c733…2026-08-13T00:00:00.000Z
DET.STUDIO.TESTIDstubcurrentf0ba01f2d6bd68ae…2026-08-13T00:00:00.000Z
DET.STUDIO.TITLE_NAV_MATCHstubcurrent0ec643185b306af7…2026-08-13T00:00:00.000Z
DET.SURFACE.ELEVATION_TOKENimplementedcurrent25b893d53a1f9087…2026-05-23T13:24:10Z
DET.TABLE.RESPONSIVE_CONTROLSimplementedmissing248056d8dd8c7637…
DET.THEME.CONTRAST_MINimplementedcurrent7895270df87732cb…2026-05-23T13:24:10Z
DET.THEME.FONT_STACKimplementedcurrent98a09642577c12bd…2026-05-25T13:41:26Z
DET.THEME.RADIUS_SHADOW_TOKEN_DRIFTstubmissing49044827145cf2c4…
DET.THEME.SPACING_TOKEN_DRIFTstubmissingd73521d72f07633d…
DET.TOKEN.NO_DRIFTimplementedcurrente0f97003e0294ff2…2026-05-23T13:24:10Z
DET.VISUAL.RHYTHMimplementedcurrent6ac555668c53ab0e…2026-05-23T13:24:10Z

AI rules

Each rule has its own page under ux-audit-rules/ — click the rule id or Open page for purpose, how it is fixed, Before/After, and remediation.

Rule What it checks Examples Open page
AI.AMBIENT.READABILITY_CONFLICT currentAmbient SVG, canvas, and parallax layers must not compete with foreground copy, controls, or affordance clarity.Before/AfterOpen page
AI.APP.DENSITY_BALANCE currentOperator and console surfaces may be information-dense, but grouping, labels, and affordances must keep scans calm—not chaotic.Before/AfterOpen page
AI.APP.PRIMITIVE_CONSISTENCY currentKS React primitives on a run console must share one token-driven system for states, focus rings, density, and severity—not mixed Bootstrap one-offs.Before/AfterOpen page
AI.APP.WORKFLOW_CONTINUITY currentPanels, tabs, and routes must preserve sense of place—stable chrome, orientation cues, and predictable back/forward context.Before/AfterOpen page
AI.APP.WORKFLOW_RISK_GUARDRAILS currentDestructive or irreversible actions have proportionate guardrails.Before/AfterOpen page
AI.BRAND.GENERICITY_AND_DIFFERENTIATION currentThe product feels intentionally branded—not generic template soup.Before/AfterOpen page
AI.CONTEXT.BURDEN_SUBJECTIVE currentEven when numeric first-screen caps pass, the page must not feel visually noisy, cognitively dense, or split by competing focal points.Before/AfterOpen page
AI.CONTEXT.COGNITIVE_CLARITY currentA first-time reader can form a correct mental model in one pass—jargon is explained before reuse, headings match substance, and depth is staged.Before/AfterOpen page
AI.CONTRACT.IMPLEMENTATION_USEFULNESS currentDesign contracts must give engineers element-specific anatomy, states, and verification so hashed KS surfaces ship without guessing UX intent.Before/AfterOpen page
AI.CREDIBILITY.NO_OVERCLAIM currentCapabilities, metrics, certifications, and social proof are stated in bounded, verifiable ways—no invented logos, compliance badges, or performance numbers.Before/AfterOpen page
AI.DASHBOARD.ACTIONABILITY_PRIORITY currentOperator surfaces prioritize actionable next steps over vanity metrics.Before/AfterOpen page
AI.DATA.INSIGHT_LEGIBILITY currentCharts and data blocks must state the intended takeaway—not only render accurate geometry.Before/AfterOpen page
AI.DIAGRAM.SEMANTIC_ACCURACY currentDiagram topology, arrow direction, and node labels must match the mechanism described in captions, body copy, and catalog legend keys—not merely look polished.Before/AfterOpen page
AI.EMPTY_STATE.USEFULNESS currentEmpty views explain why data is missing and offer a concrete next step.Before/AfterOpen page
AI.ERROR_COPY.REASSURANCE currentErrors reassure without blame and state a recovery path.Before/AfterOpen page
AI.FORM.FRICTION_AND_RECOVERY currentUsers can recover from validation mistakes with inline guidance and preserved input.Before/AfterOpen page
AI.INFORMATION_SCENT.NEXT_STEP currentLabels, hierarchy, and CTAs make the next action obvious.Before/AfterOpen page
AI.JS.BEHAVIOR_DISCOVERABILITY currentNon-obvious scripted interactions must be hinted or documented—visible affordances, helper copy, and keyboard/touch parity—not hover-only secrets.Before/AfterOpen page
AI.MOTION.INTENTIONALITY currentMotion and transitions should guide attention toward the next read or action—not compete with copy, controls, or reading rhythm.Before/AfterOpen page
AI.NARRATIVE.COHERENCE currentThe page tells one ordered story—problem, outcome, mechanism, next step—with section sequencing that does not contradict earlier claims.Before/AfterOpen page
AI.ONBOARDING.PROGRESSIVE_DISCLOSURE currentComplexity is revealed in stages matched to user readiness.Before/AfterOpen page
AI.PREMIUM.ENTERPRISE_FEEL currentPages feel deliberate, calm, and confident—generous spacing, refined typography, consistent surfaces, and purposeful visuals—not hectic template soup.Before/AfterOpen page
AI.PY.HTML_AUTHORING_QUALITY currentPython renderers should emit intentional Kitchen Sink markup with clear section shells and stable heading ladders, not redundant wrapper soup.Before/AfterOpen page
AI.RESPONSIVE.CROSS_DEVICE_COMPREHENSION currentMeaning and hierarchy survive across breakpoints—not only reflow.Before/AfterOpen page
AI.THEME.PERSONALITY_COHERENCE currentForge theme accents, dark foundation, and typography reinforce calm enterprise temperament—amber and cyan play predictable roles without fighting copy or mixing unrelated palettes.Before/AfterOpen page
AI.TRUST.BOUNDARY_CLARITY currentData, execution, and human-control boundaries are stated in plain language a first-time reader can map—without insider jargon or hand-wavy AI magic.Before/AfterOpen page
AI.TRUST.DATA_FRESHNESS_PROVENANCE currentUsers can judge whether numbers are current, scoped, and trustworthy.Before/AfterOpen page
AI.VISUAL.HIERARCHY currentScale, contrast, and grouping establish an obvious focal path—hero → proof → depth—with one primary next read and no equal-weight shouting.Before/AfterOpen page
AI.VISUAL.PRODUCT_EXPLANATORY_VALUE currentProduct visuals, diagrams, and hero imagery must explain structure or user benefit—not generic decoration that could ship on any SaaS landing page.Before/AfterOpen page
AI.VISUAL.RHYTHM_SUBJECTIVE currentSpacing and grouping feel intentional and repeatable—aligned grids, consistent section motifs, and predictable vertical cadence—not accidental pile-ups that pass numeric gap checks.Before/AfterOpen page
Maintainer metadata (versions, fingerprints)
RuleRegistryPagepage_versiongenerated_at
AI.AMBIENT.READABILITY_CONFLICTgeneratedcurrent6de36bdf97bd2a4e…2026-05-19T16:45:00.000Z
AI.APP.DENSITY_BALANCEgeneratedcurrent73e712370e4c9c6a…2026-05-19T18:22:00.000Z
AI.APP.PRIMITIVE_CONSISTENCYgeneratedcurrent234258d3237a75d1…2026-05-19T19:45:00.000Z
AI.APP.WORKFLOW_CONTINUITYgeneratedcurrent37680431d16e42e1…2026-05-19T20:15:00.000Z
AI.APP.WORKFLOW_RISK_GUARDRAILSimplementedcurrent6cc82c17284e7c71…2026-08-13T02:31:57.132Z
AI.BRAND.GENERICITY_AND_DIFFERENTIATIONimplementedcurrentecdd256502983e48…2026-08-13T02:31:57.132Z
AI.CONTEXT.BURDEN_SUBJECTIVEgeneratedcurrent5c7a1c97a37ff3c5…2026-05-19T19:30:00.000Z
AI.CONTEXT.COGNITIVE_CLARITYimplementedcurrentc98f19a56c2b082c…2026-05-19T20:15:00.000Z
AI.CONTRACT.IMPLEMENTATION_USEFULNESSgeneratedcurrent0cdce8d76f13f9d2…2026-05-19T17:30:00.000Z
AI.CREDIBILITY.NO_OVERCLAIMgeneratedcurrentad7570fedde364ac…2026-05-19T21:45:00.000Z
AI.DASHBOARD.ACTIONABILITY_PRIORITYimplementedcurrentde65d766ba28f234…2026-08-13T02:31:57.137Z
AI.DATA.INSIGHT_LEGIBILITYgeneratedcurrentb8857a2a24cd4eba…2026-05-19T19:45:00.000Z
AI.DIAGRAM.SEMANTIC_ACCURACYgeneratedcurrentc252a8777c94594a…2026-05-19T18:15:00.000Z
AI.EMPTY_STATE.USEFULNESSimplementedcurrent9dfe36943d68303c…2026-08-13T02:31:57.139Z
AI.ERROR_COPY.REASSURANCEimplementedcurrente17ad2cb30864d1f…2026-08-13T02:31:57.140Z
AI.FORM.FRICTION_AND_RECOVERYimplementedcurrent61acc2df0ad87d2f…2026-08-13T02:31:57.144Z
AI.INFORMATION_SCENT.NEXT_STEPimplementedcurrent392ea68b88d5e605…2026-08-13T02:31:57.146Z
AI.JS.BEHAVIOR_DISCOVERABILITYgeneratedcurrente638667f9d533645…2026-05-19T21:45:00.000Z
AI.MOTION.INTENTIONALITYgeneratedcurrenta261f721a1ba9ed6…2026-05-19T22:30:00.000Z
AI.NARRATIVE.COHERENCEgeneratedcurrente29e7cdc3e952b27…2026-05-19T23:12:00.000Z
AI.ONBOARDING.PROGRESSIVE_DISCLOSUREimplementedcurrentf11e754d87ae56d3…2026-08-13T02:31:57.149Z
AI.PREMIUM.ENTERPRISE_FEELimplementedcurrent654052a99fedd59f…2026-05-19T22:10:00.000Z
AI.PY.HTML_AUTHORING_QUALITYgeneratedcurrent7f8a8515da18a9c3…2026-05-19T19:15:00.000Z
AI.RESPONSIVE.CROSS_DEVICE_COMPREHENSIONimplementedcurrentb7ea0962cceff748…2026-08-13T02:31:57.152Z
AI.THEME.PERSONALITY_COHERENCEgeneratedcurrent140ee40932ae73d0…2026-05-19T22:35:00.000Z
AI.TRUST.BOUNDARY_CLARITYgeneratedcurrent4f2bac3c4e7a8cad…2026-05-19T22:45:00.000Z
AI.TRUST.DATA_FRESHNESS_PROVENANCEimplementedcurrent0fa9c050f73cc64a…2026-08-13T02:31:57.154Z
AI.VISUAL.HIERARCHYimplementedcurrent9f51b35ba3d4a195…2026-05-19T23:48:00.000Z
AI.VISUAL.PRODUCT_EXPLANATORY_VALUEimplementedcurrente7ab9b3f6c3c1aeb…2026-05-19T22:45:00.000Z
AI.VISUAL.RHYTHM_SUBJECTIVEgeneratedcurrent48c30ce14e1399e2…2026-05-19T23:15:00.000Z