Skip to content

FPFNFIXAPEX: Recognize closed imported observer cleanup collectors - #2009

Open
aidenybai wants to merge 5 commits into
mainfrom
codex/audit-imported-observer-disposable
Open

aidenybai wants to merge 5 commits into
mainfrom
codex/audit-imported-observer-disposable

Conversation

@aidenybai

@aidenybai aidenybai commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

An effect can register observer disconnections with an imported collector and return its disposer. Recognize this when source proves a fresh, closed callback array, exact store/drain methods, and direct synchronous cleanup. Track helper and barrel dependencies so edits invalidate cached diagnostics.

Opaque stored callbacks, escaped or reassigned values, unsafe native inputs, alternative returned cleanup values, async/generator cleanup, and try/finally remain outside this proof.

Runtime references now resolve to the nearest real lexical value across erased TypeScript declarations. This restores both symbol identity and its reference list, so type shadows cannot hide provider writes, opaque exposures or readonly checks. Declaration indexing and the nearest erased-only fallback are preserved. The six provider admission utilities retain their frozen implementation.

Validation on 92e286464afd164c22588ea88cc785a14605c2a9: full repository nr test and nr typecheck graphs passed with bounded concurrency, together with lint, formatting, a full build and JSON smoke. The focused rule, semantic and shared-helper set passed 282 tests, including 35 shared runtime-resolution controls. Strict scoped fuzzing passed 500 iterations with required rule activity. All 2 native CLI controls matched their expected diagnostics.

The shared patch Changeset and five reviewed timing fixtures are included: deterministic cleanup and toggle work scaling, mutation pairing, a fake-clock snapshot deadline, and the scoped 60-second HostedCart comparison budget. Their diagnostic and cleanup assertions are preserved; these test repairs change no production scheduling.

Prior bounded evidence from the original review covered 20 roots across six repositories, 1,721 files and 3,308 unchanged diagnostic objects. This sample predates the central semantic follow-up. Fresh full Daytona parity is unavailable because DAYTONA_API_KEY is absent; unavailable repository pins also limited the original full-corpus evidence. The follow-up is supported by the fresh full local graphs, native regressions and fuzzing described above. No application runtime or wall-clock performance claim is made.

@pkg-pr-new

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

Copy link
Copy Markdown

Open in StackBlitz

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

commit: 92e2864

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Interactive terminal E2E

Terminal Control verified the built CLI at 92e2864 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 17, 2026 02:51
@aidenybai
aidenybai marked this pull request as draft October 17, 2026 03:02
@aidenybai
aidenybai marked this pull request as ready for review October 17, 2026 03:48
@aidenybai
aidenybai marked this pull request as draft October 17, 2026 04:13
@github-actions

Copy link
Copy Markdown
Contributor

React Doctor found no new issues. 🎉

Reviewed by React Doctor for commit 92e2864.

@aidenybai
aidenybai marked this pull request as ready for review October 17, 2026 06:09

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