Skip to content

fix(web): don't re-run the bundled fallback sweep when web-parallel is explicitly disabled - #44457

Closed
AIalliAI wants to merge 1 commit into
NousResearch:mainfrom
AIalliAI:fix/44433-fallback-disable-check
Closed

fix(web): don't re-run the bundled fallback sweep when web-parallel is explicitly disabled#44457
AIalliAI wants to merge 1 commit into
NousResearch:mainfrom
AIalliAI:fix/44433-fallback-disable-check

Conversation

@AIalliAI

Copy link
Copy Markdown
Contributor

Follow-up to #44433, implementing the non-blocking nit from review (#44433 (comment)) that merged before it could be addressed.

Problem

_ensure_web_plugins_loaded uses get_provider("parallel") is None as the failed-sweep sentinel. With plugins.disabled: [web-parallel] that lookup stays None by design — so the full direct-registration fallback (bundled-dir walk, module imports, provider re-instantiation) re-ran on every web_search/web_extract call even when discovery was perfectly healthy, and each pass overwrote other providers' live registry entries with fresh bundled instances (clobbering e.g. a same-name user plugin or per-instance HTTP session state).

Fix

Treat an explicit web-parallel disable as intentional absence, not a failed sweep — with one carve-out: an empty registry still always triggers the sweep. A failed sweep registers nothing at all (anything escaping _discover_and_load_inner comes from the scan phase, before any plugin registered), so emptiness remains the reliable failure signal that keeps the other bundled backends recoverable even when parallel is disabled.

Also touches up the stale plugins/web/parallel/plugin.yaml description ("Requires PARALLEL_API_KEY") — the backend works keyless via the free hosted Search MCP, which is the premise of #44433's keyless-default guarantee.

Tests

  • test_no_resweep_when_parallel_explicitly_disabled — healthy discovery + explicit disable: the fallback never runs across repeated calls, and live registry entries are not replaced (asserts identity). Fails on current main, passes with the fix.
  • test_empty_registry_still_sweeps_when_parallel_disabled — failed sweep + explicit disable: other bundled backends are still restored, parallel stays off (pins the carve-out).

tests/tools/test_web_keyless_default_fallback.py + tests/tools/test_web_providers.py + tests/hermes_cli/test_plugins.py: 107 passed. Ruff clean.

🤖 Generated with Claude Code

…s explicitly disabled

Follow-up to NousResearch#44433. The keyless-default check used get_provider('parallel')
is None as the failed-sweep sentinel — but with plugins.disabled:
[web-parallel] that lookup stays None by design, so every web_search /
web_extract call re-paid the full direct-registration sweep and overwrote
live registry entries with fresh bundled instances.

Treat an explicit web-parallel disable as intentional absence. An empty
registry still always triggers the sweep: a failed sweep registers nothing,
so emptiness remains the recovery signal for the other bundled backends.

Also fixes the stale web-parallel plugin.yaml description (the backend works
keyless via the free hosted Search MCP since NousResearch#44433's base behavior).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@alt-glitch alt-glitch added type/bug Something isn't working tool/web Web search and extraction P3 Low — cosmetic, nice to have labels Jun 11, 2026
@AIalliAI

Copy link
Copy Markdown
Contributor Author

Requesting maintainer review — this is ready to land from my side. Standalone fork CI is pending first-run approval here; the rollup branch in #44061 carrying this session's batch is fully green on upstream CI (all test shards, typecheck, e2e).

@teknium1

Copy link
Copy Markdown
Contributor

Closing as superseded by #46350, which has now been merged.

#46350 removes the keyless/free Parallel Search MCP fallback entirely and restores the keyed Parallel behavior, so follow-up fixes that depend on the keyless Parallel default are no longer applicable.

1 similar comment
@teknium1

Copy link
Copy Markdown
Contributor

Closing as superseded by #46350, which has now been merged.

#46350 removes the keyless/free Parallel Search MCP fallback entirely and restores the keyed Parallel behavior, so follow-up fixes that depend on the keyless Parallel default are no longer applicable.

@teknium1 teknium1 closed this Jun 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P3 Low — cosmetic, nice to have tool/web Web search and extraction type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants