Skip to content

perf: reduce scan startup and workspace contention - #1533

Merged
aidenybai merged 6 commits into
mainfrom
codex/performance-stability-pass
Jul 31, 2026
Merged

perf: reduce scan startup and workspace contention#1533
aidenybai merged 6 commits into
mainfrom
codex/performance-stability-pass

Conversation

@aidenybai

@aidenybai aidenybai commented Jul 30, 2026

Copy link
Copy Markdown
Member

Summary

  • share Oxlint subprocess capacity across workspace projects and preserve nested project capabilities
  • load a lightweight rule-metadata entry for core scans while keeping the full plugin entry unchanged
  • invalidate browser-guard and Next.js manifest caches when their real dependencies change
  • reuse semantic, traversal, filesystem, and render-dependency analysis on hot rule paths
  • keep registry generation working on the declared Node 20.19.0 floor without a Vite config subprocess
  • accept complete Astro reports in Daytona parity tooling and ignore explicitly disabled inline Remotion CSS timing

This incorporates the applicable ideas from #1463, #1478, #1479, and #1480 in the current architecture.

Performance measurement

Exact base 5dc936e11 and final head b1a966e07 were built separately and benchmarked on the same 16-core Neoverse-V2 host with Node 24.18.0. Every series used excluded warmups followed by 5–9 measured samples; diagnostic counts and hashes matched exactly.

Target Mode Base median Head median Elapsed reduction Throughput
deterministic 302-file stress project lint, no cache 3.434s 2.619s 23.7% 1.31×
React Doctor workspace lint, no cache 3.134s 1.858s 40.7% 1.69×
deterministic 302-file stress project full, no cache 3.976s 3.156s 20.6% 1.26×
React Doctor workspace full, no cache 4.157s 2.841s 31.7% 1.46×
deterministic 302-file stress project lint, hot cache 1.182s 1.046s 11.6% 1.13×
React Doctor workspace lint, hot cache 522ms 490ms 6.1% 1.07×

The core scan startup payload also falls from 2,793,346 bytes to 374,924 bytes (86.6% smaller). Existing scan.duration telemetry remains the production success metric; revert the lightweight path if cold-scan p50 does not improve over two releases.

Validation

  • full root test suite: 15 of 15 tasks passed
  • lint, typecheck, format check, full build, JSON report smoke, and diff hygiene passed
  • exact Node 20.19.0 container: registry generation, plugin build, and the complete plugin test suite passed
  • parity-tool suites: 33 of 33 tests passed, including complete Astro reports
  • complete plugin suite: 25,137 tests passed, 201 skipped
  • strict 500-iteration fuzzing passed for remotion-no-css-transition; regression corpus covers disabled inline timing
  • deterministic stress fixture preserved 1,200 diagnostics and hash afcd70784219b21dcc2fc570b47f423e37e19a1e7df6bcafd8712bcb8b0e2605
  • React Doctor latest diff scan: score 100, zero new diagnostics

Daytona parity

Canonical pinned run at 4d4fb9d07:

  • 2,000/2,000 projects compared; 0 failed; 0 skipped
  • baseline 1,205,762 diagnostics; candidate 1,205,779
  • +17, -0, 1,205,762 unchanged
  • all 17 additions were source-audited: 14 valid findings and 3 explicit transition: "none" false positives

Exact final-head targeted run at b1a966e07 covers every repository affected by the Remotion delta:

  • 4/4 pinned projects completed; 0 failed; 0 skipped
  • +6, -0, 2,946 unchanged
  • both real CSS transitions and all four native-media findings remain
  • all three explicit-disabled-transition false positives are gone

The final commit changes diagnostic behavior only in that audited Remotion path; the parity-tool Astro change does not affect scanner output. Composing the complete canonical run with the exact final-head affected-project rerun leaves 14 valid additions and no removals or known regressions.

@pkg-pr-new

pkg-pr-new Bot commented Jul 30, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/eslint-plugin-react-doctor@1533
npm i https://pkg.pr.new/oxlint-plugin-react-doctor@1533
npm i https://pkg.pr.new/react-doctor@1533

commit: b1a966e

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

React Doctor found no new issues. 🎉

Reviewed by React Doctor for commit b1a966e.

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Interactive terminal E2E

React Doctor interactive terminal recording

Recorded from the built CLI at b1a966e in a real terminal. The fixture holds Git busy for three seconds, so Scanning... must appear immediately after project selection, then exercises the compact interactive report.

Download the GIF and MP4 artifact

@aidenybai
aidenybai marked this pull request as ready for review July 31, 2026 02:19

Copy link
Copy Markdown
Member Author

Controlled performance benchmark

Exact base 5dc936e11 and final head b1a966e07 were built separately and benchmarked on the same 16-core Neoverse-V2 host with Node 24.18.0. Each series used excluded warmups followed by 5–9 measured samples.

Target Mode Base median Head median Elapsed reduction Throughput speedup
Deterministic 302-file stress project lint, no cache 3.434s 2.619s 23.7% 1.31×
React Doctor workspace lint, no cache 3.134s 1.858s 40.7% 1.69×
Deterministic 302-file stress project full, no cache 3.976s 3.156s 20.6% 1.26×
React Doctor workspace full, no cache 4.157s 2.841s 31.7% 1.46×
Deterministic 302-file stress project lint, hot cache 1.182s 1.046s 11.6% 1.13×
React Doctor workspace lint, hot cache 522ms 490ms 6.1% 1.07×

Correctness controls:

  • Stress diagnostics remained byte-identical: 1,200 findings, hash afcd70784219b21dcc2fc570b47f423e37e19a1e7df6bcafd8712bcb8b0e2605.
  • Workspace diagnostics remained byte-identical in each compared mode.
  • The benchmark harness verified matching source fingerprints, diagnostic hashes, host, Node/V8 version, mode, cache cohort, and worker configuration before producing comparisons.

Conservative result: uncached/default-like scans show 1.26×–1.46× throughput, while hot-cache scans show 1.07×–1.13× throughput.

@aidenybai
aidenybai merged commit 2db2a97 into main Jul 31, 2026
34 checks passed
@aidenybai
aidenybai deleted the codex/performance-stability-pass branch July 31, 2026 02:42
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