Skip to content

cora callers returns empty for symbols that have reverse edges in the graph #381

Description

@ajianaz

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

  1. FQN resolution mismatchcallers may resolve the symbol to a different FQN than impact, causing the reverse lookup to miss
  2. Edge directioncallers may look for CALLED_BY edges that don't exist (edges are stored as CALLS only, reverse traversal is needed)
  3. Short name vs FQNcallers 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions