From the blend-output audit (root-caused with a standalone TS probe).
Problem
When an imported type resolves to any because the import itself is broken (blend: ThemeType reaches 10 modules through the shadowed ../tokens path — see #94 discussion), bindgen treats it as author-written any:
Contract violations: rule 4 ('a only for a genuine round-trip generic) and flag-don't-fake.
Suggested fix
Distinguish error-any (checker error type from an unresolvable import) from author-written any; flag it 🔍/🛑 in the report and emit the commented placeholder, never a silent type var. The broken-import diagnostic can name the failing module, exactly like the existing broken re-export warning.
Note TokensTypes.foundationTokenType is fully modelled — once flagged, consumers can hand-match in seconds.
From the blend-output audit (root-caused with a standalone TS probe).
Problem
When an imported type resolves to
anybecause the import itself is broken (blend:ThemeTypereaches 10 modules through the shadowed../tokenspath — see #94 discussion), bindgen treats it as author-writtenany:ThemeProvider's~foundationTokens: 'a=?— the theming entry-point prop, untyped,defects=0in the report;getTabsTokens: ('a) => …while siblinggetAccordionToken(whose import resolves) is correctly(TokensTypes.foundationTokenType) => …;string(now at least flagged🛑 contains anysince the Props dropped through nested Omit + index signature; deep records silently degrade to all-string; typeof-module & tuple-union fallbacks (via @juspay/blend-design-system) #98 record-field markers, but the report bucket still reads clean).Contract violations: rule 4 (
'aonly for a genuine round-trip generic) and flag-don't-fake.Suggested fix
Distinguish error-
any(checker error type from an unresolvable import) from author-writtenany; flag it 🔍/🛑 in the report and emit the commented placeholder, never a silent type var. The broken-import diagnostic can name the failing module, exactly like the existing broken re-export warning.Note
TokensTypes.foundationTokenTypeis fully modelled — once flagged, consumers can hand-match in seconds.