Four defects, all reported within a minute of each other, and every one probes a surface adjacent to something v1.108.286 shipped. Each fix is the same sentence — ask the authority instead of reproducing its logic — and each had been applied only where it was reported.
#506 — ### Quick start could still recommend a disabled tool
v1.108.286 filtered the guide's ### All tools list. ### Quick start was six fixed strings assembled afterwards that no filter reached, so with search_text disabled the guide still said, as a numbered instruction, to call it.
Steps are data now: one naming a tool that won't dispatch is dropped whole and the remainder renumbered, and the shared index_folder / index_repo continuation is filtered per-tool.
#509 — index_file could write a file into another repository's index
index_file picked the deepest indexed source_root containing the file and never established it was the same repository. resolve_repo stopped doing this in v1.108.285; this path still did — and here the consequence is a write into an index built from a different repository, not a wrong read.
The check is imported from resolve_repo rather than reimplemented, which also inherits its boundary: a path inside a submodule still resolves to the parent.
#508 — index_file ignored the project's config
index_file passes repo= to is_secret_file, the context-provider gate and the language gate. Nothing on that path ever called load_project_config, so all three resolved to global config and the project's .jcodemunch.jsonc was inert.
#507 — both generated policies could name tools the server does not carry
_get_active_tools rebuilt the active set from tool_profile and the baked _PROFILE_TIERS, missing three inputs tools/list reads: the session tier override, tool_tier_bundles, and the languages gate on search_columns. Measured 70, 15 and 1 unmounted names.
The session case needs no configuration — announce_model writes the session tier, so an agent that announces a small model and then reads the guide arrives there on its own. The other two reach init, whose output is written into your CLAUDE.md and stays there.
Upgrade: uv tool install --upgrade jcodemunch-mcp or pip install -U jcodemunch-mcp
No migration. index_file on a file inside a nested independent repository now refuses and names the repository to index instead.
All four reported by @rknighton, each with a deterministic reproduction and a control.
Suite: 7999 passed, 17 skipped, 0 failed on 3.10 and 3.13 alike — same total and same skip split. ruff check src/ clean. CI green on 932209e.