ReviewOS

home-lang/home

fix(ts): check missing defaults in real .ts module imports

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

Published progress (2026-10-08 UTC)

206cdf1aa fixes the original real .ts star-barrel default-import silent acceptance. Default selection now uses retained source/owner facts: declaration/JS context, actual value/type defaults, export assignments, ESM syntax, interop markers and package-implied format. Both relative and package imports are checked; untyped JS keeps TS7016 without an extra TS1192. Named suggestions remain distinct.

Chris pushed conventional issue-linked commits directly to origin/main, without coauthors. cde7cd33e publishes detailed docs, a brief README table and raw evidence.

Verified scope

  • 105/105 native TS 7 primary diagnostic identities/messages and success/error exit classes; 86/86 shared-config TS 6 cases.
  • The remaining 19 TS6/native config-dialect cases stay explicit. Native TS7 rejects node10; Home matches located TS5108 after upstream #847. They are not shared semantic admissions.
  • Full checker 4501, Program 238, CLI 74, entrypoint 35, driver 199 and harness 128 tests pass. Formatting/diff checks pass. Targeted lint on edited docs passes; repository lint remains failed at 22,075 problems, with the earlier-report Markdown error corrected separately.
  • Exact parent b6e34fc and candidate preserve the complete 195 TS errors + 3 HM9002 Zod multiset, zero additions/removals. Not production admission.
  • Graph/scale cost confirmation is inconclusive: medians 0.8% slower / 0.8% faster, intervals spanning zero. Large-predicate 3.5% slower screen and 0.9% slower independent recheck are both retained. No speedup/equivalence/universal no-regression claim.

Report, archive: 296 pair rounds, 224 admissions, 6,271 verified checksums. Archive SHA-256 4a77c9f4a49cd86c0e4e4097189041f6a8622073423f7479467e6ad0babccee0. Candidate binary 7346fd7bbc264c20a9b32a0da08e8579e615e68795c961f4f91911e6b276063a. Original/red/prototype failures and raw outputs remain in evidence/comments.

Still open

Keep broader module/interop coverage and real/virtual consistency under review, including additional importer formats, synthetic-default compatibility options, project-reference redirects, ambient declarations and related-info/hints. Extend logical rejection/admission controls as those surfaces are verified; do not time failing compilers or treat these finite cases as complete TS parity. Related #416, #843, #844, #846, #847, #548.

8 days ago

The fact-level exclusion has now landed in 929d46a, but this CLI control still fails on that published source; final-default-oracle.json retains TS1192 versus zero-diagnostic exits on both exact parent and candidate. This is explicitly documented as a failed gate, not hidden inside the 30 separate passing enum/depth cases. The published standalone source suites and unchanged-workload timing admissions do not establish default-import correctness. Follow-up must establish module/default/export-equals/interop semantics before widening the real-project diagnostic path.

8 days ago

Completed a retained 95-case same-input parent/TS6 matrix across ESNext, CommonJS, Preserve and NodeNext ESM/CJS package scopes, with TS/MTS/CTS/declarations/JS, direct/named/namespace/default-interface exports, star barrels, type imports and __esModule controls. The gap includes missing type-only default diagnostics, synthetically importable declarations and module-format-dependent behavior. Source inspection of pinned TS6 canHaveSyntheticDefault confirms these distinctions. Matrix also exposes separate admitted-JS TS7016 and node10 deprecation false rejection issues (filed separately); neither is removed from or normalized away in the controls. Next is explicit owner/module/default metadata and semantic selection, not widening a suffix filter.

8 days ago

Owner-metadata prototype builds successfully under the unchanged 3840 MB/600 s guard (observed build peak 3080 MB). The first full Program run has 237/238 passes: the new owner-shape control failed, so the draft is not being committed or claimed accepted. Added failure-stage context and queued the same complete suite rerun; full checker and all 95 same-input oracles are also live/queued. No timings or source push yet. Separate issues are #846 (admitted project JS falsely TS7016) and #847 (TS6 node10 deprecation handling); their failing cases remain in the matrix.

8 days ago

First prototype: 57/95 exact oracle matches; full checker 4495/4495 passes and complete Zod identities remain 196 TS + 3 HM9002, zero added/removed. Retained 38 mismatches: 19 config cases (#847), 12 JS cases (#846), seven additional declaration-default cases. The declaration cases exposed compileModuleForExportFacts not forwarding declaration-file context from the actual path; corrected that owner construction. CommonJS __esModule presence now also uses existing HIR export facts, not origin-only absence. New draft binds actual Program source admission for typed-JS resolution, preserving unadmitted JS as untyped instead of blanket suppression. Full reruns/native build queued; no accepted fix/push or benchmark claim yet.

8 days ago

Pre-integration admission candidate 9102f242aff6c4e4c4af7ec67a609e5283ee60536f60ac5b9a1a8e8638cbccdf exactly matches both TS6 and direct native TS7 on all 76 shared-config cases, including the original default-star failure, value/type defaults, declaration/JS/Node format cases and marker distinctions. The other 19 CommonJS/node10 cases remain visible: TS6 accepts the deprecated option, TS7/Home reject; Home also drops the config position (#847). They are not semantic passes. Full checker 4495, Program 238, entrypoint 34 and driver 199 passed across the staged runs; complete Zod remains 196 TS + 3 HM9002 with zero identity changes. Exact old-parent screen: graph 13.440 -> 13.329 ms (13/20, saving interval -0.585 to +0.487 ms); scale 1292.996 -> 1293.756 ms (2/6, -27.656 to +23.536 ms), inconclusive, not a speedup. Integrated cleanly onto new main 4656fca and added real package-default and untyped-JS negative coverage. Integrated binary 88cd5f0673f2d9576b42825c82fe73cd4ca1cfc48d58cb1b097b4010b6640f64 built; full integrated checker/Program/entrypoint, same-input oracles and Zod gates are live or queued. No source commit/push yet; acceptance, exact new-parent costs and docs/evidence publication remain.

8 days ago

Additional retained package controls found a genuine remaining gap: ESNext/bundler imports from an ESM package declaration index.d.ts need TS1192, but the draft was synthesizing a default. Pinned TS source getImpliedNodeFormatForFileWorker/getImpliedNodeFormatForEmitWorker establishes package format provenance outside NodeNext too. Added that fact and a checker control; no admission based on package name. The same package negatives also retain genuine TS7016 at the wrong import position; moved its existing report anchor to the module literal. All original and new raw failures remain in package-red.json/log. Integrated latest main b6e34fc (another source fix for #847 config locations), and final build/checker/Program gates are live/queued against that parent. Oracle normalization now only canonicalizes known fixture path prefixes, including config paths; it does not drop codes, counts, positions or messages. No source push/acceptance claim until these gates finish.

8 days ago

Final draft on parent b6e34fc now matches direct native TS7 exactly on all 95 option/source cases plus 10 package cases (105 total primary code/count/position/message and success/error exits). TS6 matches all 86 shared-config cases; the other 19 are retained native-vs-TS6 option dialect differences, with #847 locations now fixed by upstream and verified in the 95 native matches. New package red failures are preserved: ESM-package index.d.ts synthetic-default handling and wrong TS7016 import-start positions; both corrected logically. Full final checker 4501, Program 238, CLI 74 and entrypoint 35 passed. Harness 128 passed. Exact-parent graph/scale confirmation is inconclusive; all-family screen flags large predicates at 3.5% slower with a negative saving interval, and the independent 30-pair recheck is live/queued. Current-parent Zod multiset comparison, final driver and pickier runs are also live/queued behind a specific bounded external React process. The old-source Zod comparison lost one identity after unrelated inheritance integration; no zero-difference claim until the exact b6 parent is checked. No source push yet; final gates and separate docs/README/evidence publication remain.

8 days ago

Published directly to origin/main as Chris, without coauthors: 206cdf1 fixes default selection from retained module owners (#845/#846); cde7cd3 publishes docs/README/evidence (#845/#846/#847). The original ordinary-.ts star-default silent acceptance is now corrected. Full checker 4501, Program 238, CLI 74, entrypoint 35, driver 199 and harness 128 pass. Native TS7 primary diagnostic parity 105/105; TS6 shared-config parity 86/86. All 19 version-dependent config rejections are retained and match native positions after upstream #847. Exact parent b6e34fc Zod retains 195 TS + 3 HM9002 identities, zero changes; not production admission. Costs remain inconclusive: graph 0.8% slower / scale 0.8% faster median, intervals spanning zero. Large predicates: retained 3.5% slower screen and 0.9% slower independent recheck (interval spanning zero). Archive 296 rounds / 224 admissions / 6271 verified checksums, SHA256 4a77c9f4a49cd86c0e4e4097189041f6a8622073423f7479467e6ad0babccee0. Full pickier failed 22075 problems; its one earlier-report Markdown error corrected and all three edited docs pass targeted lint. Keep open for broader interop/module-format/related-info admission review, not universal completeness. Report: https://github.com/home-lang/home/blob/main/docs/docs/TS_PERFORMANCE.md#default-module-owner-correctness-and-cost-checkpoint-2026-10-08-utc

Sign in to comment on this issue.