fix(reasonix): stop dropping the [[plugins]] concurrency and auto_start keys - #2978
Merged
Merged
Conversation
…rt keys Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019yLN6CVqeZ8HCrjRb9o7mK
…tes and tests Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019yLN6CVqeZ8HCrjRb9o7mK
auto_start = false does not defer a server, it drops it from Reasonix's enabled set, so its tools never reach the model and only a durable mcp-activation.json override brings it back. Correct the field-list comment and the file-formats note, and record why auto_start stays a passthrough instead of being deep-mapped onto canonical disabled. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019yLN6CVqeZ8HCrjRb9o7mK
Owner
Author
|
Merged. Thanks — this ships the two Two follow-ups stay on #2599: the hook |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Reasonix's
[[plugins]]entries accept two scheduling keys that rulesync'sREASONIX_PLUGIN_FIELDSallowlist does not carry:concurrency—"parallel"or"serial".serialstops two calls to the same server from running at once across the whole session, which is what keeps sub-agents sharing one stdio process from interleaving on its state. With no explicit value Reasonix substring-matches the server name against a known-stateful list (browser,playwright,puppeteer,chrome,chromium,selenium) and serializes a match; an explicit value always wins.auto_start(*bool) —falseswitches the server off:Config.EnabledPluginsdrops it from the enabled set, so its tools never reach the model and Reasonix reports it asdisabledrather thandeferred. Only a durable override inmcp-activation.jsonoutranks the file value.Because
fromRulesyncMcprewrites the wholepluginskey throughapplySharedConfigPatch, this is not merely "cannot be authored from.rulesync/mcp.json": a value written by hand intoreasonix.tomlis deleted on the next generate, silently. For these two keys that deletion changes behavior: dropping the key does not fall back to a neutral default, it hands the decision back to the server's name. Aserialdropped from a stateful server the name list does not catch puts it on the parallel path; aparalleldropped from a server the list does catch forces it serial; and a droppedauto_start = falseswitches a deliberately disabled server back on.Change
Both keys join
REASONIX_PLUGIN_FIELDSas passthrough fields, exactly like the sibling timeout keys. The write path and the import path both iterate that list, so authoring, import and round-trip all follow from the one addition. Neither key has a canonical counterpart, so no deep mapping is introduced.Tests cover export, import, and a round trip. Each pins a value that actually overrides what Reasonix would infer on its own —
parallelon a server namedbrowser,serialon one the stateful-name list does not catch, andauto_start: false, the value a truthiness filter would drop.docs/reference/file-formats.mdgains both keys in the Reasonix MCP note.Verification
Confirmed against the upstream primary source rather than the docs prose:
internal/config/plugin_entry.goatv1.38.3declaresConcurrency string \toml:"concurrency"`andAutoStart *bool `toml:"auto_start"`.docs/SPEC.md§3.16 documents the concurrency semantics and the stateful-name default;docs/PLUGIN_PACKAGES.mddocumentsauto_start=falsefor imported servers, andinternal/config/config.go(ShouldAutoStart/EnabledPlugins) plusinternal/cli/mcp_manager.go(thedisabledvsdeferredstatus split) are what settle thatauto_start = false` disables rather than defers.concurrencyhas no canonical counterpart.auto_startoverlaps canonicaldisabled, but it is left as a passthrough here rather than deep-mapped: Reasonix's activation store can flip a server independently of the file, so the two are not interchangeable, and deciding which wins when a canonicaldisabledand a hand-writtenauto_startdisagree — in both the write and the import direction — is a separate call left on #2599.pnpm cicheckpasses (411 test files, 11158 tests).Scope
Refs #2599 — this closes the two MCP gaps recorded in that issue's re-check comments. The issue stays open for its gap 3 (the hook
cwd/envfields), which needs a maintainer decision on whethercwdbecomes a shared canonical hook key or a Reasonix-only passthrough.🤖 Generated with Claude Code
https://claude.ai/code/session_019yLN6CVqeZ8HCrjRb9o7mK