Skip to content

docs(oxc): retain tsc with shadow evidence (sc-1680) - #399

Open
norvalbv wants to merge 1 commit into
mainfrom
codex/sc-1680-oxc-typecheck-shadow
Open

docs(oxc): retain tsc with shadow evidence (sc-1680)#399
norvalbv wants to merge 1 commit into
mainfrom
codex/sc-1680-oxc-typecheck-shadow

Conversation

@norvalbv

Copy link
Copy Markdown
Owner

Summary

  • compare Devkit's authoritative TypeScript 6.0.3 check with Oxc's current type-aware lint path on the exact repository input set
  • prove a focused two-error fixture is diagnosed identically by both engines
  • retain tsc --noEmit because the candidate does not yet preserve compiler/configuration semantics
  • save fresh-cache paired CPU, wall-time, and process-tree RSS evidence for the future revisit

Decision

Oxc's type-aware path is much faster, but it is not a drop-in TypeScript compiler authority today. Devkit remains on TypeScript 6.0.3 while the tested tsgolint path uses TypeScript 7.0.2 semantics; broad directory arguments also select config-excluded tests, and project-reference/build-emission behavior is not proven.

Repository parity was evaluated over the exact 236 TypeScript inputs selected by Devkit. Both tools were also run against a temporary focused fixture and reported exactly the same two TS2322 diagnostics at 1:7 and 4:3. That is encouraging shadow evidence, not enough semantic coverage to replace tsc.

Benchmark

Runner Median wall Median CPU Median tree RSS
tsc --noEmit 3.315 s 5.020 s 461.0 MiB
Oxc + tsgolint 0.500 s 0.990 s 405.4 MiB
Delta -84.9% -80.3% -12.1%

Method: Node 24.19.0, 3 discarded warm-ups, 10 alternating measured samples, with every measured command run in its own fresh git archive fixture/cache location while sharing installed dependencies.

Ownership retained

  • tsc --noEmit: authoritative TypeScript diagnostics and configured project semantics
  • tsc -p tsconfig.build.json: JavaScript build emission/import-extension rewriting; declarations are disabled
  • Oxc type-aware checks: shadow/revisit candidate only

Validation

  • exact 236-input manifest assertion
  • focused 2/2 diagnostic parity fixture
  • fresh-fixture benchmark arithmetic/assertions
  • decision-record checker
  • bun run lint
  • git diff --check
  • GitNexus staged change analysis: LOW, documentation/evidence only

Shortcut: sc-1680

## Summary

- compare Devkit's authoritative TypeScript 6.0.3 check with Oxc's current type-aware lint path on the exact repository input set
- prove a focused two-error fixture is diagnosed identically by both engines
- retain `tsc --noEmit` because the candidate does not yet preserve compiler/configuration semantics
- save fresh-cache paired CPU, wall-time, and process-tree RSS evidence for the future revisit

## Decision

Oxc's type-aware path is much faster, but it is not a drop-in TypeScript compiler authority today. Devkit remains on TypeScript 6.0.3 while the tested `tsgolint` path uses TypeScript 7.0.2 semantics; broad directory arguments also select config-excluded tests, and project-reference/build-emission behavior is not proven.

Repository parity was evaluated over the exact 236 TypeScript inputs selected by Devkit. Both tools were also run against a temporary focused fixture and reported exactly the same two `TS2322` diagnostics at 1:7 and 4:3. That is encouraging shadow evidence, not enough semantic coverage to replace `tsc`.

## Benchmark

| Runner | Median wall | Median CPU | Median tree RSS |
| --- | ---: | ---: | ---: |
| `tsc --noEmit` | 3.315 s | 5.020 s | 461.0 MiB |
| Oxc + tsgolint | 0.500 s | 0.990 s | 405.4 MiB |
| Delta | -84.9% | -80.3% | -12.1% |

Method: Node 24.19.0, 3 discarded warm-ups, 10 alternating measured samples, with every measured command run in its own fresh `git archive` fixture/cache location while sharing installed dependencies.

## Ownership retained

- `tsc --noEmit`: authoritative TypeScript diagnostics and configured project semantics
- `tsc -p tsconfig.build.json`: JavaScript build emission/import-extension rewriting; declarations are disabled
- Oxc type-aware checks: shadow/revisit candidate only

## Validation

- exact 236-input manifest assertion
- focused 2/2 diagnostic parity fixture
- fresh-fixture benchmark arithmetic/assertions
- decision-record checker
- `bun run lint`
- `git diff --check`
- GitNexus staged change analysis: LOW, documentation/evidence only

Shortcut: sc-1680
@coderabbitai

coderabbitai Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@norvalbv, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 47 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 4606fdde-f036-4a81-a10b-f27ffe2c9303

📥 Commits

Reviewing files that changed from the base of the PR and between 4d624d0 and d6e66f7.

📒 Files selected for processing (2)
  • docs/benchmarks/experiments/2026-08-16-oxc-typecheck-devkit/README.md
  • docs/decisions/oxc-toolchain-migration.md

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.

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