Spreading a data-sized collection into push, splice, Math.max/min or a
variadic helper turns each element into a call argument. Above roughly
125,000 elements V8 runs out of stack, so admitted inputs failed with
RangeError: managed/native verification exited with execution_failure,
import-reference-source with UNKNOWN, and DirectoryArtifactReader and
JavaScript export-binding selection threw.
Add appendAll in src/domain/arrayAppend.ts, which appends in place and in
order without expanding elements into arguments, and use it at every
production push/splice spread site. Replace the data-sized Math.max/min and
variadic loader-queue spreads with loops or array parameters. Add the
rea/no-bulk-append-spread lint rule so the pattern cannot return; the few
structurally bounded spreads keep disable comments naming their bound.
Fixes#8545
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* refactor(javascript): break the semantic analysis import cycle
Split shared semantic facts out of the analysis hub so projectors of
effects, evaluation, and identity no longer import one another in a cycle.
* refactor(javascript): share the import specifier reader
Read static imports in one module used by the boundary checker and both
cycle guards, so those rules cannot drift apart.
---------
Co-authored-by: Cursor Agent <[email protected]>
Retain named operations in GraphQL Source bodies with locationOffset metadata.
Use final property ownership and parsed lexical facts to suppress copies only
when a recovered document, its containers and source aliases have proven
private metadata ownership. Preserve independent observations after writes,
exports, opaque uses, classic-script global exposure or direct evaluation.
Share interpretation across application and captured-web analysis. Build
optional reference indexes once per source and checkpoint examined records,
including suppressed findings, to retain cooperative cancellation.
Fixes#3311
Co-authored-by: Kaoru0822 <[email protected]>
Co-authored-by: gensokyo-dev <[email protected]>