Repository navigation
fix(pair): a paired thread briefs its executor instead of fanning out - #652
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
rynfar
force-pushed
the
fix/pair-blocks-fanout
branch
from
September 18, 2026 21:06
a127986 to
9758f84
Compare
Contributor
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
This branch was successfully deployed
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.
What
A paired thread can no longer fan out with Pylon's own delegation tools.
delegate_threadrefuses withDelegationPairedErrorwhile the thread's pair executor exists and is not archived. The message tells the agent to brief the executor withpair_handoff, and to ask the user to turn Pair off if the work really needs parallel threads.read_delegation_skillreturns the pair protocol on a paired thread instead of the fan-out workflow.delegate_threadis refused while paired and that a user asking to "delegate" or "use delegation" means the executor.delegated_thread_status,delegated_thread_result,send_to_delegated_threadandinterrupt_delegated_threadstill work, so children started before the pair can be wound down.Why
Seen in real use on nightly
.201. A Claude Opus lead was paired with an Antigravity executor. The user then told it "you can resume using delegation". It looked up the delegation tools, calledread_delegation_skill, started two Antigravity children withdelegate_thread, and never sent its executor a single brief.Pairing already denied the provider's own subagents, but left Pylon's fan-out toolkit fully available to the same lead, and the word the user naturally reached for pointed straight at it. One pair is supposed to mean one executor.
How
Both checks read the projection (
pairExecutorThreadId(thread)exists andarchivedAt === null) rather than the session'spaircapability, so a pair started mid-session is covered immediately. Turning the pair off archives or deletes the executor, which lifts the refusal.Verification
vp test runonapps/server/src/mcp/toolkits,RuntimeInstructions.test.tsandapps/server/src/orchestration: 972 passed. New tests written first and seen failing, the first by actually creating the fan-out child: the refusal and its message, no commands dispatched, the skill swap, and both lifted again once the executor is archived; plus the protocol wording.t3: 0 errors. Lint, format andvp run knip:checkclean.Part of #622.
Model: Claude Fable 5.1, in Pylon via the Claude Code harness.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.