MCP tool results used Markdown ATX headings (##/###/####) for section
headers — the status summary, each search hit, every file section in an
exploration — which Markdown-rendering clients (e.g. the Claude Code
VSCode extension) blow up to H1–H4 font size, filling the transcript with
oversized lines (worst on search/explore, where the noise scales with
result count). Swap them all for bold labels, which render at body size
while keeping the same structure. CLI/TTY output (ContextBuilder) is
unchanged — the issue notes it's fine.
The format is parse-coupled, so kept in sync:
- The explore truncation boundary and the offload chunker
(reasoning/reasoner.ts) both key off the per-file header, now a unique
`**`-prefixed marker emitted via a shared fileSectionHeader() helper.
- Updated the offload strip regexes and switched the opt-in report-style
prompt off ATX headings (same client, same rendering issue).
- Updated test helpers (sectionFor, sourcedFiles, the callers
section-boundary scan) that scanned the old markers.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Makes codegraph_node a drop-in faster Read for indexed source files (file-read mode: <n>\t<line> like Read, offset/limit, + blast-radius header; symbolsOnly for the map). Fixes the old file-view dropping imports/line-numbers. #383/#527 preserved. Validated by A/B: explore/node already return source + line numbers, so Read=0 when used. Includes the A/B eval harness scripts. Full suite green (1270).
* feat(mcp): steer agents to codegraph during implementation, not just Q&A
Two changes targeting agents that reach for Read during edits instead of codegraph:
1. Reframe the agent-facing steering (server-instructions + codegraph_node/explore
descriptions): drop "consult BEFORE ... not during"; position codegraph_node as
the Read upgrade for a named symbol (verbatim current on-disk source, safe to
Edit from, + caller/callee trail), explore PRIMARY / node SECONDARY, with the
"cached intelligence — better context, fewer tokens" framing.
2. File-view mode: codegraph_node now accepts a `file` with no `symbol` and returns
that file's symbol map + graph role (its dependents), plus verbatim bodies with
includeCode — so it can displace a path-keyed Read, not just a symbol lookup.
Resolves a path or basename; dedups nested members; budget-capped.
To be A/B'd on an implementation task before shipping (per the retrieval doctrine:
steering changes must be measured, not assumed).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs(changelog): note codegraph_node file-view + implementation steering
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>