Skip to content

work with fusion's sidekick; reject fusion-* role slugs - #13

Merged
caelaxie merged 1 commit into
mainfrom
fusion-sidekick-compat
Oct 20, 2026
Merged

caelaxie merged 1 commit into
mainfrom
fusion-sidekick-compat

Conversation

@caelaxie

Copy link
Copy Markdown
Contributor

Summary

pstack 0.15.28 never mentions Fusion. On a Fusion chat the lead gets a sidekick tool, and Devin tells it "Do not use subagents other than sidekick unless the user explicitly asks you to." (string from the devin 3000.11.3 binary). Without guidance, a lead running /pstack:poteto-mode could split one unit of work between the sidekick and pstack subagents, run it twice, or skip pstack's panels.

  • Single hands-on delegates go to the sidekick on Fusion. That covers the code-writing delegate a playbook names, fix rounds, hillclimb attempts, a single investigation and a verification run. It runs on the sidekick's model, not the step's role line (hardest tasks included). The lead takes a change back when the sidekick can't land it. Each brief points the sidekick at poteto-mode/SKILL.md, the same way the poteto-agent profile does. Each brief also restates every directive still in force, because the sidekick keeps its context between handoffs instead of starting fresh.
  • Panels, fan-out and second opinions stay on run_subagent with their role profiles: arena runners and judges, swarm workers, reviewers, synthesizers. One sidekick can't run several agents in parallel or give an opinion from a different model. Invoking a pstack skill counts as the user's explicit ask for these subagents. The same unit of work never goes to both.
  • auto / inherit-parent on Fusion. A seat on subagent_general runs on the lead model at the lead's price, with no sidekick. The guide, poteto-help and setup-pstack now say so in their cost advice.
  • Model-family rules on Fusion (arena cross-judge, show-me-your-work reviewer) count both the lead's and the sidekick's families as taken. They prefer a family outside both, else outside the lead's.
  • fusion-* slugs are no longer valid role values. Each one names a lead and sidekick pair for the main chat, not one subagent model. devin models list prints 575 of them, so setup-pstack drops them from the detected set: its effort rule would otherwise rewrite the sidekick's effort. poteto-mode and every routed skill (arena, how, interrogate, reflect, swarm, why) treat one as a rejected slug, the same way Guard undetected rule slugs; cover cloud subagent profile gaps #4 handles undetected slugs.

Chats without Fusion are unchanged. Every behavior change only applies when the session has a sidekick tool. The poteto-mode paragraphs say so up front and end with "Sessions without a sidekick tool skip these two paragraphs". The only change that applies everywhere is rejecting fusion-* values, which a non-Fusion rule has no reason to contain.

How the subagent_general claim was checked. I ran it on devin 3000.11.3 under fusion-claude-opus-5-5-max-sidekick-swe-2-high, spawning one subagent_general that was told to make no tool calls. Its stored thinking signature has the same format as the Claude lead's (CAQS…), not SWE-2's (sealed.v…). Its system prompt has no sidekick tool and no Fusion guidance.

Not touched: the plugin.json version (a release decision, as in #4).

Test plan

  • CI's "Validate plugin" script, run locally with bun: Validated 56 skills, 2 agents, and 23 playbooks.
  • Every new behavior sentence is gated on Fusion or the sidekick tool; checked against the word diff
  • Fusion chat, /pstack:poteto-mode on a small Feature task: the implementation goes to the sidekick, and /pstack:arena or /pstack:interrogate still spawns its panel with run_subagent
  • Non-Fusion chat, same task: the delegate still runs on the pstack-<slug> profile from feature, refactoring
  • /pstack:setup-pstack on a Fusion chat never offers a fusion-* slug and explains the sidekick split

Generated with Devin

On Fusion the lead gets a `sidekick` tool and Devin tells it to use no
other subagent unless the user asks. pstack had no guidance for that, so
delegation could split between the sidekick and pstack subagents or run
twice. Single hands-on delegates now go to the sidekick, while panels,
fan-out and second opinions stay on `run_subagent`. All of it is gated
on the `sidekick` tool, so chats without Fusion behave as before.

A `fusion-*` slug names a lead and sidekick pair for the main chat, not
one subagent model, so setup-pstack drops them and every routed skill
treats one as a rejected slug.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

@caelaxie caelaxie left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

verdict: changes requested (comment review only because github won't let the author account request changes).

scope is fine. this is a harness-only fix in the same lane as #4: devin's fusion prompt tells the lead to use no subagent but sidekick, and devin models list prints fusion-* pairs that would otherwise land in role lines. every new behavior sentence is gated on the sidekick tool, upstream text around it is untouched, no version bump, ci green, no open issue to link.

blocking:

  • harness proof. the body only has the local validate run; the three behavior boxes are unchecked. need, on head e602182: devin plugins install (the --local wrapper pinned to the full head sha is fine) + devin plugins list showing pstack, and the installed poteto-mode/setup-pstack text showing the new paragraphs. then exercise at least one changed skill: a fusion chat where /pstack:poteto-mode hands the delegate to sidekick while /pstack:interrogate (or arena) still spawns its panel on run_subagent, or /pstack:setup-pstack dropping fusion-* from the detected set. if fusion or live turns are blocked by auth, paste the verbatim error plus the install, list, and installed-text proof, same precedent as before.

minimum-changes trims (inline): two additions aren't needed for the harness; drop them so the port stays closer to upstream.

- **Using `/pstack:arena` for coverage.** `/pstack:arena` repeats one design or code brief, then picks a base and grafts the best parts. `/pstack:swarm` partitions slices or declared race arms and aggregates one report.
- **Accepting every review comment.** Bots and humans both file real catches and noise in one list. `/pstack:interrogate` sorts findings into act-on and dismissed buckets with reasons, and you can override either way.
- **Treating `auto` as a model slug.** `auto` and `inherit-parent` mean "omit the model field so the subagent inherits the parent chat model." [Setup](./01-setup.md) covers the roles.
- **Putting a Fusion model in a role.** A `fusion-*` slug names a lead and sidekick pair for the main chat, so pstack rejects it and falls back to the role's default. Pick the lead's or the sidekick's own slug, like `claude-opus-5-5-max` or `swe-2-high`.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not needed: the skills already reject fusion-* and fall back with a notice, so this pitfall bullet is extra divergence from upstream's list. drop it.

If cost is the worry, say where the tokens go and how to spend fewer. pstack spends extra tokens on subagents and review panels. Rerun `/pstack:setup-pstack` and pick a smaller budget or cheaper models. A role set to `auto` or `inherit-parent` runs on the chat's model, which saves tokens when the chat runs on Auto or a cheaper model. On Fusion it can run on the lead model, so pinning the sidekick's slug costs less. A shorter panel list runs fewer subagents, one for each entry. Save `/pstack:poteto-mode` for work that needs rigor.

This is the Devin port of pstack. Its skills use the Agent Skills format, its subagents run on Devin's `run_subagent`, and per-role models work through the `pstack-<slug>` profiles `/pstack:setup-pstack` writes.
This is the Devin port of pstack. Its skills use the Agent Skills format, its subagents run on Devin's `run_subagent`, and per-role models work through the `pstack-<slug>` profiles `/pstack:setup-pstack` writes. On Fusion, a step that hands one agent hands-on work goes to the sidekick, and panels and fan-out stay on `run_subagent`.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this repeats the poteto-mode fusion paragraphs in the port note. the cost sentence on line 44 is enough here; drop the added sentence and keep this line identical to main.

@caelaxie
caelaxie merged commit 138d792 into main Oct 20, 2026
1 check passed
@caelaxie
caelaxie deleted the fusion-sidekick-compat branch October 20, 2026 03:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant