Skip to content

Move conformance off the CI hot path - #19

Merged
tannerlinsley merged 1 commit into
mainfrom
taren/rotate-conformance
Jul 31, 2026
Merged

Move conformance off the CI hot path#19
tannerlinsley merged 1 commit into
mainfrom
taren/rotate-conformance

Conversation

@tannerlinsley

@tannerlinsley tannerlinsley commented Jul 31, 2026

Copy link
Copy Markdown
Member

Summary

  • move conformance out of normal pull-request and main CI
  • run one deterministic standard shard nightly and all eight weekly
  • support complete labeled-PR runs and full or exact-shard manual runs
  • keep catalog publication behind every non-conformance CI and exact-revision guard

Validation

  • node --test scripts/ci-workflow.test.mjs scripts/conformance-workflow.test.mjs scripts/release-workflow.test.mjs
  • workflow YAML parse
  • pnpm run validate (17 targets, 114 test files, 572 tests)

Summary by CodeRabbit

  • New Features

    • Added scheduled, manual, and opt-in pull-request conformance monitoring with selectable test shards.
    • Conformance runs now publish summaries and retain result screenshots and artifacts.
  • Documentation

    • Clarified validation, release-flow, and conformance-monitoring processes.
  • CI Improvements

    • Standard pull-request checks now focus on static, bundle, comparison, and stress validation.
    • Conformance monitoring runs independently from release-blocking checks.

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Conformance monitoring now runs in a dedicated workflow with scheduled, manual, and labeled pull-request triggers. Aggregate CI no longer gates on conformance. Tests and documentation reflect the separated validation and publication paths.

Changes

Conformance monitoring separation

Layer / File(s) Summary
Dedicated conformance workflow
.github/workflows/conformance.yml, scripts/conformance-workflow.test.mjs
Adds shard selection, matrix execution, read-only permissions, summary publication, artifact uploads, and contract tests for workflow behavior.
Aggregate CI gate separation
.github/workflows/chart-library-benchmarks.yml, scripts/ci-workflow.test.mjs
Removes conformance from benchmark execution, aggregate dependencies, result checks, and CI contract expectations.
Validation and publication documentation
API-FRICTION.md, CONTRIBUTING.md, README.md, benchmarks/conformance/README.md
Documents independent conformance monitoring and the remaining validation and publication requirements.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Trigger
  participant ShardSelection
  participant ConformanceMatrix
  participant ArtifactStorage
  Trigger->>ShardSelection: Resolve event and shard selection
  ShardSelection->>ConformanceMatrix: Provide shard matrix
  ConformanceMatrix->>ArtifactStorage: Upload results and screenshots
Loading

Possibly related PRs

  • TanStack/charts#2: Both changes modify conformance workflow behavior and its relationship to catalog publication gates.
  • TanStack/charts#12: Both changes restructure chart benchmark partitions and separate conformance from aggregate gating.
  • TanStack/charts#17: Both changes modify conformance workflows and their contract tests.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: conformance testing moves out of the standard CI path.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch taren/rotate-conformance

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@tannerlinsley
tannerlinsley merged commit eec14e1 into main Jul 31, 2026
16 of 17 checks passed

@coderabbitai coderabbitai 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.

🧹 Nitpick comments (2)
.github/workflows/conformance.yml (1)

105-106: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Pass matrix.shard through an environment variable instead of direct template interpolation.

The static analysis tool flags this line for template injection. matrix.shard values are constrained to digits 1-8 or the literal full-excluded set in the current configuration, so the immediate risk is low. Interpolating ${{ matrix.shard }} directly into the run: script string is still the pattern that this class of warning targets, and it removes the safety margin if the shard-selection logic changes later.

Move the expression into an env: block and reference it as a shell variable.

🔒 Proposed fix
       - name: Run standard conformance shard
-        run: pnpm conformance -- --shard=${{ matrix.shard }}/8
+        env:
+          SHARD: ${{ matrix.shard }}
+        run: pnpm conformance -- --shard="$SHARD/8"

Update the corresponding assertion in scripts/conformance-workflow.test.mjs (line 87) to match the new command form.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/conformance.yml around lines 105 - 106, Update the “Run
standard conformance shard” workflow step to assign matrix.shard through its env
block and reference that shell environment variable in the run command instead
of interpolating the matrix expression directly. Also update the corresponding
assertion in the conformance workflow test to expect the new command form.

Source: Linters/SAST tools

scripts/conformance-workflow.test.mjs (1)

119-196: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Extract shared workflow-parsing test helpers into one module. job, needs, scalarList, indentation, and escapeRegExp are duplicated verbatim between scripts/conformance-workflow.test.mjs and scripts/ci-workflow.test.mjs. The shared root cause is the absence of a common test-helper module for parsing GitHub Actions workflow YAML.

  • scripts/conformance-workflow.test.mjs#L119-L196: remove the local copies of job, needs, scalarList, indentation, and escapeRegExp, and import them from a new shared module (e.g. scripts/workflow-test-helpers.mjs).
  • scripts/ci-workflow.test.mjs#L198-L276: remove the local copies of job, needs, scalarList, indentation, and escapeRegExp, keep matrixIncludes local (or move it too if reused), and import the shared helpers from the same new module.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/conformance-workflow.test.mjs` around lines 119 - 196, Create a
shared workflow test-helper module exporting job, needs, scalarList,
indentation, and escapeRegExp. In scripts/conformance-workflow.test.mjs lines
119-196, remove the local implementations and import the shared helpers; apply
the same removal and import in scripts/ci-workflow.test.mjs lines 198-276,
leaving matrixIncludes local unless it is also reused.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.github/workflows/conformance.yml:
- Around line 105-106: Update the “Run standard conformance shard” workflow step
to assign matrix.shard through its env block and reference that shell
environment variable in the run command instead of interpolating the matrix
expression directly. Also update the corresponding assertion in the conformance
workflow test to expect the new command form.

In `@scripts/conformance-workflow.test.mjs`:
- Around line 119-196: Create a shared workflow test-helper module exporting
job, needs, scalarList, indentation, and escapeRegExp. In
scripts/conformance-workflow.test.mjs lines 119-196, remove the local
implementations and import the shared helpers; apply the same removal and import
in scripts/ci-workflow.test.mjs lines 198-276, leaving matrixIncludes local
unless it is also reused.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: be047564-7617-4621-8497-f0ec3667bd5e

📥 Commits

Reviewing files that changed from the base of the PR and between 0a19e49 and ba64aaa.

📒 Files selected for processing (8)
  • .github/workflows/chart-library-benchmarks.yml
  • .github/workflows/conformance.yml
  • API-FRICTION.md
  • CONTRIBUTING.md
  • README.md
  • benchmarks/conformance/README.md
  • scripts/ci-workflow.test.mjs
  • scripts/conformance-workflow.test.mjs
💤 Files with no reviewable changes (1)
  • .github/workflows/chart-library-benchmarks.yml

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