fix(pstack): resolve rule conflicts and read the model rule the same way - #422
Merged
Merged
Conversation
Babysit step 4 bans rebases and force-pushes inside a babysit and hands rebase-shaped work to the owner. An Autopilot-full owner runs that babysit loop on its own PR, and the same owner has to rebase on a trunk conflict, on a CI failure from trunk, and at merge prep. An owner that read both playbooks got opposite rules for the same push. - babysit step 4 names the Autopilot-full owner as the owner it defers to, and the root in Autopilot-stack. Where the playbook says to report a rebase, that owner rebases its own branch and publishes it with `git push --force-with-lease`. A standalone babysit keeps the full ban. - autopilot-full step 2 tells the owner to publish each rebase by pushing its own branch with `git push --force-with-lease` after an `ls-remote` check, and never to force-push a shared branch.
show-me-your-work calls the decision log append-only, but its end-of-run audit said to cut invented rows, drop padding, and fix a wrong row. opening-a-pr said a subagent that opens a PR does not babysit, while Autopilot-full and Autopilot-stack owners run the babysit loop by design. - The show-me-your-work audit never edits or removes a row, even an invented one. A row that records no real decision or action, or whose claim or evidence is wrong, gets a new row that supersedes it with what actually happened. The Rules list does not change. - The audit covers only this run's rows. A run that adds to a log that already has rows first logs a `start` row, which names the `ts` range of the earlier rows and names the run. The audit walks each stretch from one of this run's `start` rows to the next `start` row of another run. - opening-a-pr keeps the no-babysit rule for other subagents. An Autopilot-full or Autopilot-stack owner starts the babysit loop after its code-ready report, and the rules that hold babysitting until a whole stack is built do not apply to it.
The routed skills read the `pstack-models.mdc` rule in different ways. arena, swarm, and interrogate used their line "when present", which left open whether a missing rule and a missing line mean the same thing. how, why, reflect, and architect said "your configured" model or runners without naming the rule or its line. Only interrogate said what to do when the Task tool rejects a slug, and it said to open a PR to update the configured value, which lives in the user's own rule file. - how, why, reflect, arena, swarm, and interrogate each name their role line. `model` comes from that line, or from the default when the rule or the line is missing. `auto` or `inherit-parent` leaves `model` unset. - architect takes its runners from the `architect runners` line in place of `arena runners`, and follows arena's runner rules for alias and rejected entries. - A rejected slug falls back to the default. In a panel list, a rejected entry falls back to the default of its family, by prefix (`claude-*`, `gpt-*`, `grok-*`). A rejected default falls back to the closest valid slug of the same family. - interrogate states its alias rule on the reviewer `model` bullet, ahead of the fallbacks. - poteto-mode names the lines that the code playbooks, the hardest changes, and prose and judgment read. The defaults do not change.
multi-phase-plan named one model for the ten live lanes, and check-plan failed any plan whose lanes named another, so a plan could not follow the `swarm workers` line. - The Verification rule runs the live lanes on the `swarm workers` model, default `grok-4.7-xhigh-fast`. - The skeleton's lane sentence says `<swarm workers model>`. - check-plan accepts any model in that sentence and fails the unfilled placeholder, so a copied skeleton fails until the model is filled in.
A rule from an older setup can hold a line for a role that pstack no longer has, such as `how critics`. setup-pstack read every line as a current choice and did not say what happens to such a line. - Step 2 drops a line whose role is not in the step 5 list. - Step 3 lists each dropped line when it shows the roles.
github-actions Bot
added a commit
to SmailG/claude-cursor-plugins
that referenced
this pull request
Sep 24, 2026
… and read the model rule the same way (cursor#422) chore: sync with cursor/plugins — fix(pstack): resolve rule conflicts and read the model rule the same way (cursor#422)
rudironsoni
added a commit
to rudironsoni/cursor-plugins-for-all-harnesses
that referenced
this pull request
Sep 25, 2026
* Add Google Docs, Sheets, and Slides plugins with bundled skills Co-authored-by: Cursor <cursoragent@cursor.com> * Register docs, sheets, and slides plugins in the marketplace Co-authored-by: Cursor <cursoragent@cursor.com> * webull: require Cursor 3.22.0 (single-redirect DCR retry) and bump to 1.0.1 * feat(third_party): add Robinhood plugin * feat(third_party): add Coinbase plugin * fix(coinbase): drop client credential variables; document harness allowlist blocker * feat(third_party): add eToro Trading plugin * Add X Money plugin for Grok Bot * Set X Money plugin homepage * Point homepage at x.com/i/money * Add X Money guide skill * Rework X Money guide from server source * Drop single-use from plugin description * Update X Money plugin description * Remove backend mentions from skill * finance: pre-connect disclosure in the listing description (1.1.1) * finance: state that linked account data is synced and stored * Gate x-money marketplace entry to Grok Bot * finance: sync marketplace.json description with plugin.json * Update bundled skills * feat(pstack): port skill updates and default to Opus 5.5 and Grok 4.7 (cursor#414) Ports internal skill updates: Opus 5.5 / Grok 4.7 defaults, autopilot verification rounds, upgrade help for old model pins, and merge-prep CI wait. * fix(pstack): scrub old model names from public upgrade help (cursor#416) Replace the pre-0.15.3 model list in the pstack upgrade help with "the old default models". * docs(pstack): cut 19 more instructions Opus 5.5 does not need (cursor#419) Cut 19 more instructions that Opus 5.5 follows without the text, in interrogate, reflect, tdd, four principles, figure-it-out, and the feature, bug-fix, and refactoring playbooks. Bump pstack to 0.15.4. * fix(pstack): resolve rule conflicts and read the model rule the same way (cursor#422) Let an Autopilot-full owner rebase and push with a lease inside its babysit, keep the decision-log audit append-only, and let autopilot owners babysit their own PRs. Every routed skill reads its line in `pstack-models.mdc` the same way, plan live lanes run on the `swarm workers` model, and setup-pstack drops retired role lines. Bump pstack to 0.15.5. * finance: bank glyph logo (1.1.2) Replaces the line-art logo.svg with the filled bank glyph in the plugin's existing green (#14804A) on white, scaled to the 192x192 canvas. Version bumped so clients pick up the new asset; no server or client-version changes. * finance: match the grok.com Finance green (#009427) * finance: white glyph on the Finance green tile * finance: brighter green glyph on white, no tile * feat(third_party): add Shopify Store plugin (Grok Bot only) * shopify-store: display as "Shopify" and add the MCP-vs-toolkit routing rule * chore(harness): emit packaging after upstream Regenerate Claude, Grok, Codex, and OpenCode files from the Cursor marketplace. Co-authored-by: Rudimar Ronsoni <rudimar@outlook.com> --------- Co-authored-by: Jacob Sampson <jacob.sampson@cursor.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Jason <jasonsma27@gmail.com> Co-authored-by: Minu Palaniappan <mpalaniappan@x.ai> Co-authored-by: minu <minupal6@gmail.com> Co-authored-by: Minu Palaniappan <ericzakariasson@users.noreply.github.com> Co-authored-by: Asad Salman <asads@twitter.com> Co-authored-by: lauren <poteto@users.noreply.github.com>
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.
Why
Three pstack rules contradicted other rules in the same skills, so an agent had to guess which rule wins.
The skills that read the
pstack-models.mdcrule also read it in different ways. arena, swarm, and interrogate used their line "when present". how, why, reflect, and architect said "your configured" model or runners without naming the rule or its line. Only interrogate said what to do when the Task tool rejects a slug.Scope
git push --force-with-lease. Autopilot-full step 2 adds the lease push after anls-remotecheck and bans a force-push of a shared branch. A standalone babysit keeps the full ban.startrow. The Rules list does not change.autoorinherit-parentleavesmodelunset. A rejected slug falls back to the default, and a rejected panel entry falls back to the default of its family. architect takes its runners fromarchitect runnersand follows arena's runner rules. poteto-mode names the lines that the code playbooks, the hardest changes, and prose and judgment read.swarm workersmodel.check-plan.mjsaccepts any model in the lane sentence and rejects the skeleton's unfilled<swarm workers model>.how critics, and lists it when it shows the roles.No default model changes.
Blast radius
Every pstack user gets the new text on update.
startrow.check-plan.mjsuntil its lane model is filled in. Plans that namegrok-4.7-xhigh-faststill pass.Verification
node scripts/validate-plugins.mjspasses.pstack/skills/poteto-mode/scripts,bun test orch watch-prpasses 52 of 52 andbun run typecheckpasses. Neither coverscheck-plan.mjs, so the next check runs it directly.check-plan.mjsran on the skeleton with every other placeholder filled. On main it passes onlygrok-4.7-xhigh-fastin the lane sentence. On this branch it also passesclaude-opus-5-5-max,gpt-5.6-sol-max, andauto. Both reject a missing sentence, empty backticks, "Nine lanes", and a model without backticks. This branch also rejects the unfilled<swarm workers model>, so the raw skeleton fails with that one problem.git diff --checkis clean, and no frontmatter changed.Note
Low Risk
Documentation and agent-workflow skill text only; behavior changes are procedural (lease force-push for autopilot owners, append-only logs) with no runtime code or auth paths touched.
Overview
Resolves contradictory playbook and skill rules so agents no longer have to guess which instruction wins, and standardizes how every routed skill reads
pstack-models.mdc(named role lines, missing-rule defaults,auto/inherit-parentomittingmodel, and family-based fallbacks when Task rejects a slug).Autopilot vs babysit:
babysitstill forbids rebases/force-pushes for normal babysitters, but Autopilot-full/stack owners may rebase their own branch and publish withgit push --force-with-leaseafterls-remote.opening-a-prexempts those owners from the “don’t babysit on open” rule so they start babysit after code-ready.Decision logs:
show-me-your-workkeeps logs append-only; audits addstartrows for multi-run logs and supersede bad rows instead of deleting or “cutting” them.Models in plans:
multi-phase-planandcheck-plan.mjstie ten live swarm lanes to theswarm workersline (regex accepts any filled model, rejects the unfilled skeleton placeholder).Setup:
setup-pstackdrops retired rule lines (e.g.how critics) and surfaces them on re-run.Version bumps to 0.15.5 in
plugin.json. No default model slug changes.Reviewed by Cursor Bugbot for commit be6bcd1. Bugbot is set up for automated code reviews on this repo. Configure here.