Replies: 1 comment
|
+1, and three things that may be useful for the design. A second shape of trigger. In #5926 the entry that aborted boot was a current plugin whose registration path hit a first-party defect, not a version pin. So the motivating case is not limited to stale A failure class a loader-level flag cannot see. At Two details from the current code (
One more thing about the config shape: the Loader is mounted programmatically - Agreed on the precedent: Disclosure of scope: loader, inventory and boot lines read from the |
Uh oh!
There was an error while loading. Please reload this page.
Problem
When any loader entry fails to apply,
@deepseek-ai/cordis-plugin-loaderthrows immediately and rolls back, so the entire profile fails to boot — core included, together with every healthy plugin.Evidence (
cordis-plugin-loader/lib/index.js):Why this hurts (real scenario)
A core upgrade takes down the whole harness as soon as one third-party plugin has not caught up.
Third-party plugins pin exact core version lines through
peerDependencies, e.g.Because of prerelease semver rules,
0.1.5-rc.1does not satisfy^0.1.2-rc.1. So upgrading the core0.1.2-rc.1 -> 0.1.5-rc.1makes such plugins fail to load, and since the loader is fail-fast, the server does not start at all — not just the outdated plugin, everything is down.The user is then forced to either stay on an old core (missing new models/features such as
deepseek-flash/ V4.1 Flash), or hand-disable every incompatible plugin before every upgrade.Proposed behavior
The core is the subject; a single plugin failure should not take down the harness. An opt-in tolerance mode would fix it, e.g.
Behavior: an entry that throws is disabled with a warning (logged and surfaced in the plugin inventory / settings UI), the remaining entries apply normally, and the app boots. Strict fail-fast stays the default, so this is backward compatible.
There is precedent inside the repo:
@deepseek-ai/dsh-mcp-clientalready exposesfailOnStartupError(defaultfalse) so an unreachable MCP server does not block activation.Additional value
All reactions