v0.43.13
v0.43.13 — Resolver, sanity, and query correctness fixes
Ten patch releases' worth of correctness fixes to dekko's resolver, sanity, and query/context commands, plus one CI/pool-hang hardening pass and one packaging fix. No breaking changes; no schema changes to map.json.
Fixed
Resolver correctness
- Cross-language false matches: same-named symbols in unrelated languages no longer win a confident wrong resolution — candidates are now filtered by language (and language-family, e.g. C/C++, JS/TS/TSX) before falling back to the unfiltered set.
dekko ambiguousmisfiled noise-suppressed builtin-method calls (trim,.then(),get,resolve,create, ...) as genuine ambiguity, inflating reported ambiguity rates 2-3x on JS/TS repos.affected/worksetfalse-flagged tests via a Node builtin module-name collision (e.g. a repo's ownserver/path.tsmatching Node'spath).- Heritage resolution (
query subtypes/supertypes) lost same-named C/C++ base classes and Rust trait implementors toambiguous— whole-file#includehints and crate-aware import matching are now threaded into heritage resolution the same way call resolution already had them. - Rust resolver now follows
crate::Xinto custom-named crate roots ([lib] path = "src/foo.rs") and resolves bare cross-crateuse other_crate::X;imports against sibling workspace crates instead of assuming external.
dekko sanity
- Truncated grep sweeps (>5,000 lines) no longer silently report a false zero count; snippets are now length-capped; added
CAUSE_IMPORT_STATEMENTclassification for both single-line and multi-line destructured imports; own-definition-line exclusion now covers every same-named symbol, not just the query target.
dekko query/dekko context
- Importer listings now show the real bare import source instead of the resolver-internal
module/nameencoding. - Module-level pseudo-caller rows always show per-site line numbers when recorded, not just under
--sites. - The JS/TS caveat note is now conditional on the repo actually containing JS/TS.
Reliability
dekko map --jobs 0no longer hangs indefinitely past its documented 600s timeout under concurrent load — everyProcessPoolExecutorcall site now tears its pool down without waiting on wedged workers on timeout.dekko daemon stopno longer falsely reports success (exit 0) when the daemon is confirmed alive and busy.- README logo now renders correctly on PyPI (absolute asset URLs, not relative).
Added
dekko map --forceto explicitly opt into overwriting an existing full-repo map with a narrower subpath-scoped one (previously silent; now refused by default).scripts/sync_plugin_version.py+ pre-commit hook + release-workflow check, so the Claude plugin manifests can't drift out of sync withpyproject.tomlagain.