Related #846, #973, #960, #66.
An admitted checked-JavaScript owner exports /** @type {ReadonlyArray<number[] | string[]>} */ const readonlyNested = [[1], ["one"]. TypeScript 5.7.3 gives an importer readonlyNested[0] the type number[] | string[]; Home gives it (number[] | string)[]. The same mismatch occurs for mutable Array<number[] | string[]>. This also changes the result of flat() in the #973 oracle.
Root cause: packages/ts_program/src/jsdoc_types.zig strips [] from any type text ending in that suffix before splitting a top-level union. After removing the outer ReadonlyArray<...>, it treats number[] | string[] as (number[] | string)[]. A suffix after a top-level union belongs only to the final constituent. Parenthesized (number[] | string[])[] has different semantics and must remain an array of a union.
Acceptance: parse both forms with distinct container placement; preserve the correct schema across checked-JavaScript imports with checkJs on and off; match TypeScript 5.7.3 exact CLI diagnostics for source element and flat() result; run focused parser/Program/checker, full Program/checker/LSP, and expanded exact-stream audit under the agreed memory guard. No parenthesized fixture workaround.