Repository navigation
feat(pstack): match subagent effort to the job, drop Graphite from orchestrate, and cut playbooks to principles - #613
Merged
Conversation
Add a Match the model to the job rule to poteto-mode's Subagents section. Each spawn starts from the role's configured slug, moves the effort level for how hard the job is, and uses fast mode only when the job is urgent. Verification keeps the swarm workers model. Point the routed skills and playbooks that spawn subagents at the rule.
…r arena and interrogate fallbacks A refused configured entry falls back to its family's default. Slugs that start with cursor-grok- or composer- now count as the grok family, so a refused composer entry runs on the grok default instead of the no-match claude default.
…fier for small follow-ups The multi-phase plan skeleton ran the full swarm at every push that changed the patch. Run it once at the code-ready head, and again only for new behavior, a redesign, or a large new diff. A rebase, a conflict resolution, or a minor fix gets one verifier at the new head.
Shipping goes from nine steps to six and states why each rule holds. After a merge, the child PR is retargeted to trunk, its patch (not its commits) moves onto the merge result, and it is pushed with --force-with-lease. The patch-id rule then decides whether its verdict survives. opening-a-pr points stacked children at that step.
Autopilot-full and Autopilot-stack keep their rules and drop the procedure around them, and each rule says why it holds. Autopilot-stack now states only where it differs from Autopilot-full. Three rules are new: - Pin --force-with-lease to the SHA you last pushed or took over. - When trunk changed a caller of the patch or something it depends on, run the patch's checks on the merge result before merging. - Hold and report to the root rather than take a third rebase past merge prep. A full swarm runs once at the code-ready head, matching the multi-phase plan.
…hain instead of Graphite orch frontier set now walks the pull request base chain through the checkout's current branch with gh by default, or origin with --forge origin. Workers and babysitters no longer run gt; one stacker owns chain rebases, retargets, and merges.
… the gate in watch-pr A completed Code Review Gate check run with an ACTION_REQUIRED conclusion now maps to the owner-approval gate instead of a failed check, so the watcher neither fails nor waits on a human approval.
… rule The Subagents section said both that the chat receiving /poteto-mode runs the playbook and that /poteto-mode and poteto-agent route through the same wrapper. A Task subagent has no Task tool of its own, so the first rule holds and the second sentence goes.
gh pr list cannot see Origin pull requests, so the PR column was always empty for repositories on Origin. The audit now reads origin pr list when the Origin CLI can read the repository and falls back to gh otherwise. Both shapes normalize to one lowercase state, and draft pull requests also hold the worktree.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit d162fd5. Configure here.
…de Review Gate Co-authored-by: lauren <poteto@users.noreply.github.com>
1 task done
deanrie
added a commit
to deanrie/plugins
that referenced
this pull request
Oct 14, 2026
…#613 main (cursor#613) normalises the PR list to {number, state, head} with a lowercase state and prefers the origin CLI over gh. The audit now carries head_oid through that list (gh provides it, origin's record leaves it empty) so heliowap's PR-head check still works, and the fixture expectations use the lowercase states the script prints.
leegmoore
added a commit
to liminal-ai/pstack-lim
that referenced
this pull request
Oct 17, 2026
…hain, not Graphite Ports the Graphite removal from upstream ce649c0 (cursor#613). orch frontier set walks the pull request base chain through the checkout's current branch with gh by default, or origin with --forge origin. The --source gt|gh option and the gt parsers go. Workers never retarget or merge PRs, and one stacker owns chain rebases, retargets, and merges. Adapted for T3: units.tsv keeps each unit's delegate_task taskId and child thread id. trunkBranch asks the remote's HEAD with git ls-remote --symref before the clone's origin/HEAD, because origin/HEAD here still says main for a repository whose default branch is lim (FORK.md Trunk row). The stacker's squash-merge recipe and the cloud workers placement stay. The three graphite PENDING entries in check-t3-port.mjs go with the drift they covered. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
leegmoore
added a commit
to liminal-ai/pstack-lim
that referenced
this pull request
Oct 17, 2026
Ports the Match the model to the job rule from upstream ce649c0 (cursor#613) into poteto-mode's Subagents section, and points the eleven routed skills and thirteen playbooks that spawn subagents at it with one sentence each. arena and interrogate count a composer-* model as the grok family, as upstream does. Adapted for T3: a spawn starts from its role line and may lower the effort option of the target for judgment or routine work, but never raises it above the role line. The hardest tasks line already covers the hardest work, so the role file stays the single source of model choice, and Claude's rate limits are not spent on a per-spawn raise. Upstream's fast-mode-when-urgent clause is dropped. Speed stays with the existing Speed rule, which is unchanged (FORK.md Speed and Model per role rows). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
leegmoore
added a commit
to liminal-ai/pstack-lim
that referenced
this pull request
Oct 17, 2026
…fier for small follow-ups Ports the verification cadence from upstream ce649c0 (cursor#613). The plan skeleton ran the full swarm at every push that changed the patch. It now runs once at the code-ready head, and again only for new behavior, a redesign, or a large new diff. A rebase, a conflict resolution, or a minor fix gets one verifier at the new head. The autopilot playbooks take the same cadence in their own commit. Adapted for T3: the single verifier names its model, the counterpart of the code author's family from the role file's Counterparts list, so it is never the author (FORK.md Model per role row). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
leegmoore
added a commit
to liminal-ai/pstack-lim
that referenced
this pull request
Oct 17, 2026
Ports the shipping rewrite from upstream ce649c0 (cursor#613). Nine steps become six, and each rule says why it holds. After a merge, the child PR is retargeted to trunk, its patch moves onto the merge result, and it is pushed with --force-with-lease. The patch-id rule then decides whether its verdict survives. opening-a-pr points stacked children at that step. Adapted for T3: the verifier is a delegate_task child on the counterpart of the code author's family from the role file, never the author, in its own worktree (FORK.md Subagents and Model per role rows). The landing watch is watch_pull_request on the run's bottom PR plus the fallback heartbeat from the role file's Waking and polling section, with the queued watcher's --status-only table read on each wake (Waking row). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
leegmoore
added a commit
to liminal-ai/pstack-lim
that referenced
this pull request
Oct 17, 2026
… catch the operator up with /ketchup Ports the autopilot rewrite from upstream ce649c0 (cursor#613) and the /ketchup change from 8043881 (cursor#616). Autopilot-full and Autopilot-stack keep their rules, drop the procedure around them, and say why each holds. Autopilot-stack states only where it differs from Autopilot-full. Three rules are new: pin --force-with-lease to the SHA you last pushed or took over, run the patch's checks on the merge result when trunk changed a caller or a dependency, and hold for the root rather than take a third rebase past merge prep. A full swarm runs once at the code-ready head, as in the multi-phase plan. An audit tick that changed something ends with /ketchup, and the reply is a /ketchup. Adapted for T3: each owner is a delegate_task child on the cloud workers line, or local in its own worktree (Subagents row). The hourly wake is /loop 1h in a Claude root or a schedule_task interval, and each tick re-reads the playbook from origin/lim with the command check-plan.mjs requires (Waking and Trunk rows). Trails stay as the uncommitted decisions.tsv and children.tsv returned with reports, and children.tsv records each child's taskId and thread id so the root can probe it with task_status (Todo list row). The single follow-up verifier is the counterpart of the author's family. The upstream origin/main merge-base command is gone with the procedure, so the last PENDING entry in check-t3-port.mjs goes too, and the test now plants a stale entry itself so the rule stays covered with an empty list. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
leegmoore
added a commit
to liminal-ai/pstack-lim
that referenced
this pull request
Oct 17, 2026
…d read the audit PR column from Origin Ports two fixes from upstream ce649c0 (cursor#613) unchanged. In watch-pr, a completed Code Review Gate check run with an ACTION_REQUIRED conclusion maps to the owner-approval gate on both read paths instead of a failed check, so the watcher neither fails nor waits on a human approval. In worktree-audit, the PR column reads origin pr list when the Origin CLI can read the repository and falls back to gh otherwise. Both shapes normalize to one lowercase state, and a draft PR also holds the worktree. The fork's --threads option and GitHub default-branch lookup in worktree-audit.sh stay as merged in sync PR B. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
leegmoore
added a commit
to liminal-ai/pstack-lim
that referenced
this pull request
Oct 17, 2026
…hain, not Graphite Ports the Graphite removal from upstream ce649c0 (cursor#613). orch frontier set walks the pull request base chain through the checkout's current branch with gh by default, or origin with --forge origin. The --source gt|gh option and the gt parsers go. Workers never retarget or merge PRs, and one stacker owns chain rebases, retargets, and merges. Adapted for T3: units.tsv keeps each unit's delegate_task taskId and child thread id. trunkBranch asks the remote's HEAD with git ls-remote --symref before the clone's origin/HEAD, because origin/HEAD here still says main for a repository whose default branch is lim (FORK.md Trunk row). The stacker's squash-merge recipe and the cloud workers placement stay. The three graphite PENDING entries in check-t3-port.mjs go with the drift they covered. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
leegmoore
added a commit
to liminal-ai/pstack-lim
that referenced
this pull request
Oct 17, 2026
Ports the Match the model to the job rule from upstream ce649c0 (cursor#613) into poteto-mode's Subagents section, and points the eleven routed skills and thirteen playbooks that spawn subagents at it with one sentence each. arena and interrogate count a composer-* model as the grok family, as upstream does. Adapted for T3: a spawn starts from its role line and may lower the effort option of the target for judgment or routine work, but never raises it above the role line. The hardest tasks line already covers the hardest work, so the role file stays the single source of model choice, and Claude's rate limits are not spent on a per-spawn raise. Upstream's fast-mode-when-urgent clause is dropped. Speed stays with the existing Speed rule, which is unchanged (FORK.md Speed and Model per role rows). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
leegmoore
added a commit
to liminal-ai/pstack-lim
that referenced
this pull request
Oct 17, 2026
…fier for small follow-ups Ports the verification cadence from upstream ce649c0 (cursor#613). The plan skeleton ran the full swarm at every push that changed the patch. It now runs once at the code-ready head, and again only for new behavior, a redesign, or a large new diff. A rebase, a conflict resolution, or a minor fix gets one verifier at the new head. The autopilot playbooks take the same cadence in their own commit. Adapted for T3: the single verifier names its model, the counterpart of the code author's family from the role file's Counterparts list, so it is never the author (FORK.md Model per role row). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
leegmoore
added a commit
to liminal-ai/pstack-lim
that referenced
this pull request
Oct 17, 2026
Ports the shipping rewrite from upstream ce649c0 (cursor#613). Nine steps become six, and each rule says why it holds. After a merge, the child PR is retargeted to trunk, its patch moves onto the merge result, and it is pushed with --force-with-lease. The patch-id rule then decides whether its verdict survives. opening-a-pr points stacked children at that step. Adapted for T3: the verifier is a delegate_task child on the counterpart of the code author's family from the role file, never the author, in its own worktree (FORK.md Subagents and Model per role rows). The landing watch is watch_pull_request on the run's bottom PR plus the fallback heartbeat from the role file's Waking and polling section, with the queued watcher's --status-only table read on each wake (Waking row). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
leegmoore
added a commit
to liminal-ai/pstack-lim
that referenced
this pull request
Oct 17, 2026
… catch the operator up with /ketchup Ports the autopilot rewrite from upstream ce649c0 (cursor#613) and the /ketchup change from 8043881 (cursor#616). Autopilot-full and Autopilot-stack keep their rules, drop the procedure around them, and say why each holds. Autopilot-stack states only where it differs from Autopilot-full. Three rules are new: pin --force-with-lease to the SHA you last pushed or took over, run the patch's checks on the merge result when trunk changed a caller or a dependency, and hold for the root rather than take a third rebase past merge prep. A full swarm runs once at the code-ready head, as in the multi-phase plan. An audit tick that changed something ends with /ketchup, and the reply is a /ketchup. Adapted for T3: each owner is a delegate_task child on the cloud workers line, or local in its own worktree (Subagents row). The hourly wake is /loop 1h in a Claude root or a schedule_task interval, and each tick re-reads the playbook from origin/lim with the command check-plan.mjs requires (Waking and Trunk rows). Trails stay as the uncommitted decisions.tsv and children.tsv returned with reports, and children.tsv records each child's taskId and thread id so the root can probe it with task_status (Todo list row). The single follow-up verifier is the counterpart of the author's family. The upstream origin/main merge-base command is gone with the procedure, so the last PENDING entry in check-t3-port.mjs goes too, and the test now plants a stale entry itself so the rule stays covered with an empty list. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
leegmoore
added a commit
to liminal-ai/pstack-lim
that referenced
this pull request
Oct 17, 2026
…d read the audit PR column from Origin Ports two fixes from upstream ce649c0 (cursor#613) unchanged. In watch-pr, a completed Code Review Gate check run with an ACTION_REQUIRED conclusion maps to the owner-approval gate on both read paths instead of a failed check, so the watcher neither fails nor waits on a human approval. In worktree-audit, the PR column reads origin pr list when the Origin CLI can read the repository and falls back to gh otherwise. Both shapes normalize to one lowercase state, and a draft PR also holds the worktree. The fork's --threads option and GitHub default-branch lookup in worktree-audit.sh stay as merged in sync PR B. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
leegmoore
added a commit
to liminal-ai/pstack-lim
that referenced
this pull request
Oct 17, 2026
…hite removal (#6) * refactor(pstack): resolve the orchestrate frontier from the PR base chain, not Graphite Ports the Graphite removal from upstream ce649c0 (cursor#613). orch frontier set walks the pull request base chain through the checkout's current branch with gh by default, or origin with --forge origin. The --source gt|gh option and the gt parsers go. Workers never retarget or merge PRs, and one stacker owns chain rebases, retargets, and merges. Adapted for T3: units.tsv keeps each unit's delegate_task taskId and child thread id. trunkBranch asks the remote's HEAD with git ls-remote --symref before the clone's origin/HEAD, because origin/HEAD here still says main for a repository whose default branch is lim (FORK.md Trunk row). The stacker's squash-merge recipe and the cloud workers placement stay. The three graphite PENDING entries in check-t3-port.mjs go with the drift they covered. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * feat(pstack): match each subagent's effort to the job, lowering only Ports the Match the model to the job rule from upstream ce649c0 (cursor#613) into poteto-mode's Subagents section, and points the eleven routed skills and thirteen playbooks that spawn subagents at it with one sentence each. arena and interrogate count a composer-* model as the grok family, as upstream does. Adapted for T3: a spawn starts from its role line and may lower the effort option of the target for judgment or routine work, but never raises it above the role line. The hardest tasks line already covers the hardest work, so the role file stays the single source of model choice, and Claude's rate limits are not spent on a per-spawn raise. Upstream's fast-mode-when-urgent clause is dropped. Speed stays with the existing Speed rule, which is unchanged (FORK.md Speed and Model per role rows). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * feat(pstack): run one full swarm per multi-phase PR and a single verifier for small follow-ups Ports the verification cadence from upstream ce649c0 (cursor#613). The plan skeleton ran the full swarm at every push that changed the patch. It now runs once at the code-ready head, and again only for new behavior, a redesign, or a large new diff. A rebase, a conflict resolution, or a minor fix gets one verifier at the new head. The autopilot playbooks take the same cadence in their own commit. Adapted for T3: the single verifier names its model, the counterpart of the code author's family from the role file's Counterparts list, so it is never the author (FORK.md Model per role row). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * refactor(pstack): cut the shipping playbook to its principles Ports the shipping rewrite from upstream ce649c0 (cursor#613). Nine steps become six, and each rule says why it holds. After a merge, the child PR is retargeted to trunk, its patch moves onto the merge result, and it is pushed with --force-with-lease. The patch-id rule then decides whether its verdict survives. opening-a-pr points stacked children at that step. Adapted for T3: the verifier is a delegate_task child on the counterpart of the code author's family from the role file, never the author, in its own worktree (FORK.md Subagents and Model per role rows). The landing watch is watch_pull_request on the run's bottom PR plus the fallback heartbeat from the role file's Waking and polling section, with the queued watcher's --status-only table read on each wake (Waking row). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * refactor(pstack): cut the autopilot playbooks to their principles and catch the operator up with /ketchup Ports the autopilot rewrite from upstream ce649c0 (cursor#613) and the /ketchup change from 8043881 (cursor#616). Autopilot-full and Autopilot-stack keep their rules, drop the procedure around them, and say why each holds. Autopilot-stack states only where it differs from Autopilot-full. Three rules are new: pin --force-with-lease to the SHA you last pushed or took over, run the patch's checks on the merge result when trunk changed a caller or a dependency, and hold for the root rather than take a third rebase past merge prep. A full swarm runs once at the code-ready head, as in the multi-phase plan. An audit tick that changed something ends with /ketchup, and the reply is a /ketchup. Adapted for T3: each owner is a delegate_task child on the cloud workers line, or local in its own worktree (Subagents row). The hourly wake is /loop 1h in a Claude root or a schedule_task interval, and each tick re-reads the playbook from origin/lim with the command check-plan.mjs requires (Waking and Trunk rows). Trails stay as the uncommitted decisions.tsv and children.tsv returned with reports, and children.tsv records each child's taskId and thread id so the root can probe it with task_status (Todo list row). The single follow-up verifier is the counterpart of the author's family. The upstream origin/main merge-base command is gone with the procedure, so the last PENDING entry in check-t3-port.mjs goes too, and the test now plants a stale entry itself so the rule stays covered with an empty list. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(pstack): treat an owner-approval Code Review Gate as the gate, and read the audit PR column from Origin Ports two fixes from upstream ce649c0 (cursor#613) unchanged. In watch-pr, a completed Code Review Gate check run with an ACTION_REQUIRED conclusion maps to the owner-approval gate on both read paths instead of a failed check, so the watcher neither fails nor waits on a human approval. In worktree-audit, the PR column reads origin pr list when the Origin CLI can read the repository and falls back to gh otherwise. Both shapes normalize to one lowercase state, and a draft PR also holds the worktree. The fork's --threads option and GitHub default-branch lookup in worktree-audit.sh stay as merged in sync PR B. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(pstack): record the sync PR C decisions for ce649c0 and 8043881 Sets both FORK-SYNC-LOG.md rows to adapt, PR C, with the FORK.md rows each port applied. Adds an Effort row to the T3 port intent table: upstream raises and lowers effort per job, the fork lowers only and never above the role line, because a raise spends Claude rate limit per spawn and the role file stays the single source of model choice. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(pstack): keep autopilot trails in the root's store and probe children by thread id Review findings 1, 2 and 7 on PR #6. An owner's decisions.tsv and children.tsv now live under autopilot/<pr>/ in the pstack store, as upstream ce649c0 intended, so they survive a dead VM. A local owner writes there. A cloud owner cannot reach the store, so it posts each trail row and each new child's id in a marked PR comment, and the root copies them into the store at every drain and tick. The hourly tick reads the store instead of every owner's checkout. task_status reads only tasks the calling thread created, so the root probes its own owners with it, a recorded child with t3_thread_read on its thread id, and cloud work by its PR and branch, which a cloud owner records instead of a taskId it does not have. An owner cannot arm watch_pull_request (a child cannot watch a PR, a cloud VM has no T3 tools, and ending the turn ends its task), so it polls with the bare watch-pr and posts CODE-READY <sha> as a PR comment. The root arms watch_pull_request on each owner's PR, with the tick as fallback. babysit.md points owners at that paragraph. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(pstack): never lower verification effort, and keep the role ceiling through fallbacks Review findings 3, 11 and 12 on PR #6. poteto-mode's effort rule said verification stays on the swarm workers entries, which contradicted the counterpart verifier that shipping, autopilot-full and multi-phase-plan name. Now verification effort is never lowered: a full-swarm lane keeps its swarm workers entry, and a single verifier runs on the Counterparts entry for the author's family. swarm's effort sentence carries the same exception. interrogate and arena fall back to table defaults at effort=xhigh. Both now say the original role's effort ceiling survives every fallback, including the nearest supported level. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(pstack): keep shipping's fallback heartbeat on both forges Review finding 4 on PR #6. Step 5 named the heartbeat only on the GitHub path. The heartbeat is what notices a merge on either forge, so it now covers Origin too, and only the watch_pull_request arm stays GitHub-only. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(pstack): sync chain branches from origin before orch frontier set Review findings 5 and 8 on PR #6. Chain rebases may run on cloud workers the coordinator cannot reach, and store.ts reads head SHAs from local refs, so Stack safety now fetches and resets each chain branch to origin/<branch> in a local clone checked out on the tip before running orch frontier set. The ledger note says "after a chain rebase" instead of "after restack", since Graphite's restack is gone. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(orch): list open children with a limit and anchor a branch on its open PR Review findings 9 and 10 on PR #6. Both are upstream bugs in ce649c0's frontier resolver, fixed here on top of upstream. listPullRequests passed --state all with no limit, and gh returns 30 rows by default, so an open child beyond the first page of closed predecessors silently dropped out of the frontier. Children are now queried with --state open, every list passes --limit 500, and a page that fills the limit fails with a message instead of passing as complete. branchPullRequest rejected any branch with more than one PR, so an open PR plus a closed predecessor failed with "close the stale ones first", which closing cannot fix. A unique open PR now anchors the branch. Merged and closed PRs anchor it only when none is open, and several of those need the --prs pin to name the one that anchors the chain. Tests cover an open child beyond gh's default page, a truncated list, an open PR over a closed predecessor, and the --prs disambiguation, through a gh-shaped fake that honours --state and --limit. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * feat(scripts): guard the Effort row in the T3 port check Review finding 6 on PR #6. Nothing guarded the lower-only effort rule. check-t3-port.mjs now bans "Raise it one step", "up to max" and "job is urgent" under pstack/skills and pstack/agents, and requires "Never raise it above the role line" in poteto-mode's SKILL.md. Regression tests plant each phrase and the missing anchor. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(pstack): record the trail, owner polling and frontier fork fixes for ce649c0 Review findings 1 and 10 on PR #6. The ce649c0 row now says owner trails live under autopilot/<pr>/ in the pstack store with cloud owners' rows relayed through PR comments, that owners poll and report by PR comment while the root holds the watch, and names the two frontier resolver fixes the fork carries on top of upstream. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(pstack): give a cloud autopilot owner a poll it can run A cloud VM has no pstack install, so it cannot run watch-pr. A local owner keeps the installed watch-pr. A cloud owner polls gh pr view for state, checks and review decision, and reads comments for new threads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * orch/store: prefer OPEN PR when multiple for head branch; error on trunk checkout in resolveFrontier to avoid empty frontier overwrite * fix(pstack): make autopilot owner reports wake the root and read every review thread Both PR #6 round 2 reviewers found that gh pr view --comments leaves out inline review comments, so a cloud owner could report merge-ready with Bugbot threads open. A cloud owner now pages reviewThreads through gh api graphql. T3's PR watch ignores comments from its own account, which owners share, so a local owner also sends its report to the root with t3_thread_send, and the root polls cloud owners' PRs every 10 minutes while any is out. The root acts on a report only from the owners' account and at the PR's current head. Trails move to autopilot/<run-slug>/<repo>/<branch>/ so runs and repos never share one, and the root keeps its owners in autopilot/<run-slug>/children.tsv so a restarted root can find them. Cloud trail rows are copied by comment id. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(pstack): check trail comments before copying them, and spell out thread paging Round 3 review notes on PR #6: trail comments get the same author and PR checks as reports, and the reviewThreads query names its cursor and pageInfo. PR #7's review note: the ce649c0 sync-log row records how owners poll and report. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> Co-authored-by: Cursor Agent <cursoragent@cursor.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.

Summary
This PR has ten pstack changes. Subagents now pick their reasoning level and speed for each job. The orchestrate frontier comes from the pull request base chain and no longer needs Graphite. The shipping and autopilot playbooks are cut down to their principles.
watch-prand the worktree audit each get one fix for forge behavior. Every commit stands alone, so you can review the PR commit by commit.Changes
poteto-modehas a new rule. Each spawn starts from the role's configured slug and changes only the effort level and whether the slug is fast. Hard work goes one step up, judgment one step down, and routine work two or more steps down. Use fast mode only when the job is urgent, meaning CI or trunk is red or a person is blocked right now. Verification stays on theswarm workersmodel. The routed skills and playbooks that spawn subagents point at this rule and do not repeat it.arenaandinterrogate, slugs that start withcursor-grok-orcomposer-are now in the grok family. A refusedcomposer-*entry now runs on the grok default and not on the Claude default that is used when no family matches.--force-with-lease. The patch-id rule then decides whether its verdict survives.opening-a-prpoints stacked children at that step.--force-with-leaseto the SHA you last pushed or took over; run the patch's checks on the merge result when trunk changed a caller or a dependency of the patch; and hold and report instead of taking a third rebase past merge prep.orch frontier setwalks the pull request base chain down to trunk and up through open children. It usesghby default, ororiginwith--forge origin. Head SHAs come from the local branch refs. Workers and babysitters no longer rungt, and one stacker owns chain rebases, retargets, and merges. The playbook resolves the forge once:ghby default,origin prwhen the Origin CLI can resolve the repository.watch-prowner-approval gate. A completedCode Review Gatecheck run with anACTION_REQUIREDconclusion now maps to the owner-approval gate and not to a failed check. The watcher does not fail on it and does not wait on a human approval./poteto-moderuns the playbook. It also said that/poteto-modeandpoteto-agentroute through the same wrapper. A Task subagent has no Task tool of its own, so the first rule is correct, and this PR removes the second sentence.gh pr listcannot see Origin pull requests, so the PR column was always empty for repositories on Origin. The audit now readsorigin pr listwhen the Origin CLI can read the repository, and falls back toghwhen it cannot. Both outputs normalize to one lowercase state, and a draft pull request also holds the worktree.Verification
bun test orch watch-pr check-plan.test.tsinpstack/skills/poteto-mode/scripts: 67 tests pass. The new orchestrate tests build a real git stack and run the frontier through fakeghand fakeoriginCLIs. A newwatch-prtest covers theACTION_REQUIREDgate.tsc --noEmit --strictpasses forwatch-prand fororch.worktree-audit.shran against a fixture repo with four worktrees and stub CLIs. When Origin answers, open and draft PRs hold their worktrees and a merged PR issafe. When Origin refuses, theghresults give the same buckets as before. When neither answers, the PR column is empty. On trunk the script read onlygh.shellcheck -S warningandbash -npass.node scripts/validate-plugins.mjspasses.git diff --checkis clean, and neitherplugin.jsonchanges.