Skip to content

test(rtl): route Charts package audits - #6252

Merged
cixzhang merged 21 commits into
mainfrom
fix/rtl-chart-package-routing-2026-09-11
Sep 12, 2026
Merged

cixzhang merged 21 commits into
mainfrom
fix/rtl-chart-package-routing-2026-09-11

Conversation

@cixzhang

@cixzhang cixzhang commented Sep 11, 2026 •

Copy link
Copy Markdown
Contributor

Problem

The landed Chart audit in #6247 exposed a shared RTL harness routing defect. pr-rtl correctly passed Chart,ChartLegend, but the runner only admitted core-* and lab-* stories and only discovered source components in those two packages. The result measured lab/Chart, excluded every charts-* story, and reported ChartLegend as an unexplained coverage gap.

This is a forward-fix to the reusable coverage contract established in #5364 / #5365. It does not change Chart runtime behavior or its audit score.

Changes

  • Project analyzer scope, CI roots, public component names, and Storybook prefixes/namespaces from the one five-package scripts/component-packages.cjs registry.
  • Route Storybook titles onto one or more canonical public owners; broad Chart-family stories still route to Chart, grouped Chart chrome maps to its real owners, Lab/RichTextEditor maps to Rich Text, and Vega/VegaChart maps to Vega.
  • Honor each curated target's declared package/component and let targets drive Storybook args before measurement.
  • Add D2 targets for Chart's logical start-side legend placement, ChartLegend's item order, and the Rich Text toolbar order; retain the existing RichTextEditor D4 target under its canonical package.
  • Record specific verified-N/A evidence for direction-neutral Chart chrome, the nonvisual Rich Text plugin/view wrappers, and VegaChart's caller-owned data-space rendering.
  • Make source-only changes in every canonical component package start component audit scope, and make RTL harness-only PRs execute the Chart,ChartLegend smoke scope instead of skipping their own check.
  • Load the component-audit classifier and package registry from the trusted base ref; missing policy, unresolved owners, or registry/classifier/workflow mutations force full a11y and RTL audits.
  • Carry package-qualified component owners through analysis.json; pr-a11y and pr-rtl consume the same canonical owner-to-story routes, and pr-a11y fails when a selected owner resolves to zero stories.
  • Scope a11y baseline resolution and regeneration to exact audited component/story keys so a one-story owner route cannot claim sibling stories were fixed.
  • Partition policy-sensitive full RTL coverage into the canonical five package shards, with bounded parallel workers and a stable fail-closed pr-rtl join that rejects classifier failure before reading scope outputs.
  • Wait on a bounded rendered-root predicate before accessibility scans; delayed valid stories pass, while redirects and Storybook error states fail before baseline reconciliation.
  • Update readiness parsing and consumer docs to project the same registry.

The open RTL evidence/design records in #6046 and #6047 remain draft and non-authoritative. This PR only repairs executable routing and evidence. #5858 changes representative-story applicability on the same harness but does not own package routing.

Regression proof

Before the Review Loop fixes, exact-head probes showed four broken seams:

  • packages/charts/src/Chart.tsx was outside check-components, so a source-only Charts change skipped pr-rtl.
  • --filter ChartAxis,ChartGrid,ChartSwatch,ChartTooltip ran 0 automatic stories and returned 4 unexplained gaps.
  • Rich Text stories were attributed to lab/RichTextEditor instead of their canonical package.
  • A Vega-only source change entered shared component scope, but PR analysis returned no component and both browser audits passed without testing one.

After the fix:

  • Focused analyzer/a11y/scope/routing/baseline/readiness/workflow suites: 195 passed.
  • A synthetic source-only PR resolves Card, RichTextEditor, and VegaChart to Core, Rich Text, and Vega from the canonical registry.
  • A registry mutation that removes Vega while changing VegaChart.tsx resolves to force_full_component_audits=true; both browser audits omit their filters and inspect the full Storybook.
  • Classifier-test-only, trusted-classifier, a11y-harness, unknown-path, and empty path sets each resolve all four component-audit outputs to true; no unmatched input can grant a browser-audit skip.
  • Target-only, route-policy-plus-Vega-source, and verified-N/A-plus-unrelated-source mutations force full a11y + RTL, so PR-controlled aliases or exemptions cannot hide an owner.
  • Package-qualified a11y scope for ChartAxis, ChartGrid, ChartLegend, ChartSwatch, ChartTooltip, and RichTextEditorToolbar resolves every owner to at least one canonical story: 6 stories audited / 0 violations.
  • An unresolved charts/MissingOwner scope exits 1 before launching a browser instead of returning a zero-story success.
  • A toolbar-only scoped baseline pass marks only RichTextEditor::With Toolbar resolved; the other 12 Rich Text baseline entries remain unchecked, and baseline regeneration preserves them.
  • Selected-story navigation/axe failure exits nonzero before recording audited evidence or running baseline reconciliation; CLI fixtures prove delayed valid content succeeds while redirects, Storybook errors, and empty roots fail with no report. Missing, unreadable, empty, docs-only, or invalid Storybook indexes also fail before routing and remove any stale output.
  • Missing/malformed analysis fails the strict per-shard scope step; noncanonical owners force full package coverage. Each report must match its exact package/filter and nonzero planned/completed component, positional, and decoration counts. The RTL join rejects failed classification, incomplete reports, and an all-skipped matrix when trusted scope requires work.
  • New baseline keys use package-qualified owner + canonical story ID. Six proven legacy disabled-state aliases migrate deterministically with no new debt; Core Tooltip and Charts Tooltip stay distinct, and exact audited resolutions remain removable.
  • Five local full-package RTL reports cover 1,912 story scans / 270 owner rows exactly once. Runtime: Core 15m17s, Lab 4m26s, Charts 1m08s, Rich Text 1m04s, Vega 21s; every shard is bounded at 30 minutes in CI.
  • Built-Storybook Chromium run with --filter Chart,ChartLegend:
    • lab/Chart: D2 pass, measured;
    • charts/Chart: D2 pass, measured;
    • charts/ChartLegend: D2 pass, measured;
    • aggregate: 3 measured / 0 verified N-A / 0 gaps / 0 stale.
  • Built-Storybook Chromium run with --filter ChartAxis,ChartGrid,ChartSwatch,ChartTooltip:
    • every owner runs its title-derived story route;
    • aggregate: 0 measured / 4 verified N-A / 0 gaps / 0 stale.
  • Built-Storybook Chromium run across Rich Text and Vega:
    • richtext/RichTextEditor and richtext/RichTextEditorToolbar: curated pass, measured;
    • AutoLinkPlugin, RichTextView, and vega/VegaChart: verified N-A after owned stories ran where available;
    • aggregate affected-owner matrix: 5 measured / 7 verified N-A / 0 gaps / 0 stale.
  • Core, Charts, theme, Vega, and Storybook builds/typecheck: passed.
  • Strict lint: passed with 0 errors.

Test plan

./node_modules/.bin/vitest run --project node \
  .github/scripts/accessibility-audit.test.mjs \
  .github/scripts/accessibility-audit.integration.test.mjs \
  .github/scripts/analyze-pr.test.mjs \
  .github/scripts/component-audit-scope.test.mjs \
  .github/scripts/ci-test-routing.test.mjs \
  .github/scripts/lib/a11y-baseline.test.mjs \
  .github/scripts/lib/a11y-story-readiness.test.mjs \
  .github/scripts/lib/a11y-story-identity.test.mjs \
  .github/scripts/rtl-audit-cli.test.mjs \
  .github/scripts/rtl-audit-coverage.test.mjs \
  .github/scripts/rtl-shard-scope.test.mjs \
  .github/scripts/rtl-report-completion.test.mjs \
  .github/scripts/rtl-join.test.mjs \
  .github/scripts/weekly-rtl-summary.test.mjs \
  internal/lab-readiness/audit.test.mjs

pnpm -F @astryxdesign/build build
pnpm -F @astryxdesign/core build
pnpm -F @astryxdesign/charts build
pnpm -F @astryxdesign/storybook build

node .github/scripts/accessibility-audit.js \
  --storybook-dir apps/storybook/dist \
  --output node_modules/.cache/rtl-chart-routing/package-owner-a11y.json \
  --components charts/ChartAxis,charts/ChartGrid,charts/ChartLegend,charts/ChartSwatch,charts/ChartTooltip,richtext/RichTextEditorToolbar

node apps/storybook/rtl-audit/rtl-audit.mjs \
  --storybook-dir apps/storybook/dist \
  --output node_modules/.cache/rtl-chart-routing/charts-routing-report.json \
  --filter Chart,ChartLegend \
  --concurrency 2

node apps/storybook/rtl-audit/rtl-audit.mjs \
  --storybook-dir apps/storybook/dist \
  --output node_modules/.cache/rtl-chart-routing/all-charts-owners.json \
  --filter ChartAxis,ChartGrid,ChartSwatch,ChartTooltip \
  --concurrency 2

node apps/storybook/rtl-audit/rtl-audit.mjs \
  --storybook-dir apps/storybook/dist \
  --output node_modules/.cache/rtl-chart-routing/richtext-vega.json \
  --filter RichTextEditor,RichTextEditorToolbar,RichTextEditorAutoLinkPlugin,RichTextView,VegaChart \
  --concurrency 2

Follow-up checks and trusted Review Loop outcome will be recorded on this exact head before merge.

@vercel

vercel Bot commented Sep 11, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
astryx Ready Ready Preview Sep 12, 2026 6:24am UTC

Request Review

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Meta Open Source bot. label Sep 11, 2026
@astracat-bot

astracat-bot Bot commented Sep 11, 2026 •

Copy link
Copy Markdown

AI review status for this pull request.

Review status Updated
🟢 Reviewed (for maintainers only) Sep 12, 2026, 6:31 AM UTC

@github-actions

github-actions Bot commented Sep 11, 2026 •

Copy link
Copy Markdown
Contributor

PR Analysis Report

📚 Storybook Preview

View Storybook for this PR
GitHub Pages may take up to a minute to hydrate after deploy.

🧪 Sandbox Preview

View Sandbox for this PR
GitHub Pages may take up to a minute to hydrate after deploy.

No new or modified components detected.

Bundle Size Summary

No component packages changed.

Accessibility Audit

Status: 36 accessibility violation(s) found — 2 critical, 34 serious.

Button pattern - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 1/18 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
ChatComposer - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 1/18 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
ChatComposerInput - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 1/14 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
ChatReasoning - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 4/5 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
ChatToolCalls - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 10/11 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
Checkbox pattern - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 2/33 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
CheckboxList - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 4/17 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
ClickableCard - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 1/5 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
CodeEditor - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 3/7 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
CodeEditorPerf - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 2/2 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
CodeEditorTheme - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 13/14 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
CodeTheme - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 14/16 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
DateRangeInput - 1 issue(s)
  • 🔴 critical: Ensure an element's role supports its ARIA attributes
    • Rule: aria-allowed-attr · Affects 1/20 stories · Learn more
    • WCAG: 4.1.2 (Level A)
FileInput - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 3/15 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
GridMasonry - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 1/3 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
Heading - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 1/16 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
Icon - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 1/18 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
LogStream - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 2/3 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
MediaTheme Auto - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 1/5 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
PowerSearch - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 2/26 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
ProgressBar - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 2/18 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
Radio group pattern - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 3/26 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
RadioList - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 3/13 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
RichTextEditor - 2 issue(s)
  • 🟠 serious: Ensure every ARIA input field has an accessible name
    • Rule: aria-input-field-name · Affects 2/18 stories · Learn more
    • WCAG: 4.1.2 (Level A)
  • 🔴 critical: Ensure every form element has a label
    • Rule: label · Affects 1/18 stories · Learn more
    • WCAG: 4.1.2 (Level A)
SelectableCard - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 1/4 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
Stepper - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 1/30 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
TableGroupedRows - 1 issue(s)
  • 🟠 serious: Ensure ARIA attributes are used as described in the specification of the element's role
    • Rule: aria-conditional-attr · Affects 3/3 stories · Learn more
    • WCAG: 4.1.2 (Level A)
TableTree - 1 issue(s)
  • 🟠 serious: Ensure ARIA attributes are used as described in the specification of the element's role
    • Rule: aria-conditional-attr · Affects 8/9 stories · Learn more
    • WCAG: 4.1.2 (Level A)
Text - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 1/23 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
Theme - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 1/5 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
PopArt - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 3/6 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
Thumbnail - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 1/12 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
Timestamp - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 1/20 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
Token - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 2/10 stories · Learn more
    • WCAG: 1.4.3 (Level AA)
Tokenizer - 1 issue(s)
  • 🟠 serious: Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds
    • Rule: color-contrast · Affects 2/24 stories · Learn more
    • WCAG: 1.4.3 (Level AA)

Generated by PR Enrichment workflow | Storybook | Sandbox | View full report

@astracat-bot astracat-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Component authors can still lose both browser audits when a registry change and component source change land together. The new Rich Text/Vega routes and the prior Charts fixes pass, but the routing owner needs one fail-closed correction; see the inline finding.

Comment thread .github/workflows/ci.yml Outdated
fi
FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD)
CHANGED=$(printf '%s\n' "$FILES" | grep -E '^packages/(core|lab)/src/' | grep -v -E '(hooks|theme|utils|i18n|__tests__)/' | head -1 || true)
COMPONENT_ROOTS=$(node -e 'const {COMPONENT_PACKAGES}=require("./scripts/component-packages.cjs"); process.stdout.write(COMPONENT_PACKAGES.map(pkg => pkg.src).join("|"))')

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

COMPONENT_ROOTS is read from the PR checkout. A change that removes or renames a root while modifying that package makes CHANGED empty: pr-a11y skips, and pr-rtl only runs the Chart/ChartLegend harness smoke instead of the changed component. Please load these roots from trusted base policy, or force full component scope whenever the registry changes, and add a mutation test for a registry-plus-source diff.

@astracat-bot astracat-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, the latest routing patch closes the named target, route, classifier, and unknown-path gaps. CI can still report complete coverage when a selected accessibility story fails, and a verified-N/A policy change can still skip the owner it reclassifies. Please close both paths; see inlines.

Comment thread .github/scripts/accessibility-audit.js Outdated
const component = (story.title || '').split('/').pop() || storyId;
const auditedStoryKey = storyKey(component, story.name || storyId);
storyKeyById.set(storyId, auditedStoryKey);
auditedStoryKeys.push(auditedStoryKey);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This key is recorded before the scan succeeds, so a timeout resolves a live baseline and exits green.

/(^|\/)src\/.*\.a11y\./.test(file) ||
file === 'playwright.config.ts';
const isRtlHarness = file =>
file.startsWith('apps/storybook/rtl-audit/') ||

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

verified-not-applicable.json can reclassify any owner, but this path only runs Chart/ChartLegend; make it full-scope and test the mutation.

@astracat-bot astracat-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, both CI gaps are fixed: failed selected stories now stop the audit, and verified-N/A policy changes now run full owner coverage.

@astracat-bot astracat-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Contributors still cannot rely on this gate: required test-node is red, and a story that renders after the fixed pause is rejected before axe. Please wait for rendered story content within a bounded timeout and make every new fail-closed branch behavior-tested.

Comment thread .github/scripts/accessibility-audit.js Outdated
.waitFor({state: 'visible', timeout: 5000});
const storyRoot = page.locator('#storybook-root');
await storyRoot.waitFor({state: 'attached', timeout: 5000});
const rendered = await storyRoot.evaluate(

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A fixed pause can reject a valid slow render. Wait for story content within a bounded timeout.

expect(throwError).toBeGreaterThan(catchStart);
expect(throwError).toBeLessThan(finallyStart);
expect(source).toContain("waitUntil: 'domcontentloaded'");
expect(source).toContain("locator('body.sb-show-main')");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These source checks miss three new guards; mutation tests still pass when they are removed.

@cixzhang
cixzhang force-pushed the fix/rtl-chart-package-routing-2026-09-11 branch from c6e77e6 to 3e6f34b Compare September 12, 2026 05:56
@cixzhang
cixzhang force-pushed the fix/rtl-chart-package-routing-2026-09-11 branch from 3e6f34b to 6d55f31 Compare September 12, 2026 06:17
@cixzhang
cixzhang force-pushed the fix/rtl-chart-package-routing-2026-09-11 branch from 6d55f31 to 110b15d Compare September 12, 2026 06:20
github-actions Bot added a commit that referenced this pull request Sep 12, 2026

@astracat-bot astracat-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, this closes the remaining trust gaps. Full runs now require exact Core, Lab, Charts, Rich Text, and Vega reports, and scan or route gaps fail closed.

@cixzhang
cixzhang merged commit 47ba552 into main Sep 12, 2026
36 checks passed
@cixzhang
cixzhang deleted the fix/rtl-chart-package-routing-2026-09-11 branch September 12, 2026 07:34
korkt-kim pushed a commit to korkt-kim/astryx that referenced this pull request Sep 13, 2026
* test(rtl): route Charts package audits

* ci(rtl): exercise harness-only changes

* fix(lab-readiness): follow RTL package roster

* fix(rtl): route complete Charts roster

* fix(rtl): project all component packages

* fix(ci): trust base component audit scope

* fix(a11y): route package-qualified owners

* fix(ci): fail closed for unmatched audit scope

* fix(a11y): scope baseline by audited stories

* fix(ci): fail closed for route policy changes

* fix(a11y): key baseline by owner and story

* fix(ci): protect shared audit routing policy

* fix(a11y): avoid network-idle scan timeouts

* fix(ci): shard full RTL audit by package

* fix(a11y): preserve missing-build CLI contract

* fix(ci): close audit readiness races

* fix(ci): fail closed on missing audit inputs

* fix(ci): require completed RTL scans

* fix(a11y): reject docs-only story indexes

* fix(a11y): migrate legacy story baseline keys

* fix(ci): close audit completion trust gaps

This branch was successfully deployed

1 active deployment
Preview — 110b15d8 Deployed Sep 12, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Meta Open Source bot.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant