Problem
cora callers <symbol> returns "No callers found" for symbols that do have incoming call edges. The reverse call graph exists (confirmed via cora impact and cora trace), but callers fails to traverse it.
Reproduction
# Symbol exists in index
cora explore 'verify_signature'
# → Found 5 symbols (including verify_signature at webhook.rs:9)
# Trace shows 261 outgoing call nodes — symbol is indexed
cora trace verify_signature
# → Trace from 'verify_signature' (calls, 261 nodes)
# Impact (reverse traversal) works — finds 4 affected
cora impact verify_signature --depth 2
# → 4 affected (verify_signature_valid, verify_signature_invalid, etc.)
# But callers returns empty
cora callers verify_signature
# → "No callers found for 'verify_signature'."
Same issue with:
cora callers generate_webhook_nonce → empty
cora callers verify_token → empty
cora callers create_api_key → empty
Expected Behavior
cora callers <symbol> should return all symbols that call the given symbol (reverse CALLS edge traversal). Since cora impact (which also does reverse traversal) works, the edge data exists — callers should produce the same results.
Root Cause Hypothesis
- FQN resolution mismatch —
callers may resolve the symbol to a different FQN than impact, causing the reverse lookup to miss
- Edge direction —
callers may look for CALLED_BY edges that don't exist (edges are stored as CALLS only, reverse traversal is needed)
- Short name vs FQN —
callers may require exact FQN (cora_generation::webhook::verify_signature) but explore returns short names
Environment
- cora 0.8.1
- Index: 592 symbols, 1757 CALLS edges
- Tested with both CLI and MCP (
cora.find_callers) — same empty result
Problem
cora callers <symbol>returns "No callers found" for symbols that do have incoming call edges. The reverse call graph exists (confirmed viacora impactandcora trace), butcallersfails to traverse it.Reproduction
Same issue with:
cora callers generate_webhook_nonce→ emptycora callers verify_token→ emptycora callers create_api_key→ emptyExpected Behavior
cora callers <symbol>should return all symbols that call the given symbol (reverse CALLS edge traversal). Sincecora impact(which also does reverse traversal) works, the edge data exists —callersshould produce the same results.Root Cause Hypothesis
callersmay resolve the symbol to a different FQN thanimpact, causing the reverse lookup to misscallersmay look forCALLED_BYedges that don't exist (edges are stored asCALLSonly, reverse traversal is needed)callersmay require exact FQN (cora_generation::webhook::verify_signature) butexplorereturns short namesEnvironment
cora.find_callers) — same empty result