v0.17.0 — quiet by default + tighter routing instructions
Two-part SessionStart context-cost reduction + targeted tool-description tightening, validated by routing_bench.
Highlights
- SessionStart
project_mapinjection: OFF by default (was tied to adopted state). The decision table + on-demandproject_mapMCP tool + per-tool descriptions cover every workflow the dump used to support; paying ~2.3 KB/session is wasteful even pre-adopt.- Opt in with
CODE_GRAPH_VERBOSE_HOOKS=1. - Legacy
CODE_GRAPH_QUIET_HOOKS=0/1still wins for backward compat.
- Opt in with
- MCP
instructionsfield trimmed 1418 → ~700 B by dropping the 10 per-tool decision rows that already live in tool descriptions and inMEMORY.md → plugin_code_graph_mcp.md. What remains: the boundary signal (which 5 advanced tools are CLI-only, what Grep/Read still cover) and the pointer to the adopted decision table. - Tool description tightening (LLM-visible):
semantic_code_search: now adds "If module path is known, prefer module_overview" — closes the path+concept routing ambiguity.find_references: now adds "For plain literals (string/regex), prefer Grep" —find_referencesonly tracks defined-symbol usage.
Verification
cargo test --release --test routing_bench -- --ignored against anthropic/claude-sonnet-4.5 via OpenRouter:
P@1 = 21/22 = 95.5% (baseline v0.16.7 = 19/20 = 95.0%)
Both new v0.17.0 regression guards passed. Single miss is a pre-existing oracle item (EmbeddingModel struct definition → ast_search vs get_ast_node; semantically defensible — ast_search returns nodes by name+kind), not introduced by this release.
Compat
- v0.9.0 escape hatches preserved via
CODE_GRAPH_QUIET_HOOKS. computeQuietHooks({ adopted, env })still acceptsadopted(now ignored) — no call-site breakage.- Auto-update: existing installs will pick this up via the next SessionStart auto-update cycle.
Full prose changelog: CHANGELOG.md.
Full Changelog: v0.16.9...v0.17.0