Skip to content

FPFNFIXAPEX: recognize native listener coordinate state - #2126

Open
aidenybai wants to merge 2 commits into
mainfrom
codex/fpfn-finite-native-listener-state-origin-84ad
Open

aidenybai wants to merge 2 commits into
mainfrom
codex/fpfn-finite-native-listener-state-origin-84ad

Conversation

@aidenybai

@aidenybai aidenybai commented Oct 18, 2026 •

Copy link
Copy Markdown
Member

Why

A closed native listener can own finite coordinate state without forwarding each update through a React event handler. The rule now preserves that narrow pattern while continuing to report React writers and unsupported listener flows.

The review also found that erased TypeScript interfaces could hide native document, a selected setter, or the React namespace. Those declarations must not change runtime binding recognition.

What changed

  • Recognize the finite add/remove listener pair and its owned coordinate state, preserving the existing handler, provider mutation, and writer restrictions.
  • Reuse the shared runtime binding resolver and use a cached native scope view that admits only interfaces/type aliases without runtime value companions. The main rule remains author-exact.
  • Add three focused erasure regressions, synthetic pass/fail corpus inputs, and an activated generator/control pair. Existing patch changesets cover the published fixes.

Test plan

  • Focused rule and shared resolver tests, package types, lint, formatting, registry, JSON smoke, and diff checks passed. Full uncached checks: 34,258 passed / 1,118 skipped, 12 test tasks, 10 typecheck tasks, and a fresh five-package build.
  • Strict target fuzz passed once with 500 configured iterations, seed 42 and FUZZ_REQUIRE_FIRE=1. Numeric iteration/fire statistics were not emitted.
  • Actual native final replay: 80 parser-valid source roles, 69 target warnings. The original 75-role replay had 68; the five additive sources were captured separately in the original public baseline.
  • Actual API and built CLI comparisons use two separate projects with React 19.2.6, unknown framework, default plus explicit target activation and target-only profiles. The 75-file project changes 72 true-base → 68 original → 67 final target warnings; the five-file additive project changes 4 → 2. All files were scanned/analyzed in all profiles.
  • Default sibling findings change 172 → 176 and 8 → 10. These six warnings across three source roles restore existing parent-notification and dependency policies through React namespace resolution. Every other complete diagnostic, order, multiplicity, and CLI identity is retained; this is diagnostic-policy consistency, not a measured React runtime causality claim.
  • The staged built CLI scan completed with 14 code files and zero findings. Its repository profile detects no React; the controlled public comparisons establish rule activation.
  • Normal commit hooks and push passed. Independent source/raw reviews and immutable local proof: pr-2126-local-proof.json, pr-2126-lower-independent-source-review.json, pr-2126-lower-sibling-delta-review.json.

Official remote parity could not run: Vercel token/OIDC, team/project credentials, and the sister React Doctor Evals checkout are absent. These synthetic comparisons do not claim real OSS coverage or official parity.

Reviewed with independent Codex assistance.

@pkg-pr-new

pkg-pr-new Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

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

commit: 6f9bc42

@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Interactive terminal E2E

Terminal Control verified the built CLI at 6f9bc42 in a real PTY:

  • selected a project interactively and observed Scanning... before the three-second Git delay completed
  • waited for the clean result and exercised the compact report
  • opened copy context and the GitHub Actions confirmation, then cancelled safely

Download the edited MP4 and PNG evidence

@aidenybai
aidenybai marked this pull request as ready for review October 18, 2026 22:45

This branch has not been deployed

No deployments
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