mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-11-09 09:11:00 +08:00
* fix(resolver): disambiguate qualified cross-file calls by full namespace tail cbm_registry_resolve reduced a package/namespace-qualified callee (Foo::Bar::sub) to its bare simple name before the multi-candidate name lookup. When that bare name was defined in several packages, the bare-name scorer (best_by_import_distance) picked one winner deterministically and routed every caller to it — collapsing distinct packages' same-named subs onto a single definition and orphaning the rest. Impact is heaviest for Perl, which has no cross-file LSP and relies entirely on this generic resolver, but the defect applies to any "::"- or "."-qualified callee. Add qualified_suffix_match: when a callee is qualified and its bare name has multiple candidates, pick the sole candidate whose qualified tail matches at a segment boundary (normalizing "::" to "."). Returns the unique match with a new high-confidence "qualified_suffix" strategy; falls through to the existing bare-name scoring when zero or several candidates match. Language agnostic — bare callees contain no separator and are unaffected. Adds resolve_qualified_disambiguates_same_name covering per-package routing of a name defined in three packages, plus the bare-call (no-disambiguation) case. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Shane McCarron <shane.mccarron@corvexconnect.com> * test(resolver): address QA round 1 (qualified-suffix edge coverage) Harden resolve_qualified_disambiguates_same_name and add a new test per the QA round 1 advisory notes, guarding the fall-through paths against silent regression: - dotted callee form (App.Beta.save) resolves via qualified_suffix - qualified callee matching no candidate tail falls through (not qualified_suffix) - resolve_qualified_ambiguous_tail_falls_through: two candidates sharing the same qualified tail are ambiguous → fall through to bare-name scoring Test-only; no behavior change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Shane McCarron <shane.mccarron@corvexconnect.com> --------- Signed-off-by: Shane McCarron <shane.mccarron@corvexconnect.com> Co-authored-by: Shane McCarron <shane.mccarron@corvexconnect.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>