ReviewOS

home-lang/home

fix(ts): retain admitted JavaScript sources in real import diagnostics

#846
Open chris opened this 8 days ago ·
8 days ago

Verified checkpoint (2026-10-29)

This issue remains open. The latest admitted-JavaScript work is on origin/main: a9ea8e354, 165e1ab82, 0ea6c0db3, and 768551d80. JSDoc immediately before an anonymous export default function now belongs to the source declaration, rather than leaving its parameter implicit-any and losing importer errors. The fix follows the actual export parent; it does not use a name heuristic or suppress diagnostics.

The independent #846 oracle auditor matched TypeScript 5.7.3 on 99/99 exact config streams (stdout, stderr, exit). These finite fixtures cover controlled explicit roots, import closure/dependency depth, implicit checkJs admission, negative untyped-package/JSX/config behavior, typed imported-JS reads/writes, default exports, and selected owner revisions. The direct guarded checker executable passed 4,713/4,713 tests; guarded Program, tsc_main, and test-tsc-streams steps exited 0. Program and LspProject edit/revert regressions verified the new default-function owner in both checkJs modes. The dedicated ts_lsp package suite was not rerun for this batch because host memory headroom was low. See the TypeScript parity notes and the detailed checkpoint.

Remaining acceptance

The passing configurations are targeted evidence, not general admitted-JavaScript inference or editor parity. Continue differential TypeScript-oracle coverage for other owner/export/type forms, source revisions and LSP invalidation combinations, negative diagnostics, and typed imported-JS constraints. Correct underlying Program/checker/adapter semantics without permissive naming shortcuts or blanket diagnostic suppression. Keep unsupported cases explicit and verify relevant full suites under the approved memory guard before closing. Related: #416, #845, #959, #960, #963; broader Bun parity remains open in #66.

5 hours ago

2026-11-02 admitted-JavaScript update: 228b129f3, d7ce02aea, and 0632dcbd6 are pushed to origin/main as Glenn without coauthors. The guarded home-tsc build matched 134/134 exact TypeScript 5.7.3 CLI oracle streams. The #966 chained CommonJS LSP edit/revert regression passed under the dedicated 3,840 MB guarded package step and was pushed. The fresh full ts_checker run completed 4,705 pass / 11 fail / 4,716 total; the remaining checked-JS constructor/prototype/JSDoc gaps are documented in #968.

5 hours ago

Current #968 follow-up on origin/main: a17074639 fixes checked-JS prototype-method this inference and updates two tests to exact TypeScript 5.7.3 diagnostics. Both focused tests pass under the memory guard. The prior full checker baseline is 4,705/4,716 pass; rerun after this commit and the 134-stream CLI audit are pending while host memory is below the agreed >=40% threshold during an unrelated Zig build. Details: #968.

5 hours ago

Follow-up #968: 476a8e4eb is on origin/main as glennmichael123 without coauthors. Checked-JS constructor names now resolve to instance types in JSDoc before the value-only diagnostic. The exact TypeScript 5.7.3 fixture has zero diagnostics, and the focused Home checker test passes with zero diagnostics and zero unmodeled-any recoveries under the 3,840 MB guard. The broader checker suite and 134-stream CLI audit remain pending; host memory is below the agreed 40% start threshold while the iOS Simulator is active. #966's chained CommonJS LSP regression remains pushed and previously passed.

55 minutes ago

2026-11-02 progress: 801061ed5 and f39287d68 are pushed to origin/main. Checked-JS prototype @type fields now constrain constructor writes, and nested CommonJS object writes propagate through an imported module shape. The exact TypeScript 5.7.3 controls and focused Home tests agree; the related CommonJS checker group passes 52/52. These changes cover two more admitted-JavaScript owner/import shapes.

The full checker suite, LSP edit/revert tests, and fresh 134-stream auditor remain pending for this checkpoint. #968 and #966 track the specific constructor/import work; #66 tracks wider Bun parity.

55 minutes ago

2026-11-03 admitted-JavaScript differential checkpoint, continuing #966 and #968:

I reproduced the new two-file CommonJS/LSP revision fixture under TypeScript 5.7.3 with --allowJs --strict --noEmit --skipLibCheck, both with and without --checkJs. exports.n = {}; exports.n.K = function () { this.x = 10; }; imports without diagnostics in either mode. Removing K gives exactly one consumer TS2339 on {}. Declaring n as {a: number} gives exactly one consumer TS2339 on { a: number; } in both modes, plus the owner's TS2339 only when checkJs is on. These are exact real-file controls for the pending LSP revision test.

I also verified repeated nested writes: exports.n = {}; n.K = 1; n.K = 's' gives an imported string | number and one TS2322 when assigned to boolean in both modes. An object-literal K: 1 keeps its number constraint; assigning 's' reports owner TS2322 only under checkJs, while its importer still reads number. A direct Program regression test now covers both shapes. The Home changes are local and awaiting guarded Zig tests; no new parity pass is claimed while host memory is below the agreed 40% build threshold.

55 minutes ago

Progress on the active checker/Program/LSP parity goal: bd3371310 is on origin/main as Glenn, no coauthors. The exact staged CommonJS code passed the focused Program source-order test, LSP four-revision importer test (both checkJs modes), and checker CommonJS regression group. Details: #966.

Checked-JS constructor work is still local. Three focused tests now pass, while four independently reproduced TypeScript 5.7.3 semantic differences remain, listed on #968. Full checker suite and the requested 134-stream CLI audit have not run yet. Builds remain sequential under scripts/run-bounded.pl at 3,840 MB and require host memory >=40% at launch.

7 days ago

Checkpoint: #945 is now completed by 2d58f3f and ed04a5c on origin/main. Imported checked-JS classes retain unconstrained, constrained, and defaulted constructor-assigned JSDoc template fields; the constrained and defaulted real-file controls match TypeScript 5.7.3 exactly on diagnostic codes, positions, and messages. After rebasing onto current main, guarded Program 421/421, CLI 84/84, checker 4684/4684, and a fresh home-tsc build pass, with serial runs below the 3,840 MB process-tree cap. A separate direct class-field annotation transfer gap was independently reproduced and filed as #946. #846 stays open for #946 and the broader admission/read-write controls listed in its remaining acceptance.

7 days ago

Follow-up checkpoint: #946 is completed by dc40a05 and 2eb23ca on origin/main. Direct checked-JS instance/static class fields retain supported JSDoc types across imports, including a defaulted generic and a typed static field next to an unmodeled static method. The owner-side invalid initializer remains an error. TypeScript 5.7.3 and rebuilt home-tsc match on the real-file controls; guarded Program 422/422, CLI 85/85, checker 4684/4684 and home-tsc build pass. #945 and #946 are closed, but #846 remains open for its broader source admission, dependency-depth, revisions/LSP, and untyped-package/JSX/config acceptance. No general TypeScript parity claim.

7 days ago

Checkpoint: #947 is closed by 3c143a5 on origin/main, authored/committed as glennmichael123 without coauthors. A fresh checked-JS exported finite JSDoc object reproducer previously had zero Home errors versus TypeScript 5.7.3 TS2322/TS2322/TS2339; both now emit the same codes, positions, and messages. Nested, optional, and readonly members also cross the import boundary; four corresponding error codes/positions match the TypeScript control. Guarded Program 425/425 and CLI 85/85 pass, fresh home-tsc built; checker target remains cached-valid (no checker-source edit). The richer optional-property assignment message still differs even for a TS-owned declaration, separately tracked as #948. A JS-owner source-revision regression was added and passes. #846 stays open for broader dependency-depth, LSP/revision, untyped package, JSX/config, and remaining imported-JS controls; this is not a general parity claim.

7 days ago

Follow-up: #948 is now closed by 5e31d08 on origin/main, authored/committed as glennmichael123 without coauthors. The previously documented optional-property assignment message difference is fixed in the general checker path, not a JavaScript-specific exception. The rich checked-JS object import control from #947 now matches TypeScript 5.7.3 exactly on four codes, positions, messages, and exit class; the TS-owned optional-property matrix also matches, including nullish/union and literal controls. Guarded checker 4685/4685, Program 425/425, CLI 85/85 and fresh home-tsc build pass. #846 remains open for the broader admission, dependency-depth, LSP/source-revision, untyped-package, JSX/config and imported-JS surface; no global parity claim.

7 days ago

Additional admitted-JS checkpoint: #949 is closed by e15a97a on origin/main as glennmichael123 (no coauthors). TypeScript 5.7.3 and freshly rebuilt Home now agree on a checked-JS/JSDoc default function imported into TS from both .js and .jsx: exactly TS2322 at consumer line 2, column 7. The default route previously existed but lost its signature because JSDoc lookup stopped at the default modifier; this was fixed at the source-owned annotation association point. The negative JSX option boundary still matches: TS6142 without a JSX mode, TS7016 when JSX is enabled but allowJs is absent. Guarded Program 427/427 and CLI 86/86 pass; checker target cached-valid, no checker edit. Untyped-package TS7016 negative real-file control also matches, but is not claimed as new full acceptance coverage. #846 stays open for broader explicit-root/dependency-depth, LSP revisions, config and imported-JS scenarios.

7 days ago

Checkpoint: 0035f8a is on origin/main, authored and committed as glennmichael123 without coauthors. The production LSP project now tracks open documents by Program watch revision and queues separate publishDiagnostics notifications for transitive importers after a checked-JS owner changes. The stdio loop drains each queued body as its own framed message; didSave with replacement text also publishes the edited file, and didClose stops tracking it. A TypeScript 5.7.3 oracle for the JS JSDoc string→number switch yields TS2322 at main.ts:2:7, then no importer diagnostic. The new guarded LspProject regression checks that transition, its reversal, save, and close. Guarded zig build test -Dfilter=tsc_main and -Dfilter=ts_lsp_server pass; zig fmt --check and git diff --check pass. IMPORTANT: the complete zig build test-home-lsp was not verified here: its build reached 3,913 MB and the 3,840 MB guard stopped it (exit 125). No cap was raised, no test weakened, and this is not a claim of full #846 or end-to-end parity. Remaining acceptance still includes broader admission/dependency-depth, config/JSX and imported-JS controls.

7 days ago

Imported checked-JS read/write checkpoint: #950 now has two commits on origin/main, 4d3974a and 72620f3, as glennmichael123 without coauthors. The source-owned JSDoc transfer now carries string/number index signatures into TS consumers. TypeScript 5.7.3 and the freshly rebuilt Home CLI agree on four TS2322 codes, locations and messages across owner, imported string index, named property through that index, and imported number index. Guarded Program and CLI suites and standalone home-tsc build pass below the 3,840 MB cap. #950 remains open for readonly/symbol index support and output/exit-order mismatches; #846 remains open for its broader admission, depth, config and imported-JS acceptance. This does not close #846 or claim full parity.

7 days ago

Follow-up for #950: 64e1dbb and 6199493 are pushed to origin/main as glennmichael123 without coauthors. Imported checked-JS JSDoc symbol indexes now enforce TS consumer writes; the saved TypeScript 5.7.3 / fresh Home fixture agrees on five TS2322 codes, positions and messages across string, number and symbol domains. Guarded Program/CLI suites and home-tsc build pass below 3,840 MB. Readonly index write protection and CLI diagnostic order/exit-code parity remain open in #950, alongside #846 broader admission/config/revision controls. No full #846 resolution is claimed.

7 days ago

Imported checked-JS readonly-index follow-up is now pushed to origin/main in f6946a9 and 3b58b50 (glennmichael123 author+committer, no coauthors); details and the saved TypeScript 5.7.3 oracle are in #950. The production fixture now agrees with fresh Home on five TS2322 plus two TS2542 codes, positions, and messages, while mutable writes and readonly reads stay valid. Guarded full Program/CLI suites, focused checker readonly-index tests, and fresh home-tsc build pass below 3,840 MB. Keep #846 open: explicit-root/import-closure/dependency-depth controls, LSP/source revisions, negative config/JSX/untyped-package cases, and broader imported-JS behavior still need verification. #950 also remains open for CLI diagnostic ordering and error exit-code parity.

7 days ago

Status correction for #950: 25ec88a is on origin/main under glennmichael123 without coauthors. Fresh Home now returns the same exit code 2 as TypeScript 5.7.3 on the imported checked-JS index fixture; seven diagnostic codes, positions, and messages also match. Guarded stream and CLI suites pass. The remaining #950 difference is cross-file diagnostic print order, and #846 still needs its broader explicit-root/import-closure/depth, LSP revision, and negative config/JSX/untyped-package acceptance; no closure claim.

7 days ago

Imported-JS CLI parity checkpoint: ec1ceee is pushed to origin/main as glennmichael123 without coauthors. The saved issue846-index fixture now matches TypeScript 5.7.3 byte-for-byte in seven diagnostic lines, cross-file order, and exit code 2; guarded stream and tsc_main suites pass. This does not close #846. A separate red mixed readonly-domain oracle in 52d88ac demonstrates three extra Home TS2542 diagnostics versus TypeScript; see #951 and parent #950. Broader admission/depth, LSP revision, config/JSX and untyped-package acceptance remain unproven.

7 days ago

Imported JSDoc index-signature parity advanced through #950/#951. Commits 3794e05 and 119396d on main preserve readonly permissions per string/number/symbol key domain and lock an exact 15-diagnostic TypeScript 5.7.3 CLI fixture; guarded checker, Program, stream, and tsc_main suites exited 0. #951 stays open for the generic-interface refresh audit, and #846 remains open for its broader acceptance criteria.

7 days ago

Admission/diagnostic checkpoint on origin/main: aefe5a1 and cffd5b8 add an exact TypeScript 5.7.3 CLI oracle for an explicit JS root, a two-hop JS import closure, an unadmitted sibling, allowJs without checkJs, and checkJs without explicit allowJs. All three modes match TypeScript diagnostic text/order/exit and are locked by test-tsc-streams. A new noResolve control then exposed a TS7016 display-path mismatch; #954 was fixed in 2c037e5 and closed. Home now keeps excluded JS unadmitted, reports the same TS7016 with its absolute canonical bridge.js path, and preserves the explicit root.js error; targeted checker, full tsc_main, full Program, and exact stream suites exited 0 under the 3,840 MB serial guard. #950/#951/#952/#953/#954 are closed. #846 remains open: this fixture does not establish all dependency-depth/package cases, source revisions/LSP behavior, or negative JSX/config/untyped-package acceptance.

7 days ago

Added the negative JSX admission control in 58f8490 and fixed canonical resolved paths in TS6142 through fa6dcff (both pushed to origin/main). The fixture imports an admitted .jsx module without a jsx compiler option; Home and TypeScript 5.7.3 now both report TS6142 at jsx.ts:1:24 with the absolute widget.jsx path and exit 2. Guarded test-tsc-streams, focused TSX/JSX checker tests, and test -Dfilter=tsc_main passed. #846 stays open for the remaining admission/diagnostic cases.

7 days ago

The untyped-package/dependency-depth control exposed and closed #955. Three direct-to-main commits under glennmichael123 (no coauthors): 9a39333, 24dcc34, 8864f15. A real node_modules CommonJS package at default depth still yields TypeScript-matching TS7016; at maxNodeModuleJsDepth: 1, its module.exports = 42 value is admitted and a TS consumer now yields exact TS2322 instead of silently accepting an any. The equivalent relative import has the same typed result. All three exact TypeScript 5.7.3 CLI streams/exits are in test-tsc-streams; guarded full Program and tsc_main targets passed, plus focused serial/parallel Program regression. The full checker command exited 0 but printed a pre-existing anomalous failed command line, so that result is qualified. #846 stays open for remaining LSP/source-revision and wider admission/read-write acceptance.

7 days ago

Negative admission/config progress is on origin/main in 0426dda and d8bada6 (#956, now closed). Exact TypeScript 5.7.3/Home stream assertions cover JSX enabled while allowJs is explicitly false (TS7016 at the .jsx import), plus checkJs true/allowJs false in both JSON key orders (TS5052 at both explicit keys, source-order anchors, exit 2). The shared tsconfig validator now expands dependent-option diagnostics at every matching explicit key rather than silently dropping the second anchor. Guarded full tsconfig, tsc_main, and test-tsc-streams suites passed; authored/committed as glennmichael123 without coauthors. #846 remains open for broader source admission and LSP revision/diagnostic acceptance.

7 days ago

New independently reproducible checked-JS import gap: #957. TypeScript 5.7.3 reports TS2345 for an imported Map<string, number>.set("ready", "wrong") call; Home currently omits only the importer diagnostic while retaining the owner-side error. A schema/consumer fix and red Program regression are in progress. The first guarded compile exposed an exhaustive metadata-transfer table, now patched locally; no fix is claimed or pushed until a second guarded test verifies it.

7 days ago

2026-10-27 checkpoint: five small commits 684475989..a706bdd are pushed directly to origin/main as glennmichael123, no coauthors. #958 is closed: unchecked JavaScript JSDoc parameters and inferred returns now constrain CommonJS/ESM TypeScript importers. #957 remains open: canonical Map<string, number> whole-export transfer now works, but the other collection identities still require sound admission. TypeScript 5.7.3 exact streams, guarded full Program (438/438), and full checker pass. This does not close the broader admitted-JS acceptance in #846.

7 days ago

Checked-JS collection import progress in #957: four small commits through dce9497 are pushed to main. The new TypeScript 5.7.3 CommonJS/ESM × checkJs on/off CLI fixtures match all six exact consumer diagnostics; guarded test-tsc-streams and full ts_program pass. #957 remains open for broad schema promotion and the qualified indexed-type regression; this does not close the parent.

7 days ago

Further #957 progress: 3632932 is on main. The strict Program matrix now passes 16 cases (six collections × CommonJS/ESM × checkJs on/off × serial/parallel × source-add order) after fixing a false TS7016 for admitted JS imports. Guarded full ts_program, full ts_checker, and test-tsc-streams all pass. #957 remains open for broad declaration-schema promotion and the qualified indexed/mapped intersection regression.

7 days ago

Child #957 collection parity is shipped on origin/main through 9b48ab0 and is ready to close. Six checked-JS collection identities survive CommonJS/ESM imports with exact TypeScript 5.7.3 CLI streams; the admitted-JS Program path and qualified indexed/mapped consumer regression are fixed. Guarded full Program 441/441, checker, CLI streams, and home-tsc build pass. This does not close #846: its broader explicit-root/import-closure, dependency-depth, source-revision/LSP, negative diagnostic, and other JS inference acceptance remains open.

7 days ago

Scoped LSP admission fix shipped directly to origin/main as 458036738, authored by glennmichael123 without coauthors. A new end-to-end editor regression exposed that editing a TypeScript importer to remove its last JS import left the unopened owner.js in the Program: Service.didChangeFile loaded closure and compiled, but never retired unreachable sources. The LSP edit path now uses Program.recompileChanged, which admits new imports, retires removed dependencies, and rechecks affected importers. The regression checks add -> remove -> re-add of the unopened JS owner, exact TS2322 presence/clearance, admission state, stable FileId, and no stray notifications. Guarded full tsc_main, ts_lsp_server, and ts_lsp suites pass at 3,840 MB; modified-doc pickier and diff checks pass. The first combined ts_lsp attempt tripped the guard at a conservative 3,866 MB tree sum; after separate cached server validation, the combined run passed at 2,205 MB peak. Broader #846 acceptance remains open, including unverified depth/config/negative and typed read/write combinations.

7 days ago

Additional LSP revision progress shipped directly to origin/main as 51bc070, authored by glennmichael123 without coauthors. The project host now processes workspace/didChangeWatchedFiles for unopened disk sources: changed/deleted/recreated JS files update or retire their Program source, invalidate resolver caches, recompile affected importers, and publish fresh diagnostics to open documents. Open editor buffers are not overwritten by watcher events. End-to-end regressions cover TS2322 -> clear -> TS2307 -> TS2322, a previously missing import admitted on creation, and unsaved open-owner protection. Guarded full tsc_main, ts_lsp_server, combined ts_lsp suites and home-tsc build passed under the 3,840 MB ceiling (last build peak tree footprint 2,254 MB); modified-doc pickier and formatting checks passed. This closes these specific source-revision/LSP gaps, not the broader #846 oracle and negative-case matrix.

8 days ago

Draft now binds the actual Program source-admission inventory into all production adapter paths (normal/build/LSP, including edit invalidation). The checker API typed-resolution bit is true for JS only when JS sources are enabled and that path is actually admitted; no blanket allowJs suppression or node_modules naming shortcut. A new entrypoint control proves admitted explicit node_modules JS is typed, while an unadmitted JS path remains untyped even with allowJs/checkJs enabled; all 34 entrypoint tests passed before integration. All 12 shared-config JS oracle cases now match TS6 and native TS7 exactly, within the full 76 shared-config cases. Added a separate real package default / untyped-JS checker negative to preserve genuine TS7016 without an extra missing-default error. Broader admission/dependency-depth/implicit-checkJs and diagnostic-position scope remains open. Integrated onto main 4656fca; full integrated reruns pending, no source push or admission-completeness claim yet.

8 days ago

New package negatives confirm genuine unadmitted JS still reports TS7016, but at import start (1,1) versus TS6/TS7 module literal (1,19). The draft now anchors the existing diagnostic to moduleSpecifierQuotePos, preserving its code/message/hints. Added package-default coverage simultaneously so untyped JS does not get an extra TS1192. Retained red output in /Users/chris/.cache/home-ts-845.xzutkH/package-red.json and .log; final suite/oracle reruns queued, no push yet. Source admission remains actual Program membership, with an explicit node_modules-root unit proving this is not a folder-based admission heuristic.

8 days ago

Final package controls now match both TS6 and native TS7 10/10, including genuine unadmitted-JS TS7016 at module literal (1,19), with no extra default-export error. All 12 admitted-JS cases also match within the 95-case matrix. Full current checker 4501, Program 238, CLI 74 and entrypoint 35 passed; actual-admission/root unit still includes explicit node_modules JS and unadmitted negatives. Parent b6e34fc integrated; source remains uncommitted pending exact-parent production multiset, driver/lint and cost recheck gates. No blanket JS error suppression or admission based on folder spelling. Broader dependency-depth/implicit-checkJs coverage stays open.

8 days ago

Published 206cdf1 as Chris to origin/main without coauthors; cde7cd3 documents evidence. Actually admitted JS paths now carry typed-inference resolution facts; unadmitted JS retains genuine TS7016, now anchored at the module literal, without an extra default-export error. Explicit admitted node_modules root and unadmitted sibling are unit controls: no folder-based admission or blanket allowJs suppression. All 12 shared JS source cases and 10 package cases match pinned TS6/native TS7 exactly; total native oracle 105, shared TS6 86. Complete source suites and exact-parent Zod multiset gates pass. Keep this issue open for broader implicit-checkJs/dependency-depth/project-admission review. Report/archive preserve all red failures, dialect cases, and adverse cost observations: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#default-module-owner-correctness-and-cost-checkpoint-2026-10-08-utc

8 days ago

Landed 18fc11133 on main: checkJs: true now implies the effective allowJs value when allowJs is omitted, matching pinned TypeScript 6.0.3 and native TypeScript 7.0.2.

This is centralized in tsconfig.effectiveAllowJs and consumed by config validation, production driver options, CLI project discovery/build/dry/clean/root-extension paths, and virtual conformance root selection. Explicit allowJs: false remains authoritative.

Differential controls:

  • implicit checkJs: Home/TS6/TS7 all report TS2322 at main.js(2,7);
  • explicit allowJs: false: all retain TS5052;
  • checkJs + isolatedDeclarations: all report TS5053, not TS5052.

Post-rebase verification:

  • tsconfig: 158/158;
  • driver: 200/200;
  • CLI: 35/35;
  • Program: 247/247;
  • checker: 4,546/4,546;
  • focused conformance: 2/2;
  • production home-tsc build: 3/3 steps, 3,052 MB guarded peak.

The full conformance target was also attempted under the fixed 3,840 MB ceiling, but the guard terminated it at the ceiling; it is not being represented as completed. This issue remains open for the broader explicit-root/import-closure/dependency-depth, source-revision/LSP, and imported-JS read/write acceptance work already listed above.

8 days ago

Landed 5577bc2a3 on main: source revisions now invalidate and rebuild the changed file's complete transitive importer closure.

The production resolver adapter now prefers the Program's admitted in-memory compilation over rereading stale filesystem bytes. Watch mode resets revision-scoped resolver caches and publishes the complete current project diagnostics after each edit, so dependency changes can add or clear errors in importers.

Retained red controls:

  • Program: 247/248; the middle importer remained compiled after the dependency revision.
  • production adapter: 35/36; export facts came from stale filesystem bytes.

Green verification:

  • Program: 248/248;
  • tsc_main: 36/36;
  • ts_cli: 74/74;
  • stripped ReleaseFast home-tsc: 3/3 steps, 3,043 MB guarded peak;
  • live bounded watch: initial 0 errors; changing dep.ts from number to string produced TS2322 at main.ts(2,7) and 1 error; reverting it returned to 0 errors.

The unfiltered ts_lsp target did not execute: Debug, ReleaseFast, and ReleaseSmall compilation attempts were stopped at the unchanged 3,840 MB ceiling (observed 3,908 / 3,883 / 3,873 MB). The LSP regression control remains checked in, but is not represented as a passing suite. The checker command reused its unchanged cached artifact and is likewise not represented as a fresh full run.

#846 remains open for its other explicit-root/import-closure/dependency-depth and imported-JS constraint coverage.

8 days ago

Landed f60a1fa63 on main: fix(ts): type named CommonJS imports (#846).

This completes the imported-JS read/write slice: admitted checked CommonJS named exports now carry their checked source-owned schema into importing TypeScript files. For exports.value = 1, Home now reports both the inferred-read error and the immutable-import write error, matching the pinned controls exactly:

  • main.ts(2,7): TS2322, number is not assignable to string
  • main.ts(3,1): TS2632, cannot assign to an import

Verification (all under the 3,840 MB supervisor, sequentially):

  • ts_checker: 4547/4547
  • ts_program: 250/250, including serial and two-worker dependency ordering
  • tsc_main: 36/36
  • ts_cli: 74/74
  • stripped ReleaseSafe home-tsc build: pass
  • production differential: Home, TypeScript 6.0.3, and native TypeScript 7.0.2 emitted the same two diagnostics at the same positions

The issue stays open for its remaining explicit-root/import-closure and dependency-depth work.

8 days ago

Landed 0ad247c0f on main: fix(ts): type CommonJS module object imports (#846).

Admitted checked JavaScript CommonJS owners now project their named exports through every module-object consumer covered by the upstream controls:

  • synthetic default imports expose mutable named properties;
  • import = require(...) exposes mutable named properties;
  • namespace imports expose readonly named properties;
  • checked-JS destructured require(...) receives the owner type;
  • named imports retain their ordinary immutable binding behavior.

The source-owned schema preserves the fresh assignment constraint while imported reads regularize it. For exports.value = 1, reads therefore report number, mutable writes of 2 report 2 versus 1, and namespace writes report TS2540. This is modeled in the checker rather than by suppressing diagnostics or special-casing test text.

Production differential against repository-pinned TypeScript 6.0.3 and native TypeScript 7.0.2: all three compilers emitted the same nine diagnostics with identical files, positions, codes, and messages across default, destructured-require, import-equals, named, and namespace consumers. Home's nonzero exit matches native TS7; TS6 retains its own nonzero exit-code convention.

Sequential verification under the fixed 3,840 MB supervisor:

  • focused checker control: pass, 1,786 MB peak;
  • full ts_program: pass, 2,212 MB peak, including serial and two-worker execution plus exact message assertions;
  • full ts_checker: 3/3 build steps succeeded, 2,239 MB peak;
  • tsc_main: 36/36, 2,163 MB peak;
  • ts_cli: 74/74, 1,911 MB peak;
  • stripped ReleaseSafe home-tsc: 3/3 build steps succeeded, 2,711 MB peak;
  • final production differential rerun used that freshly built binary.

This issue remains open for its broader explicit-root/import-closure, dependency-depth, and remaining imported-JS acceptance scope.

8 days ago

Landed two direct-to-main commits under glennmichael123 <gtorregosa@gmail.com>, without coauthors:

  • 307426ffa — feat(ts): parse maxNodeModuleJsDepth (#846)
  • 3f967d367 — fix(ts): honor JavaScript dependency depth (#846)

This closes the dependency-depth slice listed in the issue acceptance notes. maxNodeModuleJsDepth now flows from typed tsconfig parsing and CLI overrides through driver options and build-info serialization into Program admission. JavaScript under node_modules defaults to depth 0, configured depths are enforced across the import closure, and a later shallower route lowers the recorded depth and reprocesses descendants. Both absolute paths and Home's normalized project-relative node_modules/... paths are classified. Bare-package CommonJS named imports now consume the admitted checked-JS owner schema instead of falling back to any.

Sequential verification under the unchanged 3,840 MB supervisor:

  • tsconfig: pass
  • ts_driver: pass
  • ts_cli: pass
  • tsc_main: 38/38, 2,153 MB peak
  • full ts_program: pass, 2,149 MB peak
  • full ts_checker: pass, 2,188 MB peak
  • fresh Debug standalone home-tsc: pass, 2,152 MB peak
  • formatting and git diff --check: pass

Production differential used the same package fixture with repository-pinned TypeScript 6.0.3 and native TypeScript 7.0.2, on both relative and absolute project paths:

  • depth 0: all emit TS7016 for the unadmitted package JavaScript;
  • depths 1 and 2: all admit pkg/index.js and emit TS2322 for assigning its inferred number export to string.

Home retains its existing TS7016 remediation hint, so this checkpoint claims diagnostic-code/position/semantic behavior parity, not byte-for-byte rendered output. TS6 also retains its different nonzero exit-code convention. Earlier ReleaseSafe attempts were stopped by the fixed memory guard around 3.89 GB; they are not represented as passing. The issue remains open for its other explicit-root/import-closure and admission acceptance items.

8 days ago

Landed a790000db directly on main: fix(ts): honor explicit package include roots (#846).

This closes the explicit-root/import-closure acceptance slice exposed by TypeScript's upstream NodeModulesSearch/maxDepthExceeded project. The root cause was file discovery, not CommonJS type projection: Home unconditionally skipped node_modules, so an explicitly included m1/index.js was misclassified as a depth-1 dependency and its m2 import was elided at maxNodeModuleJsDepth: 1.

The fix ports TypeScript's include semantics instead of special-casing the fixture:

  • wildcard components implicitly exclude dot directories plus node_modules, bower_components, and jspm_packages;
  • literal include components can explicitly opt those directories back in;
  • final literal directory specs receive TypeScript's implicit **/* behavior;
  • directory traversal is pruned using the same matcher;
  • explicit package roots retain depth 0, so one configured dependency level is admitted while nested depth 2 remains elided;
  • --listFiles reports the full admitted Program, and --explainFiles reports the actual matching include pattern plus an independent import reason when both apply.

Exact upstream differential after a fresh Debug build:

  • Home, TypeScript 6.0.3, and native TypeScript 7.0.2 all report TS2322 at root.ts(3,1) and TS2540 at root.ts(4,4) with the same messages;
  • Home lists m1/index.js and m1/relative.js as roots matched by node_modules/**/*;
  • Home admits m2/entry.js through m1 and does not admit nested m3.

Sequential verification under the 3,840 MB guard on the rebased origin/main tip:

  • tsconfig: pass, 358 MB peak;
  • ts_program: pass, 2,346 MB peak;
  • tsc_main: pass, 2,185 MB peak;
  • fresh Debug home-tsc: pass, 2,056 MB peak;
  • production upstream fixture: pass against both pinned controls;
  • formatting and diff hygiene: pass.

The issue remains open for any broader admitted-JavaScript diagnostics still not covered by these now-closed CommonJS, dependency-depth, and explicit-root slices.

8 days ago

Landed fcefb7db1 directly on main: fix(ts): prefer sibling declarations over JavaScript (#846).

This closes another admitted-JavaScript resolution slice exposed by TypeScript's upstream NodeModulesSearch/maxDepthIncreased project. Home's declaration-preferred node_modules pass was still accepting a package's main: "entry.js" target, so the admitted JavaScript implementation displaced the sibling @types/m4/entry.d.ts declaration and produced a spurious TS2339 for m4.foo.

The resolver now applies package-json implementation targets only within the active extension family, matching upstream's loadFileNameFromPackageJSONField split: TypeScript/declaration substitution runs first, sibling @types can win, and JavaScript remains available in the fallback pass. The selected @types result retains its package ID. Program provenance now upgrades a weaker automatic visible-@types reason to the concrete source import, preserving importer/span/package identity.

Exact production differential against repository-pinned TypeScript 6.0.3 and native TypeScript 7.0.2:

  • all three emit only TS2322 at root.ts(7,1);
  • all resolve m4 to node_modules/@types/m4/entry.d.ts;
  • all exclude node_modules/m4/entry.js from the admitted file list;
  • all explain the declaration as imported via "m4" with package ID m4/entry.d.ts@1.0.0.

Sequential verification under the fixed 3,840 MB supervisor:

  • ts_resolver: 123/123;
  • ts_program: pass, 2,143 MB guarded peak;
  • tsc_main: pass, 2,194 MB guarded peak;
  • full ts_checker: pass, 2,148 MB guarded peak;
  • fresh Debug home-tsc: pass, 2,203 MB guarded peak;
  • upstream production fixture against TS6/TS7: exact diagnostic and admission match;
  • formatting and diff hygiene: pass.

#846 remains open for any broader admitted-JavaScript diagnostic and resolution cases not yet represented by these upstream controls.

8 days ago

Landed 3726b9cbe (fix(ts): exclude configured output roots (#846)) directly on main.

Root cause: Home's normal project discovery treated only an explicit exclude list as an exclusion source, while build/dry/clean paths separately and unconditionally appended output/package patterns. That diverged from TypeScript's getConfigFileSpecs: an explicit exclude (including []) is authoritative; only when the property is absent do outDir and declarationDir become default excludes. The filesystem matcher also failed to normalize ./OutDir and compared absolute output roots against relative walk paths.

The port now:

  • centralizes the upstream exclude-spec rule on TsConfig;
  • uses it consistently in normal compile, build graph admission, build, dry-build, and clean discovery;
  • preserves TypeScript's literal package-root opt-in instead of unconditionally suppressing node_modules;
  • normalizes config-relative and absolute exclusion roots;
  • shares the same semantics with the virtual conformance harness;
  • reports both implicit output roots in TS18003.

Verification (all heavy commands ran sequentially under the 3,840 MB supervisor):

  • zig build test -Dfilter=tsconfig — pass (241 MB peak)
  • zig build test -Dfilter=tsc_main — pass (2,233 MB peak)
  • targeted ts_conformance regression — pass (291 MB peak)
  • zig build test -Dfilter=ts_checker — pass
  • zig build home-tsc -Doptimize=Debug — pass (2,141 MB peak)
  • eight upstream projectOption fixtures: Home, TypeScript 6.0.3, and native TypeScript 7.0.2 all select only a.ts (24/24 engine/fixture comparisons)
  • explicit-exclude override control: all three select a.ts and OutDir/a.d.ts
  • absolute-outDir control: all three select only a.ts
  • declaration-only output control: Home's TS18003 text is byte-identical to both controls
  • prior NodeModulesSearch/maxDepthExceeded regression: roots and diagnostics remain aligned with both controls

The broad conformance package run exceeded its 300-second wall bound, so I am not claiming it as a pass; the exact new conformance test passed under the dedicated build filter.

8 days ago

The remaining upstream NodeModulesSearch/importHigher case is now admitted unchanged after 8b96e97.

Home previously validated the raw tsconfig before applying CLI module overrides, so the fixture stopped at stale TS5108. With --module node16 --moduleResolution node16, Home now follows native TS7 through import-closure loading and reports the expected root.ts(6,1) TS2322 from the nested JavaScript dependency type. The no-override and one-sided-override controls still produce TS5108 and TS5110 respectively.

8 days ago

Progress landed on main in 363ceb04b: fix(ts): load trivia-only project configs (#846).

This three-file slice makes empty, whitespace-only, and comment-only tsconfig.json sources valid empty configs, while preserving rejection of unterminated block comments. The CLI and LSP now distinguish a successfully read zero-byte config from a missing/unreadable config and retain/free the source correctly.

Differential verification used the unchanged upstream TypeScript fixtures with --listFilesOnly (no emit):

  • SameNameDTsNotSpecified: TS 6.0.3, native TS 7.0.2, and Home select only a.d.ts.
  • SameNameFilesNotSpecified: all three select only a.ts.

Verification:

  • zig build test -Dfilter=tsconfig passed (371 MB peak).
  • zig build test -Dfilter=tsc_main passed (2,223 MB peak).
  • Fresh stripped ReleaseSafe home-tsc build passed (2,722 MB peak).
  • Zod 4.5.2 diagnostic oracle remained byte-for-byte unchanged.
  • Upstream fixture checkout remained clean.

Keeping this issue open for the remaining admitted-JavaScript diagnostic coverage.

8 days ago

Landed directly on main in 5b26803f9: fix(ts): honor project extension priority (#846).

Root cause: the virtual conformance harness already modeled TypeScript wildcard extension priority, but the real CLI filesystem walker appended every supported match. With allowJs, an implicit project containing a.ts and a.js therefore admitted both instead of retaining the higher-priority TypeScript source.

This three-file port centralizes TypeScript/native tsgo extension-group comparison in tsconfig and uses it in both real and virtual project discovery. It is order-independent, respects case-sensitive hosts, handles .ts/.tsx/.d.ts/JS, .cts/.d.cts/.cjs, and .mts/.d.mts/.mjs, and preserves TypeScript’s deliberate legacy .d.ts + .js/.jsx coexistence rule.

Exact unchanged upstream differential for jsFileCompilation/SameNameFilesNotSpecifiedWithAllowJs:

  • TypeScript 6.0.3: exit 0, only a.ts.
  • Native TypeScript 7.0.2: exit 0, only a.ts.
  • Home: exit 0, only a.ts.

A full twelve-project jsFileCompilation admission sweep changed only that intended Home set. The separate pre-existing TS5055 overwrite diagnostic gap and explicit-file/config-diagnostic aggregation gap remain visible and are not claimed fixed here.

Guarded verification:

  • tsconfig suite passed (1,126 MB peak, cold cache).
  • full tsc_main suite passed (2,298 MB peak).
  • targeted existing conformance wildcard-priority oracle passed (297 MB peak).
  • fresh stripped ReleaseSafe home-tsc build passed (2,762 MB peak).
  • Zod 4.5.2 diagnostic oracle stayed byte-for-byte unchanged.
  • formatting, diff hygiene, and the unchanged upstream fixture checkout passed/clean.

#846 remains open for those broader diagnostic/admission surfaces.

8 days ago

Landed directly on main in ad97f7b93: fix(ts): validate outputs before list-only return (#846).

Root cause: Home already had the real TS5055/TS5056 output-collision verifier, but invoked it after the --listFilesOnly early return. The fix moves the single verifier ahead of list-only reporting and ordinary error summaries, then reuses its blocked-output set during emit. No parallel/synthetic diagnostic path was added.

Exact unchanged upstream differential for jsFileCompilation/SameNameDTsNotSpecifiedWithAllowJs:

  • TypeScript 6.0.3, native TypeScript 7.0.2, and Home all exit 1;
  • all report TS5055 on a.js with the same message;
  • all retain both a.d.ts and a.js in the admitted list.

Required negative control: with --noEmit --listFilesOnly, all three exit 0, retain both files, and report no TS5055.

Guarded verification:

  • end-to-end test-tsc-streams passed (314 MB peak), including exact stdout/stderr and exit status from a real allowJs project;
  • full tsc_main suite passed (2,204 MB peak);
  • fresh stripped ReleaseSafe home-tsc build passed (2,741 MB peak);
  • Zod 4.5.2 diagnostics stayed byte-for-byte unchanged;
  • formatting/diff checks passed and the upstream TypeScript fixture checkout is clean.

An exploratory ordinary-emit probe generated a.d.js; that ignored artifact was moved out and the checkout was revalidated clean. It is not used as acceptance evidence. The initial integration fixture also exposed that direct Home --allowJs parsing is still absent; this commit’s authoritative control uses tsconfig exactly like the upstream project. #846 remains open for that and the remaining diagnostic aggregation surfaces.

8 days ago

Landed 5196d20fe (fix(ts): parse JavaScript checking CLI options (#846)) directly on main.

This adds tri-state CLI parsing for --allowJs and --checkJs, applies explicit CLI values consistently to parsed config and compile options, makes command-line-only JavaScript admission honor those flags, and adds end-to-end stream fixtures for both direct admission and checked-JS diagnostics. --checkJs implies JavaScript admission only when allowJs is otherwise unspecified, preserving explicit allowJs: false.

Verified on current origin/main with the pinned Pantry Zig 0.17.0-dev.2163+89ff10d56:

  • guarded zig build test -Dfilter=ts_cli: pass, 2,024 MB peak
  • guarded zig build test-tsc-streams: pass, 2,165 MB peak
  • guarded zig build test -Dfilter=tsc_main: pass, 2,102 MB peak
  • guarded stripped ReleaseSafe home-tsc build: pass, 2,867 MB peak
  • direct ReleaseSafe CLI: --allowJs admits/lists collision/a.js (exit 0); --checkJs reports TS2322 at 2:7 (exit 1); --allowJs false retains TS6504 (exit 1)
  • TypeScript 6.0.3 and native TypeScript 7.0.2 controls confirm the same admission and TS2322 position/message semantics.

The issue remains open for the broader admitted-JavaScript/import-diagnostic surface.

8 days ago

Pushed 8e0e7ae directly to main: fix(ts): aggregate root option diagnostics (#846).

This batch makes root-file extension validation participate in the normal TypeScript diagnostic pipeline instead of exiting early. It now:

  • aggregates TS6504/TS6054 root diagnostics with tsconfig option diagnostics in TypeScript order;
  • renders Root file specified for compilation and Part of files list in tsconfig.json provenance;
  • removes rejected roots before Program construction while preserving admitted-root order;
  • suppresses emit when root/config option diagnostics are present;
  • returns exit 2 for rejected command-line roots and exit 1 for rejected project roots.

Guarded verification (HOME_RUN_MAX_MB=3840):

  • zig build test -Dfilter=tsc_main — pass, 2,200 MB peak;
  • zig build test-tsc-streams — pass, 2,167 MB peak;
  • zig build test -Dfilter=ts_cli — pass, 1,949 MB peak;
  • stripped ReleaseSafe home-tsc build — pass, 2,702 MB peak.

Differential evidence:

  • unchanged TypeScript DifferentNamesSpecified project now reports TS6504 provenance before TS5102, excludes b.js, keeps a.ts in listFilesOnly, and exits 1 like native TypeScript 7.0.2;
  • direct b.js with ignoreConfig exactly matches TypeScript 6.0.3 diagnostic text and exits 2;
  • running the project without noEmit leaves bundle.js absent.

Scope note: Home still uses its established relative-path/list style rather than TypeScript native absolute paths and bundled-lib listing; this commit fixes diagnostic sequencing, root admission, emission, and exit classification without claiming byte-for-byte list output parity.

8 days ago

Landed the next admitted-JavaScript diagnostic slice in 565fcb84a (fix(ts): preserve checked JavaScript export types (#846)).

What changed:

  • declaration-adjacent primitive @type facts on exported JS var/let/const now survive the Program boundary;
  • direct constructor assignments shaped as this.field = parameter retain a matching primitive @param type in both the exact class schema and the legacy class facts;
  • transfer is restricted to .js/.jsx/.mjs/.cjs, requires an actual constructor parameter, and never replaces an explicit class member.

Verification on current origin/main:

  • zig build test -Dfilter=ts_program -j1: 269/269;
  • zig build test -Dfilter=ts_checker -j1: 4570/4570;
  • fresh safe home-tsc build succeeded;
  • end-to-end JS-owner/TS-importer fixture now emits TS2322 x3 + TS2632 x1 and no false TS2339, matching the installed TypeScript control on diagnostic codes.

This does not close the whole issue: Home still renders the existing inferred const read as the literal "home" where the TypeScript 5.7 control widens it to string, and non-primitive JSDoc type expressions still need exact source-owned transfer.

8 days ago

Landed the next three-file admitted-JavaScript parity slice in 70a14e6bd (fix(ts): widen checked JavaScript const exports (#846)).

Checked JS owners now widen primitive const initializers at the Program boundary ("text" → string, numeric literal → number, boolean literal → boolean; bigint/undefined use their primitive forms), matching TypeScript JavaScript inference. The widening is path-gated to .js/.jsx/.mjs/.cjs; a new negative regression proves a .ts owner still exports the fresh literal type. Declaration JSDoc continues to take precedence.

Verification on rebased current main:

  • unfiltered ts_program: 270/270;
  • fresh safe stripped home-tsc build succeeded;
  • the real JS-owner/TS-importer fixture now matches installed TypeScript 5.7 on all four messages (TS2322 x3 + TS2632 x1), including Type 'string' is not assignable to type 'number'.;
  • zig fmt --check, git diff --check, and Pickier-relevant source checks are clean.

Remaining #846 scope includes non-primitive JSDoc expression transfer and other admitted-JS declaration shapes; this commit does not claim those complete.

8 days ago

Landed exact primitive function-signature transfer in 0e6a18df3 (fix(ts): retain checked JavaScript function types (#846)).

For admitted JS owners, a declaration-adjacent JSDoc function signature now crosses the Program boundary only when every actual non-rest parameter has exactly one primitive @param tag and there is exactly one primitive @returns tag. Optional/default parameter state is retained. Generic (@template), rest, duplicate, complex, ambiguous, and partial signatures stay on the existing path; no type is guessed and no missing annotation is replaced with any.

Verification:

  • unfiltered ts_program: 271/271, including sequential + parallel imports and a partial-signature non-regression;
  • fresh safe stripped home-tsc build succeeded;
  • formerly silent real fixture now exactly matches TypeScript: TS2345 string→number argument and TS2322 string→number return assignment;
  • formatting/diff checks clean.

Remaining #846 scope includes complex JSDoc type expressions, generic JSDoc signatures, rest parameters, and additional admitted-JS declaration/member shapes.

8 days ago

Pushed c20152cff (fix(ts): retain checked JavaScript array types (#846)) directly to main.

This batch retains primitive array JSDoc types from admitted JavaScript sources across real import boundaries for:

  • declaration @type tags;
  • function parameters and results;
  • constructor parameters assigned to instance fields;
  • nested T[], Array<T>, Array.<T>, and ReadonlyArray<T> forms.

Unsupported leaves such as unions still take the existing conservative path; this change does not guess or flatten them. Generic signatures, rest parameters, object expressions, unions/intersections, and other remaining admitted-JavaScript shapes keep this issue open.

Verification on the pushed five-file batch:

  • Program: 276/276 on pinned Zig and 276/276 on Zig 0.18.0-dev.146+35accc06e;
  • checker: 4589/4589;
  • driver: 207/207;
  • stream integration build: 10/10 steps;
  • stripped ReleaseSafe home-tsc: 3/3 build steps;
  • differential fixture: Home and TypeScript report the same four primary diagnostics at the same locations (TS2322, TS2322, TS4104, TS2322), and the former false TS2339 is absent.

Home currently emits its existing extra nested index-signature detail for two array mismatches, so this is primary-diagnostic parity rather than a byte-for-byte output claim.

8 days ago

Pushed 4dc6f9fe7 (fix(ts): retain checked JavaScript rest types (#846)) directly to main.

This three-file slice carries exact JSDoc rest signatures from admitted JavaScript owners across the Program boundary:

  • @param {...number} becomes the source rest parameter type number[];
  • explicit number[], Array<T>, and ReadonlyArray<T> forms retain their array shape;
  • nested ...number[] retains the extra array level;
  • scalar, optional/defaulted, partial, duplicate, generic, or otherwise unsupported forms stay on the conservative path rather than being guessed.

The existing source-owned schema now records the rest flag, so checker arity and call matching use the ordinary rest-signature machinery. Non-rest functions are not made variadic by a JSDoc ellipsis.

Verification on rebased current main under the fixed 3,840 MB supervisor:

  • unfiltered ts_program: pass under pinned Zig and Zig 0.18.0-dev.146 (2,317 / 2,251 MB peaks);
  • unfiltered ts_checker: pass (2,299 MB peak);
  • stripped ReleaseSafe home-tsc: pass (2,561 MB peak);
  • real JS-owner/TS-consumer fixture matches TypeScript on the same four diagnostics and locations: TS2345 twice and TS2322 twice;
  • both Zig formatters and git diff --check: pass.

#846 remains open for object/union/intersection JSDoc expressions, generic signatures, and additional admitted-JavaScript declaration/member shapes.

8 days ago

Progress: 350507ea7 is on origin/main. Source-owned JSDoc union expressions now cross admitted JavaScript import boundaries for function parameters/returns, nested Array and ReadonlyArray, rest parameters, and constructor-assigned fields. Unsupported leaves still fail conservatively rather than becoming any. A new Program regression runs sequential and parallel; the rebuilt CLI matches the TypeScript 5.7.3 reference on all six observed diagnostic codes, positions, messages, and count. Verification: Program 323/323 on Zig 0.17 and 0.18; checker 4,651/4,651 on Zig 0.18; standalone CLI build, both Zig format checks, and git diff check pass. This is a scoped improvement, not completion of #846: broader admission, source revision/LSP behavior, negative package/config cases, and inferred JavaScript read/write constraints remain open.

8 days ago

Pushed 71c406668 directly to origin/main as glennmichael123 (no coauthors): admitted JavaScript imports now retain prefix/postfix nullable JSDoc types, including the distinct meanings of ?Array<number> and Array<?number>/ReadonlyArray<?number>. TypeScript-compatible diagnostics reduce a sole non-nullish union target only where appropriate, and nullable union assignments no longer duplicate the nested null explanation.

Verification: Program 326/326 on Zig 0.18 and pinned Zig 0.17; checker 4653/4653; standalone Home CLI and installed TypeScript 5.7.3 match all 14 locations, codes, headlines, and nested explanations in a cross-file JS-to-TS fixture. Each heavy run used the 3,840 MB guard; peak reported tree footprint was below 2.4 GB. Four-file conventional commit. The broader admission, source-revision, and imported-JS acceptance items in this issue remain open.

8 days ago

Pushed 755867ae2 directly to origin/main as glennmichael123, no coauthors (four files). Optional call diagnostics now retain the declared T | undefined target until source-aware rendering: scalar wrong-type arguments still name T, while union, nullish, and unknown arguments name the full target. Nested union explanations use the incompatible member's appropriate target. The built-in Array.sort comparator records its declaration parameter names (a, b) so its nested mismatch no longer says x0.

Verification: full checker 4654/4654; Program 327/327 on both Zig 0.18 and pinned Zig 0.17; standalone Home CLI and installed TypeScript 5.7.3 have byte-identical diagnostic text (19 lines, 13 errors) on the committed fixture, including nested explanations and the comparator. Both CLIs fail as expected, though their numeric error exits differ (Home 1, TypeScript 2); no numeric-exit parity is claimed. Targeted Pickier, both Zig format checks, and staged diff check pass. Heavy runs were serial under the 3,840 MB ceiling, with observed peak tree footprint below 2.5 GB. The broader imported-JS admission/revision acceptance in #846 remains open.

8 days ago

Progress on typed imported JS read/write constraints: 9ed10f32f transfers closed inferred object/array initializer shapes from admitted JavaScript (and TypeScript) owners into imported value schemas. Dynamic/computed/unsupported members conservatively keep the whole export projection-only; this is not blanket JS typing. On a local allowJs+checkJs+strict differential, Home now matches tsc exactly for three invalid writes to a nested imported object and a missing-property read (TS2322 x3, TS2339, including messages/locations). Verification: full ts_program 403/403, tsc_main 75/75, ts_cli 89/89; ts_driver build was cached, not rerun. The pinned Bun WebKit artifact is unavailable here, so this is not a Bun-parity claim. Keeping #846 open for the remaining admission, revisions/LSP, negative-package/JSX/config, and broader JS-inference cases.

8 days ago

Follow-up red differential on current main 9ed10f3 (installed tsc 5.7.3, local Home CLI, same allowJs/checkJs/strict/noEmit input): owner.js is const value = 1; export const box = { value, nested: { ready: true } };; consumer.ts imports box and assigns box.value = "bad"; box.nested.ready = 123;. tsc emits two TS2322 (string->number at line 2, number->boolean at line 3); Home emits zero. An adjacent TS owner with explicit const narrow: 1 = 1 confirms the required distinction between a non-widening literal property and an inferred alias that widens to number. A binding-aware schema candidate plus Program/CLI regressions is present only as an uncommitted three-file worktree patch. Formatting/diff checks pass, but the candidate is NOT qualified: the guarded Zig builds reached wall limits before producing a new image or running tests (including one single-job 900s attempt under HOME_RUN_MAX_MB=3840). A live 90s diagnostic showed Zig doing LLVM bitcode parsing at ~one CPU core, not waiting on a lock; the supervisor killed its process tree at the deadline. No new commit, diagnostic admission or Bun parity is claimed. #846 stays open.

8 days ago

The previously unqualified shorthand candidate is now verified and landed on origin/main as b8b76a991, authored/committed glennmichael123 with no coauthors (four changed files). Source-owned schema collection resolves local shorthand and identifier-valued object properties through their binding identities, widens inferred primitive aliases, preserves explicit TS and numeric/boolean JSDoc literal annotations, and withholds the whole export for cycles or unrepresentable members rather than publishing a partial shape. On rebuilt ordinary home-tsc, three unchanged local tsc 5.7.3 differential fixtures now match exactly by diagnostic code/message/location: checked-JS shorthand two TS2322; TS annotated-literal/inferred-alias four errors (three TS2322 plus TS2339); checked-JS JSDoc literal shorthand two TS2322. Guarded build succeeded at 2,243 MB conservative tree footprint; unfiltered Program 408/408, tsc_main 77/77, ts_cli 89/89, Zig formatting and diff checks passed under the 3,840 MB ceiling. The driver target was cached and receives no fresh-run credit. Earlier timed-out builds and the first JSDoc red result remain recorded; no Bun WebKit parity or broad JS-inference/performance claim. Keeping #846 open for the remaining admission, LSP/revision, negative-package/JSX/config and broader inference work.

8 days ago

New red differential on current main b8b76a9 (TypeScript 5.7.3 vs Home): an imported object shorthand property sourced from an annotated const with a string-literal union retains the declared union in Home, while TypeScript narrows the property to the initialized member. The new focused Program regression expects two TS2322 diagnostics for the direct and nested property writes; Home currently reports zero.

The root architectural constraint is verified: Program collects cross-file declaration schemas before checking the owner. A probe of the schema builder showed the owner has checked_types_ready=false at that point, so transferring its checked HIR TypeId there cannot fix the issue. A syntax-derived const-union candidate is in a three-file uncommitted working-tree patch, but its focused regression still fails. No fix, commit, push, or broad inference claim is made.

The guarded compiler run was stopped once by sustained host memory pressure (process tree about 2.1 GB under the 3,840 MB ceiling); later focused runs completed under the guard and exposed the failing assertion. Automated safety review rejected another repeated compiler probe after a memory-probe failure, so verification is paused rather than bypassing that safeguard. #846 remains open.

8 days ago

Guarded 0.18.0-dev Program suite on 2026-10-23: 409/411 tests passed, with 2 new tests failing for annotated const-union shorthand (schema unsupported; consumer produced 0 TS2322 instead of 2). Peak tree footprint 2,505 MB under the 3,840 MB guard, host low-water 27%. The four-file candidate is still uncommitted/unpushed; no passing fix is claimed. I am tracing the schema and flow-transfer path before rerunning.

8 days ago

Shipped f859d64b8 to origin/main. This closes the annotated const-union shorthand transfer subgap reported above: admitted JS JSDoc string-literal unions are now parsed and transferred, and imported direct/nested shorthand properties retain the source's narrowed literal. TypeScript 5.7.3 oracle reports TS2322 for the corresponding writes. Guarded verification on the final patch: Program 412/412, tsc_main 78/78, checker 4,683/4,683; all runs stayed below the 3,840 MB tree-footprint ceiling. The five-file commit is authored and committed by glennmichael123 without coauthors. Keeping #846 open for the broader admission and imported-JS acceptance criteria in its body.

8 days ago

Incremental admitted-JS read/write progress: f647cd1 (pushed to origin/main). TypeScript 5.7.3 reports two TS2322 diagnostics when an exported shorthand property captures a const annotated as 'ready' | 7 and a consumer writes 7 to the direct and nested properties. The same baseline holds for a JSDoc JavaScript owner; Home previously reported none. The schema now preserves the initialized string/number literal when the annotation contains it and has no broad primitive of that same domain. Controls confirm that 'ready' | number and 7 | string narrow, while 'ready' | string stays broad. Added TS and admitted-JS schema tests, serial/parallel Program cross-file regressions, and the CLI import-closure regression. Guarded Program: 415/415; CLI: 79/79; checker target cached green. Zig formatting and git diff checks pass. This fixes only the verified mixed-domain shorthand gap; broader admission and imported-JS acceptance in this issue remains open.

8 days ago

Pushed 2049105 to origin/main as glennmichael123 (no coauthors): source-owned Program transfer now retains a direct JSDoc @type on a checked-JavaScript constructor assignment such as this.name = "ready". The real .js owner/.ts consumer matches installed TypeScript 5.7.3 exactly: TS2322 at consumer (3,1) and (4,7), with matching messages. Added Program serial/parallel and CLI import-closure regressions. Final guarded Program 416/416 and CLI 81/81 passed; fresh home-tsc build passed. Peak tree footprints were 2,257 MB, 2,270 MB and 2,101 MB under the 3,840 MB guard. The generic JSDoc constructor-field case remains divergent (TypeScript TS2322 pair; Home TS2339 pair), now tracked independently in #945. #846 remains open for that and the broader admission/imported-JS acceptance in its body.

8 days ago

Further admitted-JS transfer progress: 2d58f3f (#945) is on origin/main. Imported classes with unconstrained JSDoc @template T now retain constructor parameter/field identities; single- and two-parameter real-file controls match TypeScript 5.7.3 diagnostics exactly. Guarded Program 418/418 and CLI 82/82 passed. This is not complete #846 acceptance: constrained JSDoc templates still fail across the module boundary (tracked with a fresh differential in #945), alongside the broader admission/source-revision and imported-JS criteria already listed here. No general parity claim.

4 days ago

Admitted-JS CommonJS checkpoint on origin/main: #965 implementation and exact controls landed through ee22b4f60. TypeScript 5.7.3 differential audit is now 118/118 exact CLI streams (113 configs + five --checkJs false overrides). The guarded full checker passed 4,713/4,713; full Program and test-tsc-streams passed. Inferred function/object/class expandos and declared closed-type negatives are covered. The new Program source edit/revert test passes in both checkJs modes. LSP regression source is committed but its target has not executed: two guarded compile attempts exceeded the 3,840 MB tree cap by 5 and 29 MB, so no cap increase or further retry was made. #965 stays open for that verification; #966 and #967 remain real CommonJS semantics gaps. #846 remains open for broader admitted-JS parity.

4 days ago

Additional admitted-JS negative baselines for the still-open #966 constructor gap are pushed to origin/main in 35194c876, c83db1199, and 4868b8db3. TypeScript 5.7.3 accepts each isolated whole, named, and JSDoc-tagged CommonJS constructor; Home still emits TS7009 plus owner TS2683/TS2339. These are intentionally outside the 118/118 passing config audit and require actual instance/construct-signature semantics. #846 remains open.

4 days ago

2026-10-29 admitted-JavaScript checkpoint: repeated CommonJS whole-export union semantics from #967 landed on origin/main in 55bc87775, with two exact checked/unchecked oracle streams added in c797c9e51. TypeScript 5.7.3 and Home now match 120/120 audited CLI stdout/stderr/exit streams. Full guarded Program and checker suite commands exited 0. #967 remains open for the original duplicate-identifier related-info stream and revision/LSP controls; #966 constructor contextual-this parity also remains open. The broader #846 acceptance is not complete. Related #66.

4 days ago

Additional #967 checkpoint: ae4efd3f4 brings the original repeated CommonJS fixture's diagnostics into exact TypeScript 5.7.3 agreement and verifies a four-state owner revision. The admitted-JavaScript auditor now matches 122/122 exact CLI streams (stdout, stderr, exit); full guarded Program and checker suites exited 0. #967 remains open for LSP invalidation and overlapping named-write/whole-branch semantics, while #966 and wider #846 work remain open. All work is pushed directly to origin/main as glenn, with no coauthors. Related #66.

4 days ago

#967 overlap checkpoint: 7aff9c03d and 20ac00a9c are pushed to origin/main as glenn without coauthors. Named CommonJS writes now survive repeated whole-object branch unions, and all three new assignment-order controls produce TypeScript's six diagnostic codes and positions. The existing exact admitted-JavaScript audit remains 122/122 streams. The new overlap control stays outside that audit because diagnostic type prose still differs (1 | typeof Baz versus union type / {}); source-owned class display and LSP invalidation remain open in #967. The guarded checker command exited 0, peak 2,296 MB, with an anomalous failed command output line noted in #967. Related #66.

4 days ago

#967 overlap parity has advanced on origin/main: d0418fa4f carries inferred class-value identity through the checked Program schema, validates union constructor calls, and renders the missing union constituent. The three named-write/whole-export assignment orders now match TypeScript 5.7.3 exactly and are part of the admitted-JavaScript auditor in both checkJs modes: 124/124 exact streams. A guarded home-tsc build succeeded; the last strengthened Zig diagnostic assertions still need a rerun after the host-memory guard refused admission at 28% free. See #967 for test details and remaining LSP invalidation work. This is pushed directly to origin/main as glenn without coauthors. Related #66.

4 days ago

Completed the repeated CommonJS whole-export branch in #967 and closed it with its verification record. Direct origin/main commits: 7aff9c03d, 20ac00a9c, d0418fa4f, 983bfdd12, all authored by Glenn without coauthors.

The independent TypeScript 5.7.3 oracle audit now matches 124/124 exact CLI streams across the admitted-JavaScript fixture configurations, including the #967 overlap owner/importer in checkJs on/off modes. The guarded Program suite passed. A dedicated guarded LSP test passed for owner revisions repeated -> class-only -> Quack-only -> repeated, with TS2351 -> clean -> TS2339 -> TS2351 diagnostics in both modes. Focused checker tests passed. The guarded full checker build step exited 0 but printed an internal failed command: .../test --listen=- line; this is explicitly unresolved rather than counted as a clean suite. The host is at 29% free memory, so further Zig runs are deferred until headroom recovers.

#846 remains open for other admitted-JavaScript forms, notably #966's CommonJS function constructor/contextual this, plus broader negative and editor parity. #66 remains the umbrella Bun parity issue.

4 days ago

#965 is now closed after its previously blocked dedicated LSP edit/revert test passed under the approved 3,840 MB guard (peak 1,968 MB). The same batch's #967 union work remains closed. #966 is the next open admitted-JavaScript gap: a fresh guarded TypeScript 5.7.3 differential across four real-file CommonJS constructor fixtures in both checkJs modes found 8/8 tsc clean vs 8/8 Home exit 2. Exact diagnostics and the underlying checker/Program projection path are recorded in #966. This issue stays open; the #966 implementation is not yet landed.

4 days ago

#966 constructor parity advanced in c150e32bb on origin/main: named, nested, whole, and JSDoc-tagged CommonJS function constructors now match TypeScript 5.7.3 for all eight checkJs/fixture combinations. Focused schema and Program tests passed. The #846 exact-stream auditor now covers these cases and reports 132/132 matches. See #966 for the owner/importer diagnosis and remaining broader-suite verification. This is a verified subset of #846; the main admission-parity goal remains open.

4 days ago

#966 advanced on origin/main in 3064adfa3 and 0cfda77e1: chained CommonJS prototype methods now retain their typed signatures on admitted JavaScript constructor imports. The new fixture matches TypeScript 5.7.3 in both checkJs modes. The exact CLI oracle audit is 134/134; a guarded home-tsc build and focused Program regression passed. Broader checker/Program and revision tests remain to be run once host memory meets the 40% Zig admission threshold. See #966 for the diagnosis and evidence; #846 remains open.

3 days ago

#966 virtual CommonJS constructor parity advanced on origin/main in e0e5e0983: the checked constructor's construct signature now survives virtual exports.Ctor projection, and the forced chained-prototype TS7009 branch is removed. Focused checker and Program controls passed; the exact TypeScript 5.7.3 CLI audit remains 134/134 after the guarded home-tsc rebuild.

The full checker run is 4,705 pass / 11 fail / 4,716 total. #968 tracks the remaining checked-JavaScript constructor/prototype diagnostics and exact oracle adjudication. The LSP edit/revert test is still pending because its guarded package build hit the 3,840 MB tree ceiling. The compiler parity goal remains open; see #966 for details.

6 days ago

Explicit-root/dependency-depth parity batch shipped directly to origin/main as a034534, f5c3617, and 5cb7714 (glennmichael123, no coauthors). New on-disk TypeScript 5.7.3 oracle covers four configurations: explicit node_modules JS root at depth 0 and 1, each with allowJs and implicit allowJs via checkJs. Home matches exact exits and diagnostics in all four. At checked depth 0, the checker now diagnoses excluded relative require("./local") as TS7016 and uses the physical resolver package ID to decide whether a bare untyped resolution gets an install-types hint; at depth 1, both dependencies are admitted and the consumer receives their inferred number types. Verification: guarded test-tsc-streams 43/43 build steps, tsc_main 92/92, focused checker 3/3 + 14/14 + 2/2, full checker step cached success after its completed run, targeted Zig formatting and pickier clean. Docs and fixture README record the oracle and scope. This closes this explicit-root graph only; broader import closure, JSX/config negatives, and typed read/write combinations remain open.

6 days ago

Typed imported-JS read/write checkpoint shipped to origin/main as a1ffb93 and 60c0459, both authored by glennmichael123 without coauthors. A checked-JavaScript JSDoc object now has an exact TypeScript 5.7.3 CLI oracle for readonly writes (TS2540), required/optional writes and reads (TS2322), and absent members (TS2339): five diagnostics, exact text/order/positions, exit 2. A separate local optional-property matrix reproduces nine TypeScript diagnostics without import resolution. It identified a general checker presentation gap: Home represented boolean as one type and dropped undefined from a failed optional write diagnostic, whereas TypeScript retains false/true/undefined constituents and the literal source. The shared diagnostic rule now preserves the union; no imported-JS exception or blanket suppression was added. Guarded verification: full ts_checker 4697/4697, tsc_main 92/92, test-tsc-streams 45/45 build steps, targeted Zig fmt and pickier clean. Fixture README and parity docs record the result. This covers the tested object shapes, not every imported-JS schema or remaining #846 negative case.

6 days ago

Transitive admitted-JavaScript depth checkpoint pushed directly to origin/main as 2005379, aeecf05, and 1fac28a (glennmichael123, no coauthors). TypeScript 5.7.3 and Home match exactly on a new m1 -> m2 -> m3 CommonJS chain. With an explicitly listed JS root, maxNodeModuleJsDepth 0/1/2 produces TS7016 at m1/m2 then typed TS2322 in the TS consumer. With only the TS consumer as a root, depths 0/1/2/3 produce TS7016 at the consumer/m1/m2 then the same typed TS2322. The exact messages, positions, absolute resolved paths, order, stderr, and exit 2 for all seven cases are pinned in test-tsc-streams; the guarded suite passes (peak tree footprint 330 MB, host low-water 34%). Focused Zig formatting, pickier, and git diff checks pass. Fixture: packages/ts_cli/testdata/issue846-transitive-depth/README.md; parity docs updated. This verifies the two controlled graphs, not all JS import shapes or the remaining #846 acceptance criteria.

6 days ago

Follow-up to the transitive-depth checkpoint: commit 65456bb is pushed to origin/main as glennmichael123 without coauthors. The same import-only graph now has four additional TypeScript 5.7.3 oracle streams with allowJs true and checkJs false. At depths 0/1/2/3, the expected results are importer TS7016 / no diagnostics / no diagnostics / typed consumer TS2322. Home matches exact stdout, empty stderr, and exits; guarded test-tsc-streams passes (peak tree footprint 331 MB), plus Zig fmt, pickier, and diff checks. This specifically protects JS export inference while owner-side JS diagnostics are disabled; it does not close the broader #846 scope.

6 days ago

Typed imported-JS semantic fix pushed to origin/main as a7160a7 and 2f7ae01, authored glennmichael123 without coauthors. A JSDoc typedef-backed exported object previously lost its union/optional member shape at the import boundary (Home emitted only one wrong TS2322 where TypeScript 5.7.3 emits four). The Program now publishes the checked owner type for a pre-check opaque variable route only when its complete source-owned schema is transferable; no alias-name heuristic or diagnostic suppression. Exact CLI output, nested message lines, order, and exit 2 match with checkJs on and off. Verification under the 3840 MB guard: eight focused serial/parallel/root-order Program variants, full Program 442/442, CLI package 89/89, exact stream suite, Zig fmt and pickier. Fixture and limitations: packages/ts_cli/testdata/issue846-typed-owners/README.md. A separately measured imported-JS class method-argument gap remains under this issue; broader acceptance is not complete.

6 days ago

Progress (2026-10-27): pushed 80c2b31 and db51c20 to main. Imported checked-JS class methods now transfer the owners checked JSDoc parameter signature and inferred result to TypeScript consumers. The class fixture matches TypeScript 5.7.3 exactly: TS2322, TS2345, TS2322, TS2322, with checkJs on or off. Program coverage varies serial/parallel compilation and owner/consumer insertion order; the exact CLI stream suite, full ts_program and ts_cli packages passed. Sequential Zig runs used the 3840 MB guard (peak tree footprint below 2.4 GB). This closes this class-method shape, not general admitted-JS import parity; remaining cases stay open here.

6 days ago

Admitted-JS class revision checkpoint (2026-10-27): pushed 4856f0d, 16e71c0, and 4a64fda directly to main as glennmichael123, without coauthors. TypeScript 5.7.3 and Home agree exactly for the alternate string-typed JS class method: TS2322 then TS2345 at the same positions, with checkJs on/off. Program edit-and-revert tests verify a number-to-string-to-number owner change refreshes an unchanged TypeScript importer. The LSP Service test verifies fresh diagnostic publication after each edit and deduplication while unchanged. Full ts_program, exact ts_lsp package, ts_cli, and test-tsc-streams passed with sequential 3840 MB guarded runs (highest measured tree footprint 2434 MB). The umbrella -Dfilter=ts_lsp selected both ts_lsp and ts_lsp_server and exceeded the guard; the new exact test-ts-lsp step permits safe package verification. This proves the tested class-method revision path only; general admitted-JS import parity and remaining negative/depth/config cases remain open.

6 days ago

Static checked-JS class checkpoint (2026-10-27): pushed e930604 and fbc56a6 directly to main as glennmichael123, no coauthors. TypeScript 5.7.3 oracle exposed two independent Home gaps: JSDoc before a static method was not attached to its parameter (spurious owner TS7006), and the checked static method signature was not published to TypeScript importers (missing TS2345/TS2322). The checker now finds JSDoc before static/async modifiers; Program merges independently transferable checked static methods with existing JSDoc static-field schemas, using source declaration identity and signature consensus rather than names-only fallback. The fixture combines an invalid method argument, result read, and static-field write; TypeScript and Home now match TS2345, TS2322, TS2322 exactly in both checkJs modes. Focused checker and 8 Program mode/order/checkJs variants passed, as did full Program, CLI, and exact stream suites under sequential 3840 MB guard. The full checker command returned 0 but Zig emitted warning-style test stderr, so its summary is not being overstated. Broader admitted-JS parity remains open.

6 days ago

Progress on direct origin/main: 358475f61 fixes TypeScript-parity TS6504/TS6054 path presentation for rejected files roots when -p is relative. Home now prints the absolute root path in the config diagnostic while preserving the Program root identity and positional-CLI spelling. TypeScript 5.7.3 differential confirmed the TS6504 output; zig build test-tsc-streams -j1 and zig build test -Dfilter=tsc_main -j1 passed under the sequential 3,840 MB guard (peaks 2,160 and 2,371 MB; host low-water 26% and 27%). The fixture README and exact stream oracle were updated. This closes only this diagnostic gap; #846 remains open for broader admitted-JS parity.

6 days ago

Direct-main follow-up: 963c5a391 now treats a missing explicit root as TypeScript TS6053 instead of aborting with FileNotFound. The same root-diagnostic pass sorts missing/unsupported/JS-rejected entries by displayed path, independent of files declaration order, while preserving admitted Program roots and positional spelling. Exact TypeScript 5.7.3 CLI controls cover missing config root, mixed TS6053+TS6504 (reverse declaration order), and positional missing root. zig build test-tsc-streams -j1, zig build test -Dfilter=tsc_main -j1, and standalone zig build home-tsc -j1 passed sequentially under the 3,840 MB guard; observed build peaks were 2,194 and 2,289 MB with 26% host low-water. #846 remains open for the wider admitted-JS objective.

6 days ago

Additional direct-main oracle: 753eb9290 pins TypeScript 5.7.3 syntax precedence for a project with both bad-syntax.ts (TS1109) and a missing explicit root (TS6053). TypeScript and Home both emit only TS1109 in that phase; the exact-output test-tsc-streams gate passes under the 3,840 MB guard (315 MB peak tree footprint, 30% host low-water). This protects the phase ordering behind 963c5a391 without claiming full #846 completion.

6 days ago

Direct-main typed-JS progress: df39e93d7 adds a TypeScript 5.7.3 nested JSDoc object oracle; 3c79b62c7 fixes the real owner-side shape bug. The checker previously split { inner: { ...; readonly name: ... }, items: number[] } at every punctuation mark and invented an outer name, causing a spurious TS2741 in the JS owner. The depth-aware top-level member split removes that false positive while preserving four exact importer diagnostics (nested write/read, readonly write, array argument) with checkJs on and off. test-tsc-streams and the focused checker unit passed under the 3,840 MB guard; the broader checker command exited 0 with a Zig runner failed command line in its output, so I am not claiming a clean per-test summary from that output. Peak observed footprint 2,371 MB, host low-water 25%. pickier and Zig formatting passed. Docs updated; #846 remains open for broader JS shapes.

6 days ago

Direct-main typed-JS progress: b7ac1fd50 adds a TypeScript 5.7.3 oracle for a checked-JS object with both known: number and [key: string]: number, repeated inside a nested object, plus mutable concrete property beside a readonly string index. 74baaf886 fixes owner-side lowering to retain named members and index domains together, and prevents a readonly index from overriding concrete mutable dot/literal-key writes. Before: Home emitted TS7053 for the owner writes and two spurious TS2542s; after: exact sorted TypeScript streams match with checkJs on and off (owner TS2322 only when checked, consumer TS2322/TS2542 in both). Guarded test-tsc-streams, two focused checker tests, and the readonly-filtered checker subset passed; peak build footprint 2,313 MB, host low-water 26% on standalone build. pickier and Zig formatting passed. This is targeted parity; #846 remains open.

6 days ago

Follow-up verification for 74baaf886: the full guarded checker suite now has an explicit Zig summary: 4,701/4,701 tests passed, 3/3 build steps succeeded (zig build test -Dfilter=ts_checker -j1 --summary all). The earlier failed command: line is printed by a checker test control; it is not a suite failure. Peak tree footprint 2,375 MB, host low-water 27%. Exact CLI stream and focused mixed-index/readonly tests also passed. #846 remains open for broader admitted-JS parity.

6 days ago

Pushed direct to origin/main as glennmichael123: 43b8fae adds TypeScript 5.7.3 imported-JS index-revision oracles; 2bf4c95 adds exact CLI stream assertions plus same-path Program and LSP edit/revert tests. The mutable number-index owner has zero importer diagnostics; changing it to a readonly string-index owner yields TS2322 x3 and TS2542 x1, then reverting clears them. Verified: guarded test-tsc-streams 75/75 steps, targeted Program 1/1, targeted LSP 1/1, pickier clean. Memory remained within the 3840 MB guard. This closes the mixed-index source-revision slice, not the broader admitted-JS parity issue.

6 days ago

Direct-main JSDoc-generic import slice: 7d387f8 adds exact TypeScript 5.7.3 oracles for an imported identity<t> and constrained<t extends string | number> function; 1cf4b77 ports declaration-level template parameters, constraints, and return/parameter references through the Program source-owned schema. Before the fix Home reported only the owner TS2322 and lost both importer errors; after it matches TypeScript exactly: importer TS2322 + TS2345 with checkJs on or off, plus the owner TS2322 only when checked. Verified under the 3840 MB guard: full Program 447/447 tests, focused final-source Program 1/1, CLI streams 77/77 steps; pickier, zig fmt, and diff checks pass. The broader admitted-JS surface remains open.

6 days ago

Follow-up to the JSDoc template slice: 7159f98 adds a TypeScript 5.7.3 oracle for an imported @template T function with no @returns (the result is inferred from its checked JS body); 68caa85 transfers that checked generic signature by mapping source TypeId parameters to the same owner declaration, while leaving unmatched graphs unsupported. Before: Home missed the consumer TS2322; after: exact checked and unchecked-JS streams match TypeScript, including the existing explicit-return and constrained-call cases. Guarded final-source verification: Program 447/447, CLI streams 77/77; pickier, zig fmt, and diff checks clean. Both commits are on origin/main as glennmichael123 without coauthors. Broader #846 remains open.

6 days ago

Further checked-JS generic import coverage pushed direct to main: f59b3ea adds TypeScript 5.7.3 oracles for inferred object-member and array-element T; 014618f pins exact checked/unchecked-JS streams and a Program read/write regression. After rebuilding the current home-tsc binary, Home already matched all six consumer diagnostics (plus the owner error only with checkJs); the initially installed binary was stale, not a production gap. Guarded focused Program 1/1 and complete CLI streams 77/77 passed; pickier and Zig formatting passed. This strengthens #846 evidence without claiming broad completion.

6 days ago

Generic source-revision/LSP slice pushed direct to origin/main: f8be127 and 1324abd add exact TypeScript 5.7.3 direct-return versus array-return snapshots; acda78c pins those CLI streams plus same-path Program and LSP edit/revert regressions. The inferred @template T owner changes its return from T to T[]; the single importer TS2322 moves to the opposite assignment, and LSP republishes the changed message without duplicate notifications. Guarded final-source verification: CLI streams 79/79 steps, Program 448/448 tests, LSP 139/139 tests. Fixture pickier and diff checks passed. This confirms a specific revision path, not complete #846 parity.

6 days ago

Imported-JS parameter-signature checkpoint pushed direct to origin/main: aebe472 adds exact TypeScript 5.7.3 optional/rest JSDoc fixtures with checkJs on and off; 2665e39 pins both CLI streams, a Program arity/type regression, and parity docs. The six importer diagnostics cover lower and upper optional-arity bounds, wrong optional/rest arguments, and return-type assignments. Home already matched TypeScript, so no production workaround or suppression was added. Guarded final-source verification: CLI streams 81/81 steps, Program 449/449 tests; pickier, Zig formatting, and diff checks passed. #846 remains open for wider admitted-JS behavior.

6 days ago

Progress 2026-10-27: pushed fdd5021 and d16bf24 directly to origin/main. Admitted JavaScript imports now transfer owner-checked public JSDoc overloads (excluding the broad implementation signature), source parameter names, and full TS2769 overload chains. Overload typing remains active when checkJs is false. Exact CLI output matches TypeScript 5.7.3 for both checkJs modes on issue846-jsdoc-overload. Guarded test-tsc-streams, full ts_program suite, focused serial/parallel Program regression, Zig formatting checks, and targeted pickier all passed. The proposed focused LSP test build exceeded the approved 3840 MB guard (host at 28 percent free), so it was stopped safely and is not claimed as passing. Remaining: adjacent JSDoc blocks and generic overload forms need separate source-identity parity work; LSP-specific coverage needs a lower-memory build path.

5 days ago

Progress 2026-10-27: pushed 929470300 and 64e7cc6 directly to origin/main as glennmichael123, no coauthors. Imported JavaScript functions now collect public JSDoc overloads from separate adjacent blocks as well as a combined block; source order and diagnostic positions are retained. A local adjacency check avoids a whole-prefix search for ordinary one-block JSDoc functions. Exact CLI diagnostics match TypeScript 5.7.3 with checkJs on and off. Guarded test-tsc-streams, focused serial/parallel Program regression, and the full ts_program suite passed under HOME_RUN_MAX_MB=3840. The first full-suite attempt hit its 900-second wall bound after a slow compile; a cached 1200-second retry passed. Targeted pickier and Zig format checks passed. LSP-specific overload revision coverage remains unverified because its test build previously hit the approved memory ceiling; generic overload forms remain to be audited. This is incremental parity, not completion of #846.

5 days ago

Progress on main (2026-10-28): generic JSDoc overloads in admitted JavaScript imports now preserve each public overload type-parameter identity, carry explicit JSDoc array origins through the checked owner schema, and render uninferred failed-call parameters as TypeScript 5.7.3 does. Implementation: acbf631; exact CLI oracle fixture: 937484d. Both commits were pushed to origin/main.

Verification: TypeScript 5.7.3 produced identical expected diagnostics with checkJs on and off; guarded Home test-tsc-streams passed; focused Program test passed for both checkJs modes and sequential/parallel compilation; full ts_program suite passed; pickier, zig fmt --check, and git diff --check passed. The broad checker suite was 4,700 pass / 1 fail: the existing contextual-callback overload-chain assertion expected one chain entry but found two. Isolation showed that failure persists with the new diagnostic substitution disabled and the JSDoc array-origin addition temporarily reverted, so I am not claiming checker-suite green. The focused Program and CLI suites were rerun after the final code edits and passed.

This closes only the verified generic JSDoc overload slice, not #846. Remaining admitted-JS scenarios and the checker overload-chain discrepancy still need work.

5 days ago

Correction to the checker-suite caveat in my earlier update: pinned TypeScript 5.7.3 itself reports TWO overload-chain entries for that contextual-callback case. The local test expected one. Commit bae3506 updates the oracle without suppressing diagnostics; its focused test and the guarded full ts_checker run now exit successfully. Exact diagnostic-text differences remain open in #959: /home-lang/home/issues/959#issuecomment-6447843173. The generic JSDoc import implementation and CLI oracle remain at acbf631 and 937484d.

5 days ago

Progress on admitted-JavaScript import parity: fc1e7e6 rejects an imported adjacent JSDoc generic overload when its inferred argument violates the signature constraint; f245604 pins the exact TypeScript 5.7.3 CLI diagnostic oracle in both checkJs modes. The fixture has two independent generic overloads and a broad implementation signature. Home now reports TS2322 plus the two-candidate TS2769 chain with the same locations and text as tsc, rather than accepting the constrained candidate or emitting only the last-candidate error. Verified sequentially under the 3,840 MB guard: test-tsc-streams, focused Program regression (sequential and parallel compilation, checkJs on/off), full ts_program suite, and full ts_checker suite all exited 0. This closes this specific generic-constraint subcase, not the whole issue; other admission/diagnostic cases remain open.

5 days ago

Progress on admission lifecycle: 2e37558 is on origin/main. It adds two Program controls across checkJs on/off: an import-only JavaScript owner is retired when its sole edge is removed and readmitted under the same FileId when restored; an explicitly listed JavaScript root remains admitted after its importer removes the edge. A root-only CLI fixture matches the exact TypeScript 5.7.3 TS2322 output and exit 2 even though the TypeScript root has no import. Focused controls, the full ts_program suite, and test-tsc-streams passed sequentially under the 3,840 MB guard. LSP publication for this exact remove-and-readmit sequence is NOT yet verified: two focused ts_lsp builds were stopped by the guard at 3,919 and 3,929 MB tree footprint, with no host crash. I did not land the unexecuted LSP test or raise the guard. This remains open within #846.

5 days ago

New verified typed imported-JS read/write gap: #960. Pinned TypeScript 5.7.3 emits TS2542, TS2339, TS2322, TS2322, TS2345 for the checked-JS ReadonlyArray<number> fixture in both checkJs modes; Home emits the other four exactly but misses TS2339 for push. A local readonly number[] control misses the same TS2339, placing the defect in the shared array member model rather than import admission. The exact oracle fixture and honest known-failing documentation are pushed as 76e351d; it is not wired into the passing stream suite. #960 tracks the semantic readonly-prototype fix. #846 remains open.

5 days ago

Typed imported-JS read/write progress: #960 has four small commits on origin/main, 40e284179 through ea0b609a9. TypeScript 5.7.3 exact-oracle CLI cases now distinguish imported JSDoc ReadonlyArray<number> and Array<number> under both checkJs settings; local, augmentation, and callback controls also pass. Focused Program, full Program, full checker, and exact CLI streams exited 0 under the authorized 3,840 MB guard. The JS owner is admitted through the real Program path, not a name heuristic or diagnostic suppression. This closes the observed readonlyValues.push hole but not the broader #846 acceptance or the complete ReadonlyArray lib surface; see #960 for remaining limitations.

5 days ago

Imported-JS type-surface update via #960: 82385ba57 and 9867fbd7f are pushed to origin/main as glenn without coauthors. The admitted checked-JS owner exports readonly and mutable number arrays. With lib: es2023, Home now matches TypeScript 5.7.3 for toReversed, toSpliced, and with result and argument types; exact CLI output is pinned in test-tsc-streams. The full checker and Program suites also exited 0 under the 3,840 MB guard. This advances typed imported-JS read/call constraints; broader #846 admission and LSP acceptance remains open.

5 days ago

LSP explicit-root lifecycle progress: 8602d3f72 is pushed directly to origin/main as glenn, no coauthors. A new adapter-level test was red (94/95, MissingExplicitRoot) before the fix and green (95/95) after it. LspProject.create now seeds readable config files roots using the same config-relative path resolver as the CLI. With checkJs implicitly enabling JavaScript admission, a listed owner.js keeps its Program identity and TS2322 diagnostic when main.ts removes and later restores its import; the importer publishes a cleared diagnostic set and then TS2322 again. Guarded tsc_main suite exited 0, peak 2,110 MB. The existing TypeScript 5.7.3 CLI root-only oracle and import-only LSP test remain in place. This is not complete config diagnostic parity: missing/disallowed roots still need LSP project diagnostics, now tracked in #961.

5 days ago

LSP explicit-root diagnostics progress: d7fd442 (#961) is pushed to origin/main as glenn, no coauthors. Initial project load now reports TS6053 for missing config files and TS6504/TS6054 for rejected extensions without admitting phantom roots; watched root creation clears the diagnostic and admits the real source, and deletion restores it. Guarded tsc_main tests pass. Watched tsconfig reparsing remains open in #961, so broader #846 acceptance is not claimed complete.

5 days ago

Watched-config LSP lifecycle is now landed and #961 closed: d7fd442 + 449b674 on origin/main as glenn (no coauthors). Exact-code/message TS6053/TS6504 explicit-root diagnostics now appear, clear, and reappear through root and tsconfig watcher changes. Reload rebuilds resolver/Program/checker state, retains unsaved editor buffers, and republishes document diagnostics instead of retaining stale admission. The config watcher test was red (97/98) before the fix and is green afterward; guarded tsc_main and test-tsc-streams pass, with latest 2,346 MB peak / 29% host low-water. #846 remains open for broader imported-JS type and negative-diagnostic parity; this is one completed LSP slice, not full acceptance.

5 days ago

Typed admitted-JS read constraint advanced in ed4ab8d (#960, pushed origin/main as glenn without coauthors). entries() on imported checked-JS readonly and mutable number arrays now yields typed [number,T] pairs instead of any; the TypeScript 5.7.3 control and Home match three exact TS2322 lines/positions/messages and exit 2. The previous Home control exited 0, confirming the gap. Guarded exact CLI-stream, full checker and Program gates exit 0; #960 remains open for broader array library parity, and #846 remains open for the rest of its admission and type-surface acceptance.

5 days ago

Progress on admitted-JS readonly-array parity: pushed f1b8155 to origin/main (fix(ts): elaborate readonly concat element mismatch, #960). The new concat fixture pins TypeScript 5.7.3 output exactly, including a structural numeric-index control so array-element elaboration does not weaken true index-signature diagnostics. zig build test-tsc-streams -j1 passed under the 3,840 MB guard; zig fmt --check and targeted pickier passed. The checker-suite invocation printed a failed command line despite process exit 0, so I am not counting that suite as conclusively green and will investigate on the next guarded run. Per request, pruned only the project .zig-cache (27 GB); no source/untracked files were removed.

5 days ago

Pushed 985587a and b81d6db directly to origin/main as glennmichael123, no coauthors. Imported checked-JS readonly arrays now match TypeScript 5.7.3 for flatMap callbacks returning either a scalar or a readonly array, and for the lib.es2019.array callback array parameter, with checkJs true and false. Exact test-tsc-streams passed under the 3,840 MB guard; focused checker test passed; the direct full checker runner passed all 4,705 tests (989 MB peak, 26% host low-water). The Zig build-server full checker invocation separately timed out at 900 seconds, so that path is not claimed green. A broader generic-name scope leak discovered by an unrelated U declaration remains open as #962; this update does not claim full #846 completion.

5 days ago

Checkpoint 2026-10-28: 641dcfc and c622d23 are pushed directly to origin/main as glennmichael123, with no coauthors. Fixed #962: generic flatMap inference now finds its own U through the U | U[] callback-return union instead of treating the union header as a type parameter. The new admitted-JS fixture imports readonlyValues and values from checked owner.js, includes an unrelated Alias, and exercises imported readonly, imported mutable, and local readonly flatMap. TypeScript 5.7.3 gives exactly one deliberate TS2322 at generic-scope.ts(9,7) in both checkJs modes; Home matches stdout, stderr and exit in test-tsc-streams. Focused checker regression passed, and the full direct checker binary passed 4706/4706; both Zig gates ran sequentially under the authorized 3840 MB guard (final checker peak 992 MB, CLI peak 2216 MB; these are conservative process-tree footprints). #962 is closed. This does not complete #846: explicit-root/import-closure/dependency-depth, implicit checkJs, revision/LSP invalidation, negative untyped-package/JSX/config and broader imported-JS read/write acceptance still require their own verified evidence.

5 days ago

Follow-up from this checkpoint: #963 tracks the separate aggregate-union payload/name hazard exposed while testing a broader checker hardening. The #962 fix is verified; #963 remains open and was not folded into this batch because the attempted broad change failed an existing contextual-generic regression.

5 days ago

Admitted-JS typed-read checkpoint, 2026-10-28: origin/main includes 28ff826, b2f1c39, and 100f70f (glennmichael123, no coauthors). An imported checked-JS ReadonlyArray<number|string> and mutable Array<number|string> now preserve TypeScript 5.7.3 filter type-predicate narrowing. Both checkJs settings have exact stdout/stderr/exit oracle coverage: two narrowed number[] reads succeed, an ordinary filter retains the union, and only three deliberate TS2322 diagnostics remain. Focused checker, full direct checker 4707/4707, Program, and test-tsc-streams passed sequentially under the 3840 MB guard. See #960 for remaining ReadonlyArray surface work. This is one typed imported-JS read constraint, not proof that the broader explicit-root, revision/LSP, negative-diagnostic, and write-constraint acceptance for #846 is complete.

5 days ago

Admitted-JS typed-read checkpoint, 2026-10-28: 2b5b632 and 84418cd are pushed to origin/main as glennmichael123 (no coauthors). Imported checked-JS ReadonlyArray<number|string> and mutable Array<number|string> now preserve TypeScript 5.7.3 find/findLast type-predicate narrowing to number | undefined, with optional thisArg; an ordinary find retains the union. Both checkJs modes match seven exact TS2322 lines, empty stderr, and exit 2. Focused checker, exact CLI streams, direct full checker 4708/4708, and Program passed sequentially under the 3840 MB guard. See #960 for remaining ReadonlyArray surface. This advances typed imported-JS reads but does not close #846's explicit-root/import-closure, revision/LSP, negative-diagnostic, or write-constraint acceptance.

5 days ago

Progress on admitted-JavaScript package semantics (2026-10-28): four issue-linked commits are on origin/main: 1c090d2 (CommonJS named-export fixtures), 310efd9 (.mjs ESM fixture), 935c383 (package-owned .js ESM fixture), and 17ad9e1 (Node16 TS1479 detection, exact stream assertions, fixture documentation). Using the TypeScript 5.7.3 oracle, all nine new exact CLI-stream cases now match: depth 0 keeps TS7016; depth 1 preserves number-typed named reads/writes with TS2322; admitted ESM imports additionally emit TS1479 with its conversion hint, including package type=module .js and checkJs=false. zig build test-tsc-streams -j1 passed under the 3,840 MB guard; focused TS1479 checker tests passed. The full checker command exited 0 but printed a Zig failed-command line without a normal summary, so I am not treating that broad run as proven green. This closes this particular admitted bare-package format gap, not the full issue; remaining acceptance still includes wider import closure, revisions/LSP, and negative diagnostics.

5 days ago

2026-10-28 follow-up: 8398e92 and 3f90cf7 are pushed directly to origin/main under glennmichael123, no coauthors. TypeScript 5.7.3 differential controls now cover admitted ESM import-equals (TS1471), type-only import (TS1541), and typeof-import (TS1542), plus exact depth-zero TS7016 behavior and checkJs=false controls. Home now uses the resolved package format and actual Program source-admission state for these paths; unadmitted JS recovers as any without a phantom TS2339, and TS1541/1542 carry the conversion message chain. Guarded verification: zig build test-tsc-streams -j1 passed; focused checker filters TS1471 and TS15 passed; zig fmt --check and git diff --check passed. One earlier stream attempt was stopped by the guard when system-wide open files briefly hit the limit; a later guarded run passed after host state normalized. This does not close #846: the more complex indexed typeof-import form and a typeof query on a named type-only JS import still showed divergence during diagnosis and need dedicated follow-up; broader revision/LSP and import-closure acceptance also remain.

5 days ago

Additional guarded verification for 8398e92 and 3f90cf7: zig build test -j1 -Dfilter=ts_program passed (peak guard tree footprint 2,254 MB, host low-water 28%), and zig build test-ts-lsp -j1 passed (2,054 MB, low-water 27%). These are regression gates; they do not by themselves prove the remaining source-revision/LSP invalidation acceptance cases in #846, which stay open.

5 days ago

2026-10-28 follow-up: the indexed typeof-import counterexample noted above is now fixed and pinned by c4873d8 plus 119283801 on origin/main. The parser stores typeof import("pkg")["box"] as a typeof node over indexed access, so the checker now resolves its import in value space, applies the index, emits TS1542 with the conversion chain, and allows a type-only named import to participate in a typeof type query without a spurious TS2571. TypeScript 5.7.3 and Home match exact CLI streams at depth zero, depth one, and checkJs=false; zig build test-tsc-streams -j1 and focused checker filter TS1542 passed under the 3,840 MB guard. #846 remains open for broader revisions/LSP invalidation, import-closure, and negative diagnostics not proven by this fixture.

5 days ago

2026-10-28 progress on origin/main: b333ea6 corrects TS1479 conversion hints to a TypeScript message chain (no invented source location); 23e366c and 03d7a51 add byte-identical ESM/CommonJS JavaScript packages and exact TypeScript 5.7.3 CLI oracles; 51d9e0e records package.json dependencies in the LSP and recompiles real importers on metadata events. A red LSP regression first showed no notification after a package type edit; it now verifies ESM -> CommonJS -> ESM, TS1479 disappearance/reappearance, retained typed TS2322 reads/writes, stable admitted JS FileId, and no phantom package.json source. Verified sequentially under the 3,840 MB guard: tsc_main 100/100, test-tsc-streams, focused TS1479 checker tests, and test-ts-lsp. This closes this metadata-revision cell, not the whole issue: broader admission, revision, and negative-diagnostic parity still require evidence.

5 days ago

Additional metadata-revision regression on origin/main: a217d17 extends the LSP test through package.json deletion and recreation. TypeScript 5.7.3 returns only the two typed TS2322 errors when the package metadata path is absent; Home now matches the expected TS1479 off/on transitions on modification, deletion, and recreation without changing the admitted JS FileId. Sequential 3,840 MB guarded tsc_main run passed (100/100). #846 remains open for the broader acceptance matrix.

5 days ago

2026-10-28 additional verified progress: 5b28ad0 adds a real LSP config-revision regression for node_modules JavaScript admission. It checks depth 0 -> 1 -> 0, implicit checkJs, allowJs with checkJs disabled, explicit allowJs false, and preservation of an unsaved importer buffer; the guarded tsc_main suite passed. 778874184 adds a repeatable TypeScript 5.7.3 differential auditor. After a guarded fresh home-tsc build, all 78 issue846-* configs matched exact stdout, stderr, and exit status with --noEmit applied to both CLIs; the auditor itself ran under the 3,840 MB guard (243 MB peak tree footprint). This establishes the enumerated CLI fixtures, not arbitrary JS inference or all LSP revisions, so #846 remains open.

5 days ago

2026-10-28 package exports revision coverage on origin/main: 0c0f8ce, 3e5c563, and e77c741. TypeScript 5.7.3 was checked in both metadata states: exports -> number.cjs exits 0 with no output; exports -> string.cjs exits 2 with exactly main.ts(2,7) TS2322. The LSP test switches only package.json, verifies importer diagnostics follow the selected admitted JS owner, retires the old owner, and restores the original FileId on reversal. Guarded tsc_main and test-tsc-streams passed; after a fresh guarded home-tsc install, the cross-fixture auditor reports 79/79 exact TypeScript 5.7.3 stdout/stderr/exit matches with --noEmit. This is enumerated evidence, not a claim of all possible JS imports.

5 days ago

2026-10-28 admission-boundary revision coverage pushed directly to origin/main as a20e688, f90742a, and c45a8dd. TypeScript 5.7.3 at maxNodeModuleJsDepth=0 reports TS7016 when package exports selects number.cjs, and exactly main.ts(2,7) TS2322 when the same metadata selects types.d.ts. The LSP test changes only package.json, confirms TS7016 -> TS2322 -> TS7016, admits the declaration only while selected, and never admits the excluded JS implementation as a source. Guarded tsc_main and test-tsc-streams passed; the fresh differential audit now reports 80/80 exact TypeScript 5.7.3 stdout/stderr/exit matches with --noEmit. This remains enumerated parity, not proof of every imported-JS form.

5 days ago

2026-10-28 verification after the latest #846 admission-boundary commits and repo-local Zig-cache prune: guarded sequential suites passed on current origin/main with HOME_RUN_MAX_MB=3840: ts_program 456/456, ts_cli 89/89, test-ts-lsp 139/139, and tsc_main 102/102. The full ts_checker build/test step also succeeded (3/3 build steps, cached on the summarized recheck); I am not inferring a test count from that output. Peak tree footprints for Program/CLI/LSP/tsc_main were 2443/1993/2244/2374 MB, respectively; the reported footprint double-counts shared pages. Prior fresh home-tsc differential audit remains 80/80 exact TypeScript 5.7.3 stdout/stderr/exit matches for enumerated issue846-* configs. This establishes these suites and fixtures, not arbitrary JavaScript inference or every LSP revision; #846 remains open.

5 days ago

2026-10-28 transitive admitted-JS revision coverage pushed directly to origin/main as 8268ca5 and b02c47e (glennmichael123, no coauthors). The new fixture has only main.ts as an explicit root; bridge.js re-exports from leaf.js. TypeScript 5.7.3 and Home agree exactly in both checkJs modes: numeric leaf yields main.ts(3,7) TS2322 and exit 2; changing only the leaf to a string yields empty stdout/stderr and exit 0. A new LspProject watched-file test exercises number -> string -> number through the two-hop import, requiring importer diagnostics to clear and return while both JS FileIds remain stable and non-root. Guarded tsc_main passed 103/103, test-tsc-streams 130/130 build steps succeeded (not a test count), and the fresh home-tsc differential audit matched 82/82 issue846-* configs exactly. Peak guarded tree footprints were 2397/2202/242 MB for tsc_main/streams/auditor. This proves the enumerated case and revision path, not all imported-JS inference or editor event orders; #846 remains open.

5 days ago

2026-10-28 imported-JS read/write constraint progress on origin/main: e269059 and bbff6a9 correct the real array method signature/arity model, not a diagnostic suppression. With an admitted JSDoc readonly number array and mutable number array, TypeScript 5.7.3 accepts 12 valid callback+thisArg calls across map/forEach/every/some/findIndex/findLastIndex and emits only TS2322 at main.ts(17,7) plus TS2554 at (18,50) for deliberate negatives, identically with checkJs on and off. Home now matches both exact streams and exit 2; the prior binary emitted 14 extra TS2554 lines. Guarded direct checker binary: All 4709 tests passed; Program 456/456; LSP 139/139; exact CLI streams passed; fresh home-tsc differential auditor: 84/84 #846 configs match exact stdout/stderr/exit. Scope and remaining ReadonlyArray gaps are in /home-lang/home/issues/960#issuecomment-6468183854. This is enumerated imported-JS parity, not arbitrary inference or every editor path; #846 remains open.

5 days ago

2026-10-28 source-revision checkpoint on origin/main: 513fe15 adds an import-closure edge change to the existing transitive LSP regression. TypeScript 5.7.3 was checked in both checkJs modes with only main.ts as root: bridge.js -> numeric leaf.js yields exactly main.ts(3,7) TS2322 and exit 2; changing only bridge.js to re-export string-valued alternate.js yields empty streams and exit 0, then the numeric bridge source was restored. The LSP watched-file test now switches the bridge edge to alternate.js and back, requiring importer diagnostics to clear/return, the old leaf to leave the Program, the alternate to enter it, and the original leaf FileId to return on reversal. Guarded tsc_main passed 103/103; test-tsc-streams passed; fresh home-tsc differential audit matched 84/84 #846 configs exactly. This is one enumerated edge-revision behavior, not full editor or imported-JS parity; #846 remains open.

5 days ago

Pushed 446e7f3 and a3c534d to origin/main as glennmichael123 (no coauthors). Imported checked-JS ReadonlyArray/Array every now uses the selected overload for flow narrowing: named and inline type guards narrow, while an ordinary truthy callback leaves number|string unchanged. TypeScript 5.7.3 and fresh Home match exact stdout, stderr, and exit status for both checkJs modes. The full #846 differential auditor reports 86/86 exact config streams. Guarded checker build reports 4710/4710 tests, Program 456/456, tsc_main 103/103, and test-tsc-streams 134/134 steps. The checker build also printed a contradictory Zig "failed command" line despite exit 0 and 4710/4710, so direct-binary confirmation remains prudent. LSP suite was not verified this turn: the 3840 MB supervisor stopped its build at 3849 MB sampled tree footprint; no unguarded retry was made. Broader admitted-JS and LSP revision parity remain open.

5 days ago

Follow-up verification for 446e7f3/a3c534d: I ran the already-built full checker test executable directly under the 3840 MB guard to resolve Zig's contradictory wrapper line. It exited 0 with All 4710 tests passed. Peak sampled tree footprint was 993 MB, host low-water 41%. The LSP build remains unverified because its separate guarded attempt exceeded the tree ceiling; I did not retry it.

5 days ago

2026-10-28 progress on origin/main: 22b5481 and 56659d0 port the TypeScript 5.7.3 flatMap<u, this="undefined"> callback receiver/optional thisArg behavior for imported checked-JS readonly and mutable arrays, and pin exact CLI streams with and without checkJs. Fresh Home and TypeScript 5.7.3 match stdout, stderr, and exit for the two new configs (both report only TS2322 at 6,9 and 31,6, exit 2); the independent auditor matched all 88/88 issue846 configs. Guarded test-tsc-streams passed 136/136 steps. Full guarded checker run was 4711 pass / 1 fail: its sole failure was an obsolete binder-count assertion after adding the real This binder. That assertion was updated and its focused test then passed 2/2; a full green checker rerun and Program/LSP runs remain pending because host memory pressure is currently elevated. This is a finite imported-JS method improvement, not full #846 acceptance.

5 days ago

Verification follow-up for 22b5481 and 56659d0 on origin/main: after the corrected binder assertion, the full checker wrapper reported 4712/4712 passed but printed a contradictory failed-command line. I ran its built executable directly under the 3840 MB supervisor: exit 0, All 4712 tests passed, peak tree footprint 997 MB, host low-water 29%. Separate guarded Program suite passed 456/456 (peak 2545 MB), and tsc_main passed 103/103 (peak 2162 MB). Earlier exact-stream suite passed 136/136 steps and TypeScript 5.7.3 differential auditor matched 88/88 #846 configs. LSP invalidation remains unverified for this batch; full #846 acceptance stays open.

5 days ago

Clarification to my 2026-10-28 verification note: the guarded tsc_main 103/103 suite includes the relevant LspProject tests in packages/ts_cli/src/tsc_main.zig, including import-only JS admission/removal/readmission, explicit config-root retention, watched transitive leaf revisions, and bridge re-export edge changes in both checkJs modes. Those editor-path regressions DID run and pass after 22b5481/56659d0. What remains unverified in this batch is the separate ts_lsp package suite; its earlier guarded build exceeded the 3840 MB tree limit. The 88/88 CLI matrix is still finite, and broader #846 parity remains open.

5 days ago

2026-10-28 separate LSP-suite follow-up after 22b5481/56659d0: with host pressure normal, I reran zig build test-ts-lsp -j1 --summary all under HOME_RUN_MAX_MB=3840. It exited 0: 3/3 build steps succeeded, 139/139 ts_lsp tests passed, peak sampled tree footprint 2145 MB, host low-water 29%. The tsc_main 103/103 run already covered LspProject import admission and transitive watched-file revisions. This resolves the current-batch LSP verification gap, not the broader #846 acceptance matrix.

5 days ago

2026-10-28 pushed cdeb83b to origin/main as glennmichael123, no coauthors. Home's synthetic flatMap callback return now models TypeScript 5.7.3's U | ReadonlyArray (with readonly index metadata) while the method result remains mutable U[]; this removes the prior U | U[] approximation tracked in #960. Added an imported checked-JS explicit <number> callback returning the readonly owner array. TypeScript 5.7.3 in both checkJs modes keeps only the intentional TS2322 at flat-map.ts(12,7). A fresh guarded home-tsc build and independent #846 auditor matched all 88/88 config stdout/stderr/exit streams; test-tsc-streams passed 136/136 steps. Guarded full checker wrapper reported 4712/4712 passed, exit 0, but again printed a contradictory failed-command line; direct-binary confirmation and Program/LSP reruns for this commit are pending because host pressure is warning. #846 remains open for broader parity.

5 days ago

Verification follow-up for cdeb83b on origin/main: direct checker executable under the 3840 MB guard exited 0 with All 4712 tests passed (999 MB peak tree footprint), resolving the wrapper's contradictory failed-command line. Sequential guarded Program passed 456/456 (2430 MB peak), tsc_main including LspProject admission/revision tests passed 103/103 (2366 MB), and separate ts_lsp passed 139/139 (2263 MB). Fresh home-tsc matched TypeScript 5.7.3 on all 88/88 issue846 config stdout/stderr/exit streams; test-tsc-streams passed 136/136 steps. The explicit generic flatMap callback returning an imported readonly array is now covered in both checkJs modes. This confirms this batch, not arbitrary JS inference or full #846 acceptance.

5 days ago

2026-10-28 in-progress oracle finding: an admitted JavaScript export default { count: 1, label: "ready" } loses its inferred object type on both direct and export { default } re-export imports. TypeScript 5.7.3 reports exactly 2 TS2322 diagnostics for direct import and 4 for the barrel/namespace case, identically with checkJs true/false; the current Home binary exits 0 with no diagnostics. Source-owned expression routes plus Program, exact CLI-stream, and watched-owner LSP regressions are in the working tree. Zig validation/push are still pending because macOS reports warning memory pressure; no pass is claimed yet.

5 days ago

2026-10-28 verified follow-up to the default-expression gap: pushed 9f44bf632, e392e11b6, and 13eec8b19 directly to origin/main as glennmichael123, without coauthors. Program now retains the exact source owner for a JavaScript export default <expression> route and publishes its checked type before direct/re-export importers run. No naming heuristic or diagnostic suppression was added.

TypeScript 5.7.3 and fresh Home match the new direct and barrel/namespace object read/write controls in both checkJs modes (2 and 4 intentional TS2322 diagnostics). Guarded verification: focused Program 1/1; full Program 457/457; checker 4712/4712 (exit 0 despite Zig wrapper printing a contradictory failed-command line); tsc_main including watched default-owner LSP revision 104/104; ts_lsp 139/139; exact CLI stream step 139/139; independent #846 auditor 91/91 config stdout/stderr/exit matches. Peak guarded tree footprint was 2,384 MB for Program; no overlapping Home Zig builds. The binary used system JavaScriptCore because pinned Bun WebKit was absent; this does not establish Bun runtime parity. #846 remains open for the wider acceptance matrix.

5 days ago

2026-10-28 progress: anonymous JavaScript export default class {} now receives a source-owned checked instance identity, so JSDoc method parameters survive direct import and default re-export. Pushed 1861532da (checker fix + Program regressions), 1cdfc2dee (oracle sources), and 491bacb2e (three exact TypeScript 5.7.3 CLI streams + parity docs) directly to origin/main as glennmichael123, without coauthors. Guarded verification: focused bound graph and Program tests pass; full Program, tsc_main, and CLI stream suites exited 0; independent #846 auditor reports 94/94 exact stdout/stderr/exit matches. Full checker command exited 0 but Zig emitted a contradictory test-wrapper failed-command line, so its named test count is not asserted. Full LSP and a separately filtered class-method LSP attempt both exceeded the approved 3,840 MB tree-footprint guard (at 29% and 28% host headroom) and were stopped before test results; LSP remains unverified for this batch, and I stopped retrying. This is a scoped admission fix, not full JavaScript or Bun parity.

5 days ago

2026-10-29 #846 progress: an exact TypeScript 5.7.3 differential found that JSDoc immediately before an anonymous JavaScript default function export was not owned by the function. Before the fix, Home emitted owner TS7006 and missed both consumer errors. The checker now follows the actual export-declaration parent when attaching JSDoc; no name heuristic or diagnostic suppression. Pushed a9ea8e3, 165e1ab, 0ea6c0d, and 768551d directly to origin/main as glennmichael123 without coauthors. Five new CLI configs cover direct/re-exported import, explicit JS root, implicit allowJs through checkJs, and checkJs:false; all match TypeScript stdout, stderr and exit exactly. Program serial/parallel import tests and owner edit/revert pass, and a watched-owner LspProject test confirms importer diagnostics appear and clear in both checkJs modes. Guarded verification: focused checker and Program tests, full Program, tsc_main, test-tsc-streams, and the direct checker executable with 4,713/4,713 tests passed; the independent #846 auditor reports 99/99 exact configs. The dedicated ts_lsp package suite was not rerun for this batch because memory headroom was low; LspProject path was tested through tsc_main. This does not establish full admitted-JS inference parity or close #846.

4 days ago

2026-10-29 scoped #846 follow-up: pushed 47fb80406 directly to origin/main as glennmichael123, no coauthors. The new #959 contextual-overload fixture pins an exact TypeScript 5.7.3 differential under a 1,024 MB guard: both CLIs return exit 2 with empty stderr and the same three top-level codes, but Home differs at the TS2769 anchor, optional tuple markers, and a literal-versus-string child. This is a documented open checker diagnostic gap, not an added passing #846 config or proof of broad parity. I refreshed this issue's summary to distinguish the existing 99/99 exact #846 configs from remaining work. Host memory is 29–35% free; no Zig build or suite has run in this follow-up.

4 days ago

2026-10-29 verified related checker fix: pushed 71aa1fef0 to origin/main as glennmichael123 without coauthors. #959 now closes an exact TypeScript 5.7.3 diagnostic gap: small-overload TS2769 anchors at the shared candidate error span or, when spans differ, at the call; optional tuple markers and literal child types are preserved. Two exact new CLI controls cover a nested contextual callback and differing direct argument spans. Guarded test-tsc-streams passed, including the existing admitted-JavaScript overload streams; the newly built checker executable passed 4,713/4,713 directly under a 2,048 MB guard. The #846 independent 99-config auditor did not run on this new source revision: it refused a stale installed zig-out/bin/home-tsc, and host memory fell before a separate install build. Do not increase the 99/99 claim or infer wider admitted-JS parity from this fix. #846 remains open.

4 days ago

2026-10-29 verification follow-up for 71aa1fef0: after a normal guarded zig build home-tsc -j1 refreshed the installed CLI, the independent #846 auditor compared all 99/99 exact TypeScript 5.7.3 config streams with zero mismatches (stdout, stderr, exit), exit 0. It ran sequentially under a 1,024 MB guard; peak tree footprint 245 MB and host low-water 28%. This clears the stale-installed-binary verification gap noted above. It remains finite oracle coverage, not proof of every admitted-JavaScript form; #846 stays open.

4 days ago

Verified admitted-JavaScript CommonJS batch: five small commits now on origin/main (962dacb..2923854; #964). Leading JSDoc @type on module.exports survives checked owner projection with readonly/optional fields in both checkJs modes. Later module.exports.name and exports.name writes no longer trigger false TS2309. The exact TypeScript 5.7.3 CLI audit advanced from 99/99 to 106/106 matching config streams (stdout/stderr/exit). Direct guarded checker run passed 4,713/4,713; focused two-mode Program regression and test-tsc-streams passed. Issue #964 is closed. This does not complete #846: function/class CommonJS expando TS2339 remains independently open in #965, and broader admitted-JS/LSP acceptance remains.

4 days ago

Additional verification/docs commit c45249e is on origin/main: test-tsc-streams now pins all seven #964 config streams, the parity note records 106/106, and the independent auditor is source-freshness aware. The full guarded ts_program package suite passed; #965 remains open for function/class expando typing.

Sign in to comment on this issue.