Rule handbook metadata
- Rule
AI.DATA.INSIGHT_LEGIBILITY· laneai- Page status
- stale
- page_version
c69353b3b095b3fa60b8c45e28d7ef8d6b10020381010ffacac998cb8319b7f7- generated_at
- 2026-05-19T19:45:00.000Z
- registry_fingerprint
6773fda516344e110b5a7b1435e655e1264e773825ca8bbe62194189891c42ba
How this rule is fixed
This is an AI-enabled rule. Pass/fail requires model judgment; there is no deterministic fixer in the pilot registry.
- Harness:
invoke-ai-ruleset-harness.shrunsdesign-rules/ai/run-design-ai-rule.shon the Before fixture and expects findings with matchingprincipleId. - Remediation: Cursor agent plans from
forge-ux-remediation.plan.mdafter sitewide audit — not handbook After copy.
Detection module: docs/design/ux-audit/ai-enabled-design-principles.md#ai-data-insight-legibility. Scroll down for Before / After examples and Evidence and remediation steps.
Purpose
Kitchen Sink data charts (render_ks_chart_mount, data-ks-chart, forge-data-charts.js) and adjacent tables ship on showcase pages (Dcs, Dca) and consumer dashboards. Deterministic checks confirm summaries exist (DET.CHART.ALT_SUMMARY), tables have headers (DET.DATA.TABLE_HEADERS), and meaning is not color-only (DET.DATA.COLOR_ONLY). This AI rule judges whether a visitor can answer “so what?” from the block—not merely decode bars or slices.
Plan: Read the chart in context (section title, surrounding copy, operator task). Note whether emphasis, annotation, and takeaway copy align with the story the page claims. Do: Add an outcome-first heading, a one-sentence insight, and in-chart or adjacent labels for the comparison you want remembered. Check: A skimmer gets the main claim without hovering every bar or inferring from palette alone. Adjust: If missing summaries or unlabeled series repeat, tighten DET.CHART.ALT_SUMMARY or propose annotation helpers in forge-data-charts.js.
Passing signals
- Takeaway title states the insight (
h2/h3inks-section, orcard-labelinsideforge-card)—not only the chart kind (commit_weekly) or raw metric name. - Plain-language summary beside or below the mount (
forge-support,figcaption, oraria-describedby) names direction, magnitude, and comparison window (e.g. “Commits doubled in W10 after the release freeze lifted”). - Emphasis matches the story: annotated peak/trough, highlighted series, or callout on the bar/week that supports the takeaway—not decorative accent alone.
- Redundant encoding: series use labels, values on bars,
lenses-overview-donut-swatch+ text, or table columns—not hue alone (DET.DATA.COLOR_ONLYally). - Accessible summary satisfies
DET.CHART.ALT_SUMMARY(non-trivial text,aria-describedby, or nearby caption) and stays consistent with visible emphasis. - Chart mount keeps KS attributes (
ks-chart-mount,data-ks-chart-kind,data-ks-chart-state) inside a bounded region with loading/error states readable.
Failing signals
- Only the auto caption from
render_ks_chart_mount(<strong>Weekly commits</strong> · <code>commit_weekly</code>) with no “so what” sentence. - Accurate SVG geometry but no annotation on the week, repo, or score the prose discusses.
- Competing charts at equal visual weight with identical
forge-supportstubs—visitor cannot tell which block answers the section question. - Insight buried in tooltip-only
<title>elements with no visible takeaway for keyboard or skimming readers. - Color highlights the tallest bar while copy claims a different trend (emphasis contradicts narrative).
- Dense multi-chart grids (
data-charts-staticstyle) with no per-chart summary or section-level synthesis.
Before example
Before (failing example)
Activity
Weekly commits · commit_weekly
Failing KS markup: correct mount and geometry, but only a generic label—no takeaway, annotation, or accessible insight summary.
After example
After (passing example)
Delivery pulse
Commit volume spiked in 2025-W10, then eased
Weekly commits jumped from 4 to 7 (+75%) in W10—the highest bar in the window—before falling to 3 in W11.
Weekly commits · commit_weekly
Highlighted week = focal comparison; muted bars = baseline weeks.
Passing KS markup: outcome-first heading, insight summary linked to the chart, and visible emphasis on the week the copy discusses.
Evidence and remediation
Capture: screenshot of the chart block at desktop and narrow widths; copy the DOM around ks-chart-mount including headings, aria-describedby targets, and any forge-card wrapper. For API-driven charts (data-ks-chart-url), capture loading and error states too.
Remediate (in order):
- Replace kind-only headings with an outcome title (
h2/h3orcard-label+ insight headline). - Add a one-sentence takeaway (
forge-supportorfigcaption) that states direction, delta, and window; wirearia-describedbyon the mount (DET.CHART.ALT_SUMMARY). - Emphasize the series or period the copy names (amber peak bar, callout text, table row bold)—keep redundant text labels (
DET.DATA.COLOR_ONLY). - If multiple charts share a section, add a section synthesis paragraph or reorder so one chart is primary.
- Re-run deterministic chart/table checks; if tooltip-only insight repeats, propose a
DET.*annotation contract forforge-data-charts.js.