cairntrace produces timestamped video evidence of browser interactions. codemap provides structural code intelligence that can pre-filter where cairntrace's evidence connects to the codebase — "this UI element maps to this component, which is called by these handlers."
cairntrace runs produce evidence bundles (screenshots, OCR text, timeline). The
codemap_annotate MCP tool can pin a cairntrace finding to a specific code symbol:
codemap_annotate(symbol="HandleSubmit", source="cairntrace", note="fails on empty form", data=<JSON>)
When cairntrace's --connect (fcheap connect / vecgrep) surfaces code candidates,
codemap's graph can narrow them:
- cairntrace finds the UI element text in the evidence
- vecgrep/codemap_semantic finds the matching component
- codemap_callers shows what triggers that component
- codemap_impact shows the blast radius of a fix
The fcheap index cache is orthogonal to cairntrace — cairntrace stashes its own
evidence bundles in fcheap, and codemap stashes its index snapshots. Both use the
same fcheap vault with different tag prefixes (codemap-cache vs cairntrace's
tags). The two coexist without conflict.
codemap_symbol_at: resolve a file:line (from a stack trace or error) to the enclosing symbol — the entry point for joining cairntrace evidence onto the code graphcodemap_callers/codemap_impact: structural expansion from a symbolcodemap_annotate: pin cairntrace evidence to a symbol (persistent across reindex)
cairntrace answers "what happened in the browser" and codemap answers "what code is responsible." Together they close the loop from observed behavior to root cause.