Skip to content

feat(pstack): port 13 upstream fixes and two new skills - #5

Merged
leegmoore merged 12 commits into
limfrom
sync/b-clean-takes
Oct 17, 2026
Merged

leegmoore merged 12 commits into
limfrom
sync/b-clean-takes

Conversation

@leegmoore

@leegmoore leegmoore commented Oct 17, 2026 •

Copy link
Copy Markdown

Why

Second of four sync PRs. These upstream changes are bug fixes and small additions that fit the fork with little or no T3 adaptation.

What changed

  • Fixes taken from upstream: watch-pr reads every review thread, the plan checker respects fenced code, worktree-audit checks merges against the default branch, and the /poteto-mode chat runs the playbook while poteto-agent is only a delegate. Plus four small text fixes.
  • New skills /sharpen and /in-your-own-words, visible and named-only.
  • A todo-file rule for parallel runs, found by the PR A probes.

Scope

  • Covers 13 of the 29 upstream commits. FORK-SYNC-LOG.md records each decision.
  • Leaves the big playbook port (ce649c0) to PR C and the principle and /ketchup rewrites to PR D.

Tradeoffs

  • worktree-audit asks GitHub for origin's default branch before trusting origin/HEAD. Upstream trusts origin/HEAD, which in this checkout still says main although GitHub's default is lim.

Blast Radius

Skill text and two scripts. The audit script is read-only.

Verification

  • node scripts/check-t3-port.mjs is clean. It caught upstream's new plan-checker test reading origin/main, which is fixed here.
  • bun test in poteto-mode's scripts passes 66 of 66. node --test scripts/check-t3-port.test.mjs passes 24 of 24.
  • worktree-audit.sh on this repo reports # base: origin/lim and rejects an unknown -b ref.

🤖 Generated with Claude Code


Note

Medium Risk
Changes agent orchestration semantics and PR babysitting/review-thread reads; script changes are read-only for worktree-audit but affect merge classification and parallel todo behavior.

Overview
Sync PR B lands 13 upstream pstack fixes (documented in FORK-SYNC-LOG.md as completed take/adapt rows) without the larger playbook or /ketchup work reserved for later PRs.

Agent model: /poteto-mode is explicitly the playbook runner; poteto-agent is only a delegate_task wrapper with ~/.agents/skills/... paths in briefs. Comment Sicko’s spawn id becomes comment-sicko. Parallel T3 runs get exclusive todo files via (set -C; : > path).

New named-only skills: /in-your-own-words and /sharpen, wired through README, poteto-help, and recipes.

Babysit / cleanup tooling: watch-pr paginates GitHub review threads (fixes missing threads after the first page). worktree-audit.sh adds -b / default-branch detection (GitHub default, then origin/HEAD) instead of hardcoding origin/main. check-plan.mjs honors real markdown fences so prose inside code blocks is not linted; new check-plan.test.ts covers that.

Smaller skill/doc tweaks: stricter verification-skill launch/readiness and stand-in disclosure; fix-root-causes adds “propose a cheap always-on signal”; unslop drops “Must always apply.” from its description. scripts/check-t3-port.mjs drops pending drift allowances now fixed here.

Reviewed by Cursor Bugbot for commit ce28092. Configure here.

Yi-111-a and others added 11 commits October 17, 2026 11:14
…rst 100 (cursor#484)

The reviewThreads query requested reviewThreads(first: 100) with no
pageInfo and no cursor, and the reader issued it once. On a PR with more
than 100 review threads every thread past the first page was invisible,
so an unresolved thread beyond page 1 never blocked the readiness
decision and the PR was reported ready with no unresolved threads.

Paginate like the check-rollup query already does for contexts: add
 and pageInfo to the query, return one page from the reader, and
loop in resolveReviewThreads until hasNextPage is false.

Splitting the parser into parseReviewThreadPage and buildReviewThreads
keeps the Bugbot pass count global: it is derived from every thread in
the response, so accumulating raw pages first preserves the existing
count instead of computing it per page.

Fixes cursor#471

Co-authored-by: Yi-111-a <34198240+yi-111-a@users.noreply.github.com>
(cherry picked from commit ff8f83d)
… dig (cursor#604)

* feat(pstack): propose a cheap always-on signal after a deep debugging dig

* chore(pstack): drop version bump

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
(cherry picked from commit 36cecbf)
Port of upstream bc697d0 (cursor#572). The fork keeps its named-only sentence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Port of upstream c49b37a (cursor#573), applied by hand onto the fork's .agents/skills paths.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Port of upstream de2dba6 (cursor#486). no-comments already spawns it as a delegate_task child by file, so its text needs no change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Port of upstream 87c8103 (cursor#536). The new test's fixture re-reads origin/lim, not origin/main, because check-plan.mjs requires the fork's trunk.

(cherry picked from commit 87c8103)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Port of upstream cf9a111 (cursor#574), merged with the fork's --threads option. Upstream falls back to origin/HEAD, then origin/main. This checkout's origin/HEAD still says main although GitHub's default is lim, so the fork asks GitHub for origin's default branch first and drops the origin/main fallback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… delegate

Port of upstream 2bd5dd4 (cursor#575), with the leaf-path parts of 364a77e (cursor#577) and b93e811 (cursor#597). The fork keeps absolute ~/.agents paths instead of upstream's relative lookup and plugin search, and drops the "same wrapper" sentence as upstream ce649c0 later did.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Port of upstream 7d8d909 (cursor#602), dbf4981 (cursor#606) and 79afd75 (cursor#615). Both skills are visible and named-only instead of disable-model-invocation, per the fork's skill visibility rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two leads running at once picked the same todos/<date>-<slug>.md in the shared pstack store, and one edited the other's checklist. A run now creates the file only when the name is free, adds a distinguishing word otherwise, and never writes to another run's file. Found by the sync PR A behavior probes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-17T15:17:54.131741Z d5270c7 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Checking that a name is free and then writing it lets two leads both pass the check. The rule now creates the file with set -C, which fails when the name exists, and retries with the thread or session id in the slug. The sync log records that worktree-audit drops upstream's origin/main and origin/master guesses on purpose.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@leegmoore
leegmoore merged commit a01835b into lim Oct 17, 2026
1 check passed
@leegmoore
leegmoore deleted the sync/b-clean-takes branch October 17, 2026 15:44
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.

4 participants