Repository navigation
feat(pstack): autopilot loops catch the operator up with /ketchup - #616
Merged
Merged
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
Reviewed by Cursor Bugbot for commit 5eb48d6. Configure here.
| 6. **Run the root layer.** Anything that loosens a gate, such as a raised budget or an allowlist entry, needs a verifier's proof and then your fresh countersign, because the owner is the one who wants green. Under a grant that covers approvals, that countersign is the approval, and the owner's record of it points at your countersign for a lane to check. A disabled or soft-failed check always comes out, because it stops guarding every case. Never give or bypass an approval the forge enforces, because no countersign covers it. | ||
|
|
||
| On the operator's go, arm `/loop 1h` to audit until no delegated work is left, because long runs drift and agents stall silently. Each tick re-reads this playbook from trunk and fixes drift, such as an unreported head or an unrecorded agent, by having its owner record it, because drift is a gap in the record, not a stall. It probes every agent, down to the leaf lanes, and judges each by its side effects, because status text and summaries can hide a stuck child. An agent is stuck when it errors, cannot start turns, or shows nothing new past its stuck-after runtime, and so is an owner that has neither pushed nor written a trail row by the first tick. One waiting on you or the operator is not stuck, so answer it. Replace a stuck agent at once, without waiting for its stop to land. | ||
| On the operator's go, arm `/loop 1h` to audit until no delegated work is left, because long runs drift and agents stall silently. Each tick re-reads this playbook from trunk and fixes drift, such as an unreported head or an unrecorded agent, by having its owner record it, because drift is a gap in the record, not a stall. It probes every agent, down to the leaf lanes, and judges each by its side effects, because status text and summaries can hide a stuck child. An agent is stuck when it errors, cannot start turns, or shows nothing new past its stuck-after runtime, and so is an owner that has neither pushed nor written a trail row by the first tick. One waiting on you or the operator is not stuck, so answer it. Replace a stuck agent at once, without waiting for its stop to land. A tick that changed something for the operator ends by catching them up per the **ketchup** skill, and one that changed nothing stays quiet. |
There was a problem hiding this comment.
Tick ketchup fights the plan prompt
Medium Severity · Logic Bug
Hourly ticks now end with a ketchup catch-up, but planned programs still arm /loop 1h with a verbatim prompt that posts only a short delta status and forbids repeating earlier reports. check-plan.mjs still requires the words status message. Agents that re-read the playbook and obey the plan will double-post or drop ketchup.
Reviewed by Cursor Bugbot for commit 5eb48d6. Configure here.
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.


Both poteto-mode autopilot playbooks now report to the operator through the
ketchupskill.autopilot-full: each hourly tick that changes something for the operator ends with a catch-up written perketchup. A tick that changes nothing stays quiet. The final reply is also aketchupcatch-up. It covers PR state and verdicts, what merged, countersigns, and open operator gates, and links to each PR and the decision trails.autopilot-stack: the final reply is aketchupcatch-up with links to the stack root and tip, a one-line verdict per link, and anything parked or excluded.No version bump. One separate bump PR follows once this lands.
Note
Low Risk
Playbook-only wording changes for how autopilot agents report to the operator; no runtime code or security paths.
Overview
Autopilot full and stack playbooks now route operator communication through the ketchup skill instead of ad-hoc reply bullets.
For autopilot-full, each hourly audit tick that changes something for the operator must end with a ketchup-style catch-up; ticks with no operator-visible change stay silent. The standing Reply section is rewritten to require the same ketchup format, still covering PR state/verdicts, merges, countersigns, open gates, and now explicitly including links to PRs and decision trails.
For autopilot-stack, the final Reply is aligned the same way: ketchup catch-up with stack root/tip links, per-link verdicts, and parked/excluded items with reasons.
Reviewed by Cursor Bugbot for commit 5eb48d6. Bugbot is set up for automated code reviews on this repo. Configure here.