Fix #107: flag error-any from unresolvable imports (never a silent 'a); bump blend beta pin to 0.0.37-beta.8 - #132
Merged
Merged
Conversation
…in to 0.0.37-beta.8 An unresolvable type reference (broken import in a package's .d.ts) yields the checker's error type, which masquerades as `any` — the implicit-generic salvage turned it into a silent 'a (ThemeProvider's ~foundationTokens: 'a=?, defects=0). Error-any is now detected via the checker's `error` intrinsic before the salvage and emits a flagged placeholder naming the broken-import cause across props, function signatures, record fields, and class members; the report explains the type likely exists upstream. Author-written `any` is unchanged. Benchmark: blend beta pin beta.5 -> beta.8 (tracks the `beta` dist-tag) — upstream fixed the shadowed ../tokens import, so foundationTokens & the getAvatarTokens family now bind their real types; beta.8 scores 222/222 usable. Also removes stray sandbox probe files committed in #131. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Benchmark: ✅ PASS
|
commit: |
…mplete-sanitization) The three markdown-table cell sites in report.mjs escaped `|` but not a preexisting `\`, which could eat the added escape and break the row. One shared mdCell helper escapes backslash first, then pipe. No output changes on any golden or benchmark baseline. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
jagguji
added a commit
that referenced
this pull request
Jul 10, 2026
…follow-up) (#134) Follow-up from the #132 review (finding 2). TypeScript has a second any-flavored intrinsic — `unresolvedType` (`intrinsicName === 'unresolved'`) — used by some unresolvable-reference paths. The #107 detection now matches both `error` and `unresolved`, so a sibling path reaching classify gets the same 🛑-flagged placeholder instead of the silent `'a` salvage. No author-written `any` carries either intrinsic, so there is no false-positive risk: all 90 goldens and all 9 benchmark baselines are byte-identical. The `error-any-unresolved` fixture remains the executable contract; `docs/TYPE_MAPPING.md`'s ERROR-`any` row now names both intrinsics. For the other #132 review findings: the report.mjs escaping (finding 1) was already fixed in #132 itself (`mdCell`, CodeQL green pre-merge); the report-bucket blindness reminder (finding 3) is now tracked as #133. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #107.
Error-
anyfrom unresolvable imports (#107)A broken import in a package's
.d.ts(blend beta.5'sThemeTypethrough the shadowed../tokenspath) makes the checker's error type masquerade asany. The #31 implicit-generic salvage then emitted a silent type variable —ThemeProvider's~foundationTokens: 'a=?withdefects=0— violating both contract rules at once ('ais reserved for round-trip generics; nothing may degrade unflagged).errorintrinsic, checked before the salvage — so an author-writtenanyin the source can never false-positive (legitAny: ('a)keeps the implicit generic; all 89 pre-existing goldens byte-identical).stringplaceholder with actionable wording ("declared type DOES NOT RESOLVE — broken import in the package's .d.ts; fix the upstream import or hand-match") across all four surfaces: component props, function params/returns, record fields, class members.ThemeType) — hand-matching is a seconds-long fix. react-rating'sitemShapesnow carries the precise cause.Fixture:
error-any-unresolved(blend's exact shadowed-module shape + author-anycontrast).Benchmark: blend beta pin
0.0.37-beta.5→0.0.37-beta.8Tracks the
betadist-tag. Upstream fixed the shadowed../tokensimport between the two, sofoundationTokensand thegetAvatarTokensfamily now bind their real types (TokensTypes.foundationTokenType) with zero generator changes — exactly the self-correction path this fix's flags point at. Blend beta.8 scores 222/222 usable, 0 broken / 0 review / 0 loose, compiles clean. (The #1576typeof-statics duplicates remain — not yet fixed upstream.)Also removes the stray
test/sandbox/src/probe/files accidentally committed in #131.Verification
anyfixtures and all pre-existing goldens unchanged🤖 Generated with Claude Code