Skip to content

v1.108.286 — Three surfaces that advertised a product we were not running

Choose a tag to compare

@jgravelle jgravelle released this 18 Aug 23:06
· 15 commits to main since this release

A config comment describing a precedence the resolver did not use, a tool schema naming three key-requiring embedding providers while hiding the free bundled one, and a guide listing a tool the same process refuses to dispatch. In each case the code was fine and the thing describing it was not.

#488 — an explicit local embedding model now outranks the zero-config default

_detect_provider returned the bundled ONNX encoder at priority 0, so once [local-embed] was installed embed_model / JCODEMUNCH_EMBED_MODEL was read after the early return and changed nothing — no warning, no log line, no field in any response. The config comment was the only place the key was documented and it described the opposite precedence.

Only the free, on-machine provider was promoted. Gemini and OpenAI deliberately stay below the bundled encoder. embed_model is free and local, so promoting it costs a re-embed; promoting a cloud provider costs money and ships your corpus off the machine. A machine with an ambient OPENAI_API_KEY still embeds locally.

embed_repo now reports provider_reason, and provider_skipped when an explicit setting could not be honoured.

Migration: if you have [local-embed] and embed_model set, your next embed_repo switches provider. v1.108.285's fix detects that, forces the rebuild, and reports model_changed_from.

#489 — the schema advertised three key-requiring providers and hid the free one

The semantic parameter description and search_symbols' no_embedding_provider error named only JCODEMUNCH_EMBED_MODEL, GOOGLE_API_KEY and OPENAI_API_KEY — two of which bill per call — and omitted the bundled encoder that outranks them.

That description is not documentation a human browses; it is the tool schema, and the only information an agent has when deciding whether to set semantic: true. An agent reading "requires one of three env vars" against an environment with none of them set concludes semantic search is unavailable — on a machine where it works, for free. No error, no warning, nothing degraded to notice; the capability simply goes unused.

Five sites now derive from one source, with the bundled encoder leading. The report named three; a ratchet found five.

#495 — the guide advertised a tool the same process refuses to run

jcodemunch_guide built its tool list from a static constant without consulting disabled_tools. That key ships as ["test_summarizer"], so at shipped defaults the guide named a tool call_tool then rejected before the handler ran. An agent reads the name, calls it, gets an error.

The filtering already existed — cli/init.py received it in an earlier fix and this second generator never did. It now reuses the same helper rather than carrying a third copy.


Upgrade: uv tool install --upgrade jcodemunch-mcp or pip install -U jcodemunch-mcp

Reported by @pnm-jgb (#488, #489) and @rknighton (#495).

Suite: 7976 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 0e0a9ac.