Repository navigation
feat: add native external render snapshot ownership - #7
Conversation
|
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Benchmark report
Compares js-framework: 1k/10k row operationsAll 20 timed operations (20 without a verdict)
All 64 work counters are unchanged. Application bundle size (bytes)
7 other measured values are unchanged. Public-import reachability bundles (bytes)
24 other measured values are unchanged. Lynx dual-thread render (report only)All 13 timed operations (13 without a verdict)
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 143aa3f3c7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 062ab9eca7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: dcfd3c73b2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bc9acfd49f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e7ce5477c1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0700366ca3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cf7b8b8109
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 81ceba158f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9bb18d634a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0da4a0342e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Summary
Why the change
Let native publishers render, hydrate and refresh inside an existing host root while preserving document ownership, isolated context and signal identities, and bounded independent streams.
Special things to note
Change outline
bounded eval compiler-helper bridge public runtime + explicit compiler helpers + component identity stamp used by Vite compilationValidation
4d36dd2e3: six early method/getter/alias cases failed before the fix across development/production test projects; six late controls already passed. Final HMR and universal-renderer suites pass all 756 tests across four project files on Node 24.8.0. The new cases execute real async module evaluation, mount/click/update components, verify importer propagation for early captures and preserve state for late captures. Selectedhmr.test.tstypechecking, scoped formatting, compiler syntax, diff checks and normalpnpm syncpass; sync produces no generated diff. Full current-head CI remains pending.Universal HMR fixture repair
0da4a0342: the custom module maps now resolveoctane/internal/clientto the real private client namespace, while publicoctaneimports keep the public runtime. This removes the missing component-stamp callable without a mock or assertion change. The exact hosted failure reproduced locally in both dev/prod projects; the repaired universal-renderer and HMR suites pass all 744 tests across four project files on Node 24.8. Formatting, whitespace and normalpnpm syncpass with no generated diff. Selected strict typechecking still reports the same 148 pre-existing diagnostics at base and repair; no new diagnostic is introduced. The earlier run’s shard 2 was cancelled by matrix fail-fast after shard 4 failed; the summary test and provenance jobs correctly rejected that incomplete run. Current-head canonical CI remains required. This test-only repair changes no shipped source or compiled output.Direct-eval repair
e8c2324d4: three early capture cases failed before the fix in both dev/prod HMR runs. The focused compiler/HMR cone now passes 853 tests across 10 project files, including late-eval and deferred-render state retention. Scoped types, formatting, syntax check andpnpm syncpass. Current-head full CI remains pending.Eval-bridge CI repair
9bb18d634: heavy integration job 117889565954 failed because the explicit eval compiler bridge omitted the new HMR identity helper. The real counter grader reproduces that TypeError locally before the one-line export. Afterward both complete eval projects pass all 177 tests across 47 files, including public relative-submission grading, Strong workaround rejection, incomplete-starter rejection and the submission-import boundary controls. Scoped strict types, formatting, diff checks and normalpnpm syncpass. Independent boundary review is CLEAR. Current-head hosted CI remains required.Shadowed HMR identity repair
1c8eb037b: 18 behavioral regressions fail before the repair; all 843 focused tests pass afterward across development/production-compiler projects. The cases execute webpack/Vite output with authoredObject,Symbol,globalThis, and a colliding helper alias; they verify wrapper identity, live DOM updates, events and subsequent props. Existing hoisted/frozen-component, private-runtime-import and universal-compiler controls pass. Scoped strict types, formatting, compiler syntax, normalpnpm sync, and diff checks pass. Independent final source/test review found no blocker. Current-head hosted CI remains required.Dynamic-import capture correction at
81ceba158: source coercion and import-option getters fail before the fix (15 failing cases across compiler/HMR projects). Final focused HMR development/production, early-capture, hot-signal and AST-immutability coverage passes 674/674 tests on Node 24. Rejected imports are handled after the component declaration so the handler does not mask the defect. Deferred uncalled helpers remain eligible. Normal sync, scoped formatting, syntax and diff checks pass; independent read-only review found no blocker. Current-head CI remains pending.Implicit-coercion capture correction at
cf7b8b810: 13 new importer cases fail before the fix in both projects. Final HMR development/production, early-capture, hot-signal and AST-immutability coverage passes 655/655 tests on Node 24. Cases cover conversion hooks, numeric/comparison operators, templates, updates, compound assignments and custominstanceofpredicates. Opposite-operand evaluation, deferred rendering, boolean/identity operations, importer replacement and click updates remain covered. Scoped formatting, syntax, normal sync and diff checks pass; independent read-only review found no P1/P2 issue. Current-head CI remains pending.perf-reviewandconcise-codefor coercions: +40/-0 compiler lines, no new file, export, option, retained state or runtime code. The scoped scan reports zero candidates. Self-review removed repeated nested arithmetic scans; an instrumented 32/64/128/256-term probe visits 62/126/254/510 aggregate nodes instead of the initial patch's 992/4032/16256/65280. Seven of eight paired outputs are byte-identical, including ordinary HMR and all non-HMR development, production and server controls. The affected development-only case drops 745 raw / 168 gzip bytes because it propagates to its importer. A separate conversion interpreter and blanket rejection of operators were rejected. No compiler timing or browser latency claim is made.Optional-receiver report checked at
0700366ca: both supported parsers representapi?.read()asChainExpression → CallExpression → MemberExpression(optional: true), which the existing receiver analysis already handles. Four module-initialization cases and two deferred-render controls pass against the unchanged compiler. The complete HMR file passes 408/408 tests across development and production projects on Node 24, including importer replacement, click updates and retained state. This follow-up adds only regression coverage. Scoped formatting, normal sync and diff checks pass; independent read-only review found no P1/P2 issue. Current-head CI remains pending.Computed-key capture correction at
e7ce5477c: all eight new importer cases fail before the fix in both test projects. The final focused HMR, hot-signal, early-capture and AST-immutability suites pass 552/552 tests on Node 24. Coverage includesSymbol.toPrimitive,toString,valueOf, optional access, computed object/class names, importer replacement, click updates and deferred-render state retention. Scoped formatting, syntax, normal sync and diff checks pass; independent read-only review found no P1/P2 issue. Current-head canonical CI and automated review remain pending.perf-reviewandconcise-codefor computed keys: compiler source +12/-0 lines, no runtime change, file, export, state or scheduler. The existing cached reachability analysis handles the additional key reads; the scoped scan reports zero candidates. Seven of eight paired compiler outputs are byte-identical, including ordinary HMR and every non-HMR development, production and server control. The affected development-only coercion case drops 745 raw / 169 gzip bytes because it propagates to its importer. A second coercion interpreter and blanket rejection of all computed keys were rejected. Compiler timing and browser latency were not measured, and no speed claim is made.Shard-4 fixture repair at
bc9acfd49: the original CI failed 75 tests across eight project/file combinations. Local Node 24 reproduces the query-resumption, strict-import, Rspack publicPath and obsolete dependency expectation failures before their repairs. All eight affected project/file combinations now pass 654/654 tests: hydration/Start 391, universal-renderer development/production 258, published Rspack package 5. Existing output, DOM identity, loader, cancellation and cleanup assertions remain unchanged. Scoped formatting, normal sync and diff checks pass; independent read-only review found no P1/P2 issue. These changes ship no runtime or compiler code. Full CI/typechecking for the new head remains pending.Same-runner whole-PR benchmark, baseline
d5988dd93versus tested synthetic merge5c9f45f77: all 64 work counters are unchanged; none of the 20 paired browser timing rows establishes a change beyond the report's noise threshold. Ordinary static-root gzip grows 523–534 bytes, the main TSRX app 293 bytes, and hydration entries 2,835–6,983 bytes. The 30,225-byte gzip full_fw increase measures the deliberately retained all-exports ceiling and appears in both target rows. A scoped source review found no concrete eager optional-stream import to remove; the actual receiver remains dynamically loaded. These are whole-branch costs, not the cost of this test-only repair, and no speedup or latency claim is made.Optional AbortSignal repair at
6257cbae7: Node 24 reproduces the SWR import failure before this fix. The final SWR and development/production bundle suites pass 21/21 tests, covering missing globals, Happy DOM, ordinary RPC, and rejection before fetch dispatch. All 14 Chromium cases pass, including genuine iframe signals, pre-abort, in-flight cancellation and lookalikes. The owning source typecheck, scoped formatting, normal sync and diff checks pass. Full current-head CI remains pending.perf-reviewandconcise-codefor this repair: runtime +5/-1 lines, no new file, export, hot-record field, allocation, DOM operation or scheduler. The native getter stays cached at module initialization; calls without a signal still skip validation. Walking polyfill prototypes was rejected because their getter need not perform native brand validation. The scoped scan reports zero candidates. Paired minified production RPC bundles against4e03a6552add 55 raw / 13 gzip / 1 Brotli bytes. This is byte evidence, not a latency claim. Independent read-only review found no blocking issue.Corrected Core adoption
4e03a6552: both immutable release assets match accepted main CI artifact12156414389byte for byte. Normal lockfile regeneration changes only archive authority/integrity; versions, dependency graph, policies and exclusions remain unchanged. The focused package-pack run passes 35 tarballs, 18 TSRX binding packages and 1,333 source checks in each TypeScript 5.9/6/7.1 lane, including strict browser projects without Node ambient types and negative controls. Packed SSR, Lynx, Pulseboard and Wayfinder consumers pass. Normal sync, scoped formatting and diff checks pass. The worktree retains a separate held navigation candidate, excluded from this adoption commit; these local results do not establish complete CI or final installed artifact pairing.RPC diagnostic wording at
e1907f2b4: error 364 now says "genuine AbortSignal" to match accepted cross-realm signals. Regenerated client lookup and CLI catalog, with the existing Chromium assertion updated. Published-base catalog compatibility, all 22 catalog checks, all 14 Chromium cases, scoped formatting, normalpnpm syncand diff checks pass. This changes diagnostic text only; production code 364 and validation behavior remain unchanged. Current-head CI remains pending.Hydration-free bundle repair at
dcfd3c73b: the exactsuspense-transition-vitegate fails before this correction and passes afterward, with all three hydrating non-vacuity controls intact. The complete matrix passed all 17 client scenarios and 3 hydrating controls; the exact gate was rerun after the final callback-retention change. Focused historical/viewless hydration, streamed-query and direct-signal suites pass 527/527 development and 877/877 production tests. Strict authored runtime/RPC/browser types, scoped formatting, normalpnpm syncand diff checks pass.Opus 5.5 hydration-closure review round 2 is CLEAR. Round 1 identified a retained hydration object in deferred cleanup; the final callback captures only the stateless method and existing boundary state.
perf-review: zero scoped scan candidates, no new hot-record field, allocation, DOM operation or scheduler. Paired production Vite builds againstd2472de96execute unchanged Suspense/transition and hydration behavior: client-only Suspense changes -22 raw / -24 gzip / -31 Brotli bytes;hydrate-rootchanges +435 raw / +171 gzip / +168 Brotli bytes. No latency claim is made.concise-codefor the bundle correction: runtime +12/-11 lines, no new file, API, driver, flag or state. The existing hydration capability owns the unchanged lookup. A helper-level hydration flag was rejected because deferred cleanup runs after the hydration pass, and retaining the capability object was rejected because it prolongs hydration-state lifetime. Full current-head CI and installed archive acceptance remain pending.Viewless hydration and cross-realm RPC repair at
d2472de96: two historical-viewless-read cases and all six real Chromium iframe RPC cases fail before their fixes. Final focused suites pass 623/623 development, 973/973 production and 14/14 Chromium cases. Coverage includes historical snapshot transitions, retained SSR node identity, no duplicate browser producer, pre-aborted calls without HTTP dispatch, in-flight cancellation and spoof rejection across all three RPC modes.Strict authored runtime/RPC/browser test program, scoped formatting, staged DOM checks, normal
pnpm syncand diff checks pass. Opus 5.5 read-only review round 1 is CLEAR, with no P1/P2 findings. Full repository tests/typechecking were not rerun locally; current-head canonical CI and final installed archive acceptance remain pending.perf-reviewandconcise-codefor this repair: the scoped source scan reports zero candidates. The stash helper reuses existing exact-document authority and introduces no registry, hot-record field or scheduler; RPC captures the native getter once and skips brand checking without a signal. A separate target registry and structural signal duck typing were rejected because they duplicate ownership or admit forged signals. Paired production esbuild controls against062ab9ecaleave ordinaryhydrate-rootandprop-attributesbundles byte-identical with semantic controls passing. The streamed-query graph adds 290 raw / 126 gzip / 102 Brotli bytes; the RPC graph adds 111 raw / 40 gzip / 32 Brotli bytes. These are bundle measurements, not latency claims.Cross-document hydration repair at
062ab9eca: the original shard reproduction fails before the fix; response isolation then exposes three duplicate-text updates and two lost historical reads. All assertions remain intact. Final development 564/564 and production/Strong 914/914 pass across the two failing files and direct-signal/DOM-binding neighbors, including iframe scalar/signal transitions. Strict source/helper types, staged DOM checks, scoped formatting, normalpnpm syncand diff checks pass. The separate strict test-program experiment encounters existing fixture optional-property and dynamic fixture-export typing errors; no suppression was added.Opus 5.5 cross-document review round 1 is CLEAR at
062ab9eca, with no P1 or P2 findings.Current-head canonical CI remains pending. The failed shard at
787064811is historical evidence, not a passing current-head gate.Aggregate callback capture at
865220c2a: object/array and class/namespace regressions fail before the fix. All 480 focused HMR/hoisting tests pass across development and production compilation, including descriptor-key coercion and deferred callback controls. Opus 5.5 round 2 is CLEAR. Twelve production/Vite/webpack compiler controls are byte-identical to71b881a906.RPC payload at
787064811: the original production signal-chat suite passes all 14 journeys, including the unchanged 67 KiB islands budget. A standalone compiled-client regression excludes unused batch transport and preserves it for explicit batching. All 148 focused RPC/batch/error-bundle tests pass; after correcting shared-reader catalog metadata, all 20 error-bundle tests pass again. All 11 catalog and compiled-client checks pass. Full development messages, error classes, causes, HTTP status/outcomes and server-provided messages are preserved.Strict authored HMR/RPC/batch programs, scoped formatting, catalog writer checks, compiler syntax, normal
pnpm syncand diff checks pass. The separate standalone strict experiment for the existing production-error-bundle test is blocked by its existing JSDOM/compiler-JavaScript declaration dependencies; no suppression or shim was added. RPC Opus 5.5 review round 2 is CLEAR at787064811, including the shared-reader metadata and protocol diagnostics.Historical package acceptance at
787064811was blocked by the old Core archive exporting Node stream/http2 declarations to the strict browser consumer (failed job). The owning Router correction, BleedingDev/router#6, merged normally at585d3233; its push/main package qualification is now SUCCESS at the exact merged source; its exact-byte promotion succeeded, and commit4e03a6552adopts the immutable accepted archive. Corrected Core/Start archive pairing and installed acceptance remain required; no feature publication occurred.Independent island authority at
6ad6113fe: real compiled SSR and extracted client widgets retain SSR nodes, edited inputs and isolated live counters in iframe and viewless documents, with explicit and default owners. All 386 focused hydration, authority and lifecycle tests pass across development and production compilation.Callback capture at
71b881a90: six public regressions fail before the compiler repair. All 454 HMR/hoisting tests pass after it; the subsequent 118-case importer matrix also passes, including six new conditional/nullish/sequence callback executions. Deferred render-time callbacks retain state. Module-time callback escapes conservatively propagate even when the receiving helper does not invoke them.Both strict authored test programs, scoped formatting, compiler syntax, diff checks and normal
pnpm syncpass. Opus 5.5 read-only review round 2 is CLEAR. Twelve production/Vite/webpack compiler controls are byte-identical to57f1f69bb0. Production createRoot/hydrateRoot bundles are unchanged; the independent activator adds 289 raw, 121 gzip and 146 Brotli bytes. No latency claim is made. The 454-test run passed before its wrapper encountered a Guardian release-busy error; its exact empty temporary output was removed, and registry release remains deferred. Current-head canonical CI remains required.Conditional/logical callee repair at
57f1f69bb0: eight public early-capture cases fail before the six-line compiler fix, then pass with importer propagation and fresh UI after importer execution. Four deferred controls retain state through native hot replacement. All 440 HMR/hoisting tests pass across development and production compilation; the complete strict authored HMR test program, formatting, compiler syntax and normalpnpm syncpass. Opus 5.5 read-only review is CLEAR. Current-head canonical CI remains required.perf-reviewandconcise-codefor this repair: reuse the existing iterative, per-compilation cached aggregate traversal; no new resolver, recursion, runtime import, node field or scheduler. Twelve client/server and production/Vite/webpack compiler controls are byte-identical to943de0c0a, including raw/gzip/Brotli sizes. The scanner reports no candidates. A separate recursive branch resolver was rejected because the current analysis already owns reachability and cycle handling. Possible branches are conservative, matching the existing policy; no compiler timing claim is made.App-core authority and lazy lifecycle at
943de0c0a: real buffered production, streaming production and Vite dev routes reproduce HTTP 500 before the fix and return HTTP 200 afterward with matching per-response snapshot and hydration IDs. All 93 focused app-core, Vite and lifecycle tests pass. Strict checking passes for 11 selected source/type/test files; scoped formatting, normalpnpm syncand diff checks pass. The public lifecycle entry is registered for source and published packages. A full package rebuild and full CI suite were not rerun locally. Opus 5.5 review round 2 is CLEAR: both cold-owner findings are resolved, with no remaining concrete blocker in this follow-up; the review was read-only and did not rerun tests.perf-review: real generated host and islands ESM bundle tests exclude signal engine, facade and hydration code from the lifecycle import graph. Added minified lifecycle payload beyond the initial entry changes from 74,082 to 2,576 bytes for host and 57,762 to 4,431 bytes for islands; gzip changes from 23,748 to 1,181 bytes and 18,098 to 1,898 bytes. These are artifact measurements, not latency claims. The one scan candidate is an exceptional, once-per-factory error-reporting microtask, with no render, commit or per-value scheduling. Cold lifecycle tests cover first signal use while frozen, late joins, restore, permanent retirement and invalid owner isolation.concise-code: SSR passes the existing response ID directly. The lazy lifecycle uses the existing owner capability seam and moves the existing retirement WeakSet rather than adding a document registry or a read-path hook. Removing ordinary lifecycle checks or gating solely on startup signal payload was rejected because it loses BFCache and late-publisher behavior.Reflect/viewless repair at
5c01591ba: the two Reflect capture regressions and four viewless publisher cases fail before the fixes. Afterward, 378 HMR/hoisting tests and 266 hydration/publisher tests pass across development and production compilation. The strict authored test program for all four affected test files, scoped formatting and normalpnpm syncpass. Opus 5.5 review round 1 found no blocker; both review threads are resolved. The 12 compiler-output controls and all five bundle controls are byte-identical to8de07df07. Current-head canonical CI and final archive acceptance remain required.The pushed head is
d2472de96b2c14c93327d3cbd3d02848500251d8, based ond5988dd936148d70e788783a8e44cb1c82933ca4.Early member-capture repair: public importer/render/click regressions reproduce method/getter captures, destructuring, spread/iteration, local parameters/aliases and decorator captures before their corresponding fixes. A 1,500-binding module also reproduces recursive compiler stack exhaustion. The earlier member/invocation checkpoint passes 366 HMR/hoisting tests across development/production-compiler projects and the strict complete HMR authored test program. Scoped formatting, syntax and normal
pnpm syncpass; 12 compiler-output controls remain byte-identical. Iterative aggregate queries cache completed answers for this compilation only. The 1000-key/read-site probe improves from 2897 ms to 124 ms; the 40-key four-level probe finishes in 11 ms. These are focused single-process measurements, not a global scaling claim. Reachable closures are conservative: unrelated early property reads, arguments, assignments and static initializers may propagate. Local lazy-helper arguments such aslazy(() => Counter)also propagate to importers, even if the helper returns the closure without invoking it. Ordinary deferred reads remain eligible. Opaque calls and early JSX remain pre-existing analysis limits. Opus round 4 found no regressions but exposed seven additional baseline capture gaps in defaults, nested-block modulevaraliases and static getters throughthis/super. Eight new public regressions, including module-levelletassignment, fail before the bounded fix and pass after it. Opus member-capture round 5 is CLEAR with no regression, cache, lexical or material compiler-cost blocker. The member/decorator threads are resolved. A separate follow-up handles constructor and tagged-template feedback and sequence-selected local callees. Five new invocation regressions fail before that fix; optional calls already pass and now have explicit coverage. Render-deferred constructor/tag controls preserve self-acceptance and live state. Independent invocation review round 1 is CLEAR at8de07df07: constructor/tag/optional/sequence cases, lexical scope, positions, recursive and alias cycles pass its probes, with no blocking miss or material compiler cost. Constructor, tag, optional and sequence review threads are resolved. Conditional/logical callee selection remains a separately tracked baseline limit; current-head canonical CI and final archive acceptance remain required.Non-extensible hoisted-component repair: 12 Vite/webpack regression cases fail at the identity write before the fix, while 12 production/server controls pass. After the fix, 282 hoisting/HMR tests pass across development/production-compiler projects. The final fixture typing cleanup also passes all 64 hoisting tests and the strict complete authored test program. Scoped formatting, syntax checking and normal
pnpm syncpass. Opus 5.5 cleared the compiler fix; its release-note wording objection is addressed in the pushed narrow identity-stamp wording. Other compiler metadata stamps and state retention for non-extensible private components are outside this fix. Current-head canonical CI remains required.Route-tree indexing repair: 59 snapshot tests pass, including interleaved/pathless geometry and all 4096 routes. Strict production-source plus the exact two new test bodies pass; the complete older test-file program still has 12 errors reproduced at
70cae7f9a6, tracked asmodernjs-dnpv3.58.11.5.3. Opus 5.5 found no blocker. A Node 26.12 probe of the actual baseline/candidate function bodies measured 16,781,312 versus 8,192 parent-descriptor reads for 4096 routes with identical trees. Constructors were stubbed equally to isolate traversal; this is not a latency or total-allocation measurement.CI fixture repair: 46 Rspack tests and 115 stream/document-authority tests pass. Tests execute emitted transport scripts with fresh document authority and explicit fixture capacity, including completed-response refusal; runtime guards and defaults are unchanged. Both strict authored test programs pass with JSX enabled, scoped formatting and normal
pnpm syncpass, and Opus 5.5 round 2 found no blocker. The package-source tsconfig excludes tests and has no JSX setting, so its direct selected-file wrapper was not a valid TSRX test-program check.Current repair cone: 458 tests pass across 16 development/production-compiler project files, including retained nested HMR state, publisher membership, hoisted component capture and suspended-root owner rollback.
Public regressions fail without the repairs. Lexically captured signal readers prove retired scopes become unusable when an earlier deletion unmounts the root; the two cleanup repairs together pass the complete 36-test owner suite. These Vitest production-compiler tests do not establish a fully bundled production runtime result.
Opus 5.5 retention review round 5 and production rollback review round 3 found no blocker. Current runtime strict typechecking, scoped formatting and normal
pnpm syncpass; four neighboring strict projects passed before the final runtime-only cleanup repair.Current-head canonical CI and full package acceptance remain required. The authenticated
a9a0803dpackage job rejectsnode:http2,node:streamandnode:stream/webdeclarations exposed by the old router-core archive; the corrected accepted archive is now adopted and its focused local packed checks pass; complete current-head CI remains required.Paired production browser comparison against
d5988dd93614: all 40 function-call and DOM-mutation counters are unchanged across ten operations in both JSX and TSRX fixtures. The original harness ran with--work-only, recording each exact work counter once per operation and build. The detailed JSX clear operation is 169 calls on both builds. Chrome 149.0.7827.55 ran with JIT disabled; this is a work-count result, not a latency or speedup claim. Normal builds pass and operation-owned baseline cleanup finishes without errors.Renderer-context fastpath: 72 context tests pass, including isolated first-use hydration and contexts created after an existing root. Removing the registration update makes all four late-registration cases fail. Runtime strict types, scoped formatting and normal sync pass; Opus 5.5 found no blocker.
Fresh installed source-candidate HMR passes all 16 assertions on Chrome 157.0.8103.6: retained host/remote state and props, no document reload, component/dependency/burst refresh, current SSR, outage recovery, incompatible replacement/removal, router navigation, native hook ownership and exact effect cleanup. This normal-pack run used the current Native worktree at
a9a0803dwith its held navigation candidate, the accepted Core0a4eed5ea37darchive, and the earlier 49-package Modern candidatef79d2ebadf; it validates the changed HMR path, not final accepted archive pairing. All four inner outputs were officially released with zero process-cleanup errors.Earlier checkpoint-specific validation follows: case counts below are not a complete current-head CI claim.
d7afd5002. This does not establish a fresh full-package-pack success.Documenttype errors, now repaired in035f3d9a1; new-head hosted qualification remains pending.035f3d9a1: the ES-only regression reproduced all six errors before the repair; 50 focused tests and strict typechecking pass, and Opus 5.5 found no blocker.2f8504fea: 23 focused tests pass, including archive identity, copied-byte integrity and gzip stdin controls; Opus 5.5 round 2 found no blocker. A fresh complete package-pack run remains pending.Earlier validation below records the named source checkpoints and does not claim the current head has passed the complete suite:
skipLibCheck=false.pnpm syncpass. Normalpnpm packbuilds the runtime, router and compiler archives, including declaration generation and published import/error controls.4d36dd2e3, comparingd5988dd93with merge4ac8e1b57. All 64 exact production work counters are unchanged; none of the 20 paired timed operations crosses the report's ±3% confidence threshold. Bundle growth remains and the performance investigation stays open.4d36dd2e365342f63dc028098a7e83a567bded37, including all four Node 24 test shards, all React parity shards, package validation, browser/heavy integrations, examples, lint, types and CI provenance. All distinct PR checks are successful; completed Codex review has zero unresolved threads. Merged-main archive acceptance remains a separate gate.Performance review
Awaited-capture check: the scoped scan against
0da4a0342reports zero candidates. The existing cached aggregate query now covers await assimilation during cold compiler admission; no runtime shape, allocation, DOM or scheduling code changes. Of 30 paired public-compiler outputs, 27 are byte-identical. Only early thenable method/getter/alias webpack outputs change, each removing 25 raw bytes and 13/11/8 gzip bytes respectively. Ordinary, late/deferred, Vite, non-HMR, production and server controls are unchanged. This measures output bytes, not compiler latency.Eval-bridge repair: perf-review is not applicable. Its single named re-export lives in the test-only bounded bridge; no shipped runtime, compiler or bundle changes.
The shadowed-stamp repair changes compiler source by +3/-17 lines and runtime source by +7/-0. It reuses the existing cached identity symbol and adds one cold extensibility check for fresh HMR functions, with no per-render work, state or scheduling. The scoped performance scan reports zero candidates. Paired non-HMR development/production/server output is byte-identical; webpack/Vite HMR output changes +11 raw / -17 and -14 gzip bytes respectively. The paired ordinary
createRootbrowser bundle is byte-identical at 202,727 raw / 65,749 gzip bytes, with the unused helper removed. These are byte measurements, not timing claims.The dynamic-import correction adds two compiler lines and reuses one cached aggregate query for the whole import expression. It adds no runtime state, emission option or scheduling. The scoped performance scan reports zero candidates. Seven of eight paired compiler outputs remain byte-identical; the affected development HMR coercion case removes 745 raw / 170 gzip bytes by propagating to its importer. These are output-byte measurements, not a timing claim.
The Reflect repair extends cold compiler capture analysis by 14 lines and reuses its existing aggregate traversal. Its scan flag is an AST
node.argumentsproperty read, not the JavaScript arguments object. Viewless hydration stores the already resolved target on the existing frozen, owner-scoped authority and releases it with the existing leases; it adds no map, scheduler, Block/Scope field or per-render allocation. The second scan flag is that existing cold authority freeze. All five common bundle controls remain byte-identical in raw, gzip and brotli bytes: capture-only, root-static, hooks-state, hydrate-root and server-render. These controls do not measure the opt-in publisher closure or establish a latency claim.The member-capture repair only changes compiler analysis for webpack client HMR. It adds no runtime field, DOM work, scheduler or per-render operation. Each aggregate query uses an iterative worklist and its own visited set, reuses completed answers and caches only its completed maximum reachable component position. This avoids partial cycle answers, repeated reads of the same value and recursive stack exhaustion. The cache dies with the compilation. Distinct-binding and method-chain scaling remains a separate follow-up. The scoped scan against
3f1594df6flags onenode.argumentsAST property access; this is not a JavaScriptargumentsobject or rest-parameter allocation. The 12 output controls remain byte-identical. The change extends the existing capture walk without selected-property interpretation or general object dataflow. The invocation follow-up adds 28/removes 9 compiler lines, with no runtime lines, files, exports or options. It extends the existing local invocation walk for constructors, tags and sequence-selected callees, and reuses the aggregate walk for class construction. A separate call/dataflow interpreter was rejected as unnecessary. Its scoped perf scan flags twonode.argumentsAST property reads; neither allocates a JavaScript arguments object. Both are cold compiler analysis, not a per-render operation. The small chain/diamond controls complete without stack failure; these probes do not establish general linear scaling.The hoisted-component repair adds one cold
Object.isExtensiblecheck only to HMR identity stamps for raw declarations. Fresh initializers retain direct stamping, with no runtime field or render-time branch. The 12-case compiler-output comparison leaves all production/server and ordinary fresh-component outputs byte-identical; the early Vite/webpack cases add 47 raw bytes each, 20/19 gzip and 21/28 brotli bytes respectively. The scoped scan against9d47d3a9creports zero candidates. This measures the repair's emitted bytes, not whole-PR performance.The route-tree repair at
9d47d3a9cbuilds one request-local Map and one packed bucket per distinct parent. Each descriptor is indexed once; no persistent cache, hot-record field, DOM work or scheduler is added. Its scopedperf-review-scan --base 70cae7f9a6 packages/tanstack-router/src/ssr/routerRenderSnapshot.tsreports zero candidates; the traversal work probe above verifies the removed quadratic scan.The retained whole-branch review below describes earlier checkpoints. The final runtime/hot-declaration repair scan reports no new mechanical candidate in its scoped diff; it does not replace the whole-branch scan or the paired production work measurement above. The final repair adds no hot-class fields or independent scheduler. Development retention uses weak ownership maps and an active-pool count; production rollback and skipped-commit cleanup reuse the existing transaction journal and capture lifecycle.
node scripts/perf-review-scan.mjs --base d5988dd936148d70e788783a8e44cb1c82933ca4 --head 143aa3f3c --jsonreports 44 mechanical candidates, with no hot-class-shape or hot-field-write finding.componentSlotadds 79 raw / 35 gzip / 35 brotli bytes.root-static-local,root-chained-jsxandcontextare byte-identical. These measurements cover this repair, not the whole PR's byte cost.The cross-document repair at
062ab9ecaadds no fields, state, helper calls or scheduling. Cached direct-text dispatch uses the trusted node'snodeType; streamed seed lookup uses the marker's owning window only during hydration/cleanup. The scoped runtime diff scan reports zero candidates. Paired production esbuild controls execute the same semantic snapshots:hydrate-rootandprop-attributesare byte-identical. The actual streamed-query import graph changes +1 raw / -4 gzip / 0 brotli bytes. This is byte evidence, not a latency claim; current-head CI owns the full production work report.Direct-eval performance check: the scoped diff scan reports zero candidates. This adds only cold compiler checks in the existing traversal, with no render allocations, DOM work or scheduling changes. Of 20 paired compiler outputs, 19 are byte-identical; the affected early-eval webpack output removes 25 raw / 7 gzip bytes by declining self-acceptance. Ordinary, late/deferred, Vite, non-HMR, production and server outputs are unchanged. Compiler latency was not benchmarked; no speed claim is made.
Concision review
Awaited-capture repair changes compiler source by +3/-2 lines, with zero runtime lines, new files, helpers, exports or options. It extends the existing import/coercion admission guard and uses the shared async fixture loader. A separate thenable interpreter would duplicate the existing cycle-safe capture query.
Direct-eval repair extends the existing capture traversal by +15/-1 compiler lines, with zero runtime lines, new files or public options. One scalar records the latest component initialization position; existing cycle-safe queries follow helpers and callbacks. Parsing eval strings or adding a second interpreter would duplicate analysis and miss dynamic input.
Eval-bridge repair adds one test-only export in the existing bridge, with no new file or shipped source line. Exposing the entire private runtime was rejected because the evaluator deliberately limits submission capabilities. Existing behavioral graders reproduce and protect the contract; their assertions and import allowlist are unchanged.
The shadowed-stamp repair moves identity assignment into one private helper beside its existing runtime symbol. It adds no public export or option and avoids shadowable global-object recovery. The existing shared fixture loader replaces an ad hoc Function/Proxy loader while preserving its identity assertions; the new compiler fixture separately checks authored bindings and import-name collision handling.
The dynamic-import correction extends the existing early-capture guard with two compiler lines, with no new helper, file, API or runtime state. The whole-expression query covers both source conversion and option getters without a second traversal or call interpreter.
The cross-document repair replaces ambient realm assumptions in existing text/adoption owners and adds one shared response-document test helper. A second hydration driver or clearing private retirement maps was rejected because it would duplicate ownership or weaken authority fences.
The Reflect/viewless repair changes five existing source files by +28/-9 lines, with no new file, public option or runtime subsystem. It reuses capture traversal and authority leases; a separate call interpreter or document-to-target registry would duplicate existing ownership.
The hoisted-component fix changes compiler source by +17/-12 lines in the existing identity initializer, adding no file, API, option or runtime state. A lexical early-reference exemption was rejected because it can discard identities for unexecuted earlier references; a runtime side table would add ownership machinery for a cold module-time case.
The route-tree repair changes package source by +19/-13 lines, with no new file, export or option. Keeping the shorter recursive filter was rejected because it rescans all descriptors for each route. The existing SSR owner retains tree construction; current-head CI bundle reports remain pending.
The retained measurements below describe the earlier source checkpoint and are not refreshed totals for the latest repairs.
Against the base, package source is +7,010 / -201 lines across 42 paths. The cold hydration repair reuses the existing lifecycle registry and authority owner; it adds no independent scheduler. A static eager import was rejected because ordinary unbundled consumers initialized the signal engine; an unconditional asynchronous path was rejected because initialized publishers must still activate synchronously.
The new source modules separate bounded wire validation, snapshot codecs, streamed authority, publisher protocol, request preparation, native hot-owner/declaration bookkeeping and router snapshot capture. Their exports serve the host/server boundary, compiler-generated declarations and router integration. Existing Hydrate/SSR and stream-delivery mechanisms retain ownership of rendering. Rejected alternatives were a second root/custom hydration driver, unconditional bridge registration at every root, and application shims; they duplicate ownership or retain context machinery in minimal apps. The measured generic-path byte growth above is the cost of supporting compiled first-use context providers.
Risk / follow-ups
Separate pre-existing hook-slot
Symbol.forand returned-outputObject.assignemissions can also be shadowed; actionable reproductions are tracked inmodernjs-dnpv3.58.11.5.6. This repair covers module-time HMR component identity stamping.Completed-response overflow recovery remains tracked as
modernjs-dnpv3.58.11.5.2: 256 announced promise channels exceed the early 512-frame mailbox, and a failed low-level join keeps those selections pending on the supplied owner. This fixture verifies bounded refusal, not successful native boundary fallback. Actual browser lifecycle recovery must be demonstrated without raising limits or adding application shims. Web bundles executed without a script URL need an explicit RspackpublicPath.Current-head canonical CI is successful. Require merged-main CI and a fresh full-package-pack run after adopting the accepted router-core/Start archives. Final accepted native/core/Start helper archives must pass installed consumer acceptance together before release. Review resolution and live-base checks remain required; source-candidate proof does not establish released-archive behavior.
The current paired benchmark measures JSX selection at 0.209 ms in the base and 0.210 ms in the head, with a paired ratio of +0.8% and a 95% interval of +0.5% to +1.6%. None of its 20 timed operations crosses the report's ±3% confidence threshold; all 64 work counters remain unchanged. The prior run
39201649374measured +6.9% with a +6.4% to +7.5% interval, so that slowdown did not reproduce in this run. Only cold compiler admission and test fixtures changed between those source checkpoints; no causal runtime fix is established.modernjs-dnpv3.58.11.5.7remains open for exact-build attribution and ordinary hydration retention. Generic component-slot causal latency and deep retained memory remain unmeasured.Whole-PR gzip growth is 294 bytes for the TSRX framework bundle, 534 bytes for a minimal root, and 2,835 bytes for ordinary
hydrateRoot. Shared hydration reconciliation retains rollback and streamed-boundary methods in the ordinary hydration bundle; avoidable retention still needs qualification inmodernjs-dnpv3.58.11.5.7. The 30,258-byte full-framework increase comes from a namespace fixture that forces every API export live and sums optional chunks. No eager heavy signal engine import was found in ordinary roots. The 80 size and 96 reachability increases are correlated report values. Passing the report job does not accept these costs or clear the measured slowdown.Provenance
agent-authored).