Repository navigation
feat(pstack): sync Cursor pstack 0.15.29 as Open Pstack 1.16.0 (#234) - #240
Conversation
) Apply scripts/upstream-merge.py from 99743e9 to 88d4751: 6 files verbatim, 3 clean merges, 3 for review. Add create-formal-verification-skill and maintain-formal-verification-skill, the ketchup, sharpen and typescript-best-practices changes, and the poteto-help routing and recipes. Resolve setup-pstack by keeping the port's step 9 and adding upstream's verification offers as steps 10 and 11. Resolve poteto-help by keeping the port's install lines, setup sentence and harness paragraph, and appending upstream's offers sentence. make-bot-ui stays absent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ng (#46) On a rerun whose sheet loads with a valid setting line, with no named change and no inconsistency or kept-predecessor choice, setup validates, prints the kept roles and efforts, probes, and writes without the step 2, 4 and 7 questions when every probe passes. The verification offers print one line each. Validation, permission checks, snapshots, readback and the smoke test still run, and a failed probe still stops without writing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…verifier (#46) Every setup prompt now declines setup's two verification offers, and first-run asserts that the fixture gained no project skill directory. keep-setting now starts from a complete sheet with the full-access line and an agreeing Codex mirror, gives no answers, and requires both files to keep their bytes with no AskUserQuestion call. keep-predecessor still covers missing-role completion. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
UPSTREAM.md moves the sync point to 88d4751 (pstack 0.15.29), records the new exclusions and adaptations, adds the #46 ledger entry, and refreshes "Incorporate a change" from this run (#106). NOTICE.md gains a 0.15.26 to 0.15.29 provenance row, CHANGES.md a 1.16.0 section, and README.md and docs/reference.md the two formal verification skills, the new /sharpen, the version, the cursor-plugins install note and the Claude writer lane host requirement. Both manifests and the marketplace move to 1.16.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
recall, automate-me and the session-pickup playbook said Claude Code encodes only each / in the workspace path. It also encodes each ., so every .claude/worktrees/ session looked for a folder that does not exist. Reproduced on 2026-10-21 with the installed 1.15.0 plugin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Merge Protections🟢 All 2 merge protections satisfied — ready to merge. Show 2 satisfied protections🟢 Queue ready pull requestsAutomatically queue non-draft pull requests targeting main after verify, Unfret, and live-gate pass on the head and every review thread is resolved.
🟢 🚦 Auto-queueWhen all merge protections are satisfied and these conditions match, this pull request will be queued automatically.
|
|
[Medium impact] No blocking code defect was found; merging still requires the exact-head live gate. SummaryReleases Open Pstack 1.16.0 with the Cursor pstack 0.15.29 sync.
No actionable defect was established. Tests and live sessions were not run during this review. ericlitman records the exact-head live gate as pending. ericlitman also leaves the setup offer-accept paths, separate live checks for Reviews (1) · Last reviewed commit: "fix(pstack): encode dots in Claude trans..." · Reviewed by Greptile |
✅ Accepted riskAccepted by ericlitman: #234 (authority 48fa77b) 🔴 Critical · Transcript path normalization can cross workspace boundaries 🔴 High · Verify both quiet-rerun offer mentions 🔴 High · Exercise the ordinary offer's affirmative handoff 🔴 High · Detect intermediate Codex questions on quiet reruns 🔴 High · Exercise quiet reruns without supplying their answers 🔴 High · First-run still accepts questions despite supplied declines 🔴 High · Require the rerun's post-write smoke panel 🔴 High · Require probe evidence before accepting an automatic write 🔴 High · Exercise both affirmative setup-offer routes 🔴 High · keep-setting's only evidence of setup work is the rewrite 🔴 High · Exercise the formal offer through setup 🔴 High · No live case exercises the 🟡 Medium · Do not use an unconfirmed verification edit as the sync point 🟡 Medium · Include uncommitted covered-code changes Advisories (1)
DetailsRun: @unfret review · @unfret status · @unfret help |
There was a problem hiding this comment.
🛑 6 blocking findings
🔴 Critical · Transcript path normalization can cross workspace boundaries
🔴 High · Offer declines are inferred only from missing files
🔴 High · Detect Codex questions on its plain-text surface
🔴 High · The live gate declines every new setup offer
🟡 Medium · A verification edit is not a safe fallback sync point
🟡 Medium · Exclude preparation writes from rerun completion evidence
Check
…ly what it checks (#46) keep-setting now prepares exactly the sheet a quiet rerun keeps, so a prepared file written in the session's start millisecond satisfied written() for a session that wrote nothing. The prepared sheet and Codex mirror now carry a past mtime. The case publishes no-question for Claude only, because a Codex session asks in plain text, which the session record does not keep. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Live evidence: Open Pstack
|
There was a problem hiding this comment.
🛑 6 blocking findings
🔴 Critical · Transcript path normalization can cross workspace boundaries
🔴 High · Codex quiet reruns can still prompt
🔴 High · Offer declines are inferred only from missing files
🔴 High · Every setup case bypasses the affirmative offer branches
🔴 High · Decline suffix masks keep-setting's quiet-rerun offer check
🟡 Medium · Do not treat a verification edit as a confirmed sync
Check
…#46) keep-setting got the same "decline both offers" sentence as every setup case, so its no-question check could not fail on the offers a quiet rerun must only mention. keep-setting now gets no answers and must end with SETUP-DONE, create no skill directory, and, in Claude, attempt no AskUserQuestion. The parser keeps each session's final assistant text. A new accept-formal-offer case requires setup to load create-formal-verification-skill when the user accepts that offer. first-run's offers-declined assertion is renamed no-skill-directory. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Live evidence: Open Pstack
|
There was a problem hiding this comment.
🛑 8 blocking findings
🔴 Critical · Transcript path normalization can cross workspace boundaries
🔴 High · Require setup completion before accepting formal routing
🔴 High · No live case accepts step 10's verification-skill offer
🔴 High · Codex quiet reruns can still prompt
🔴 High · First-run still accepts questions despite supplied declines
🔴 High · Require both quiet-rerun offer mentions
🟡 Medium · Do not treat a verification edit as a confirmed sync
🟡 Medium · The maintenance diff omits uncommitted code changes
Check
Live evidence: Open Pstack
|
…s handoff (#234) Codex follows a skill reference by reading its SKILL.md with a shell command, so its rollout has no injected <skill> block for the formal creator. accept-formal-offer now also counts a successful read of the installed creator's SKILL.md, under this run's installation, whose output carries the creator's frontmatter. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🛑 11 blocking findings
🔴 Critical · Transcript path normalization can cross workspace boundaries
🔴 High · Quiet reruns need not mention either offer
🔴 High · Require setup completion before accepting formal routing
🔴 High · No live case accepts step 10's verification-skill offer
🔴 High · Reject intermediate Codex questions on quiet reruns
🔴 High · First-run still accepts questions despite supplied declines
🔴 High · Quiet-rerun case cannot detect skipped probes or smoke test
🔴 High · Formal-offer evidence cannot tell setup's route from the prompt's
🟡 Medium · Do not treat a verification edit as a confirmed sync
🟡 Medium · Maintenance diff ignores uncommitted covered-code changes
🟡 Medium · Creator-read detection rejects normal shell spellings
Check
… creator (#234) The case's prompt named the formal verification offer, so a candidate whose setup no longer offered it could still load create-formal-verification-skill from the prompt and pass as routed. The prompt now declines /create-verification-skill and accepts any other offer, and never names the formal one. CHANGES.md now says which setup cases decline the offers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Live evidence: Open Pstack
|
There was a problem hiding this comment.
🛑 13 blocking findings
🔴 Critical · Transcript path normalization can cross workspace boundaries
🔴 High · Quiet-rerun offer mentions are never checked
🔴 High · Require setup completion before accepting formal routing
🔴 High · No live case accepts step 10's verification-skill offer
🔴 High · Detect intermediate Codex questions on quiet reruns
🔴 High · First-run still accepts questions despite supplied declines
🔴 High · Require probe evidence before accepting an automatic write
🔴 High · Require the quiet rerun's post-write smoke panel
🔴 High · keep-setting accepts a write with no probe or smoke evidence
🟡 Medium · Do not treat a verification edit as a confirmed sync
🟡 Medium · Include uncommitted covered-code changes
🟡 Medium · Creator-read detection rejects normal shell spellings
🟡 Medium · Numbered creator reads are incorrectly rejected
Check
Live evidence: Open Pstack
|
Live evidence: Open Pstack
|
Live evidence: Open Pstack
|
Live evidence: Open Pstack
|
The accept-formal-offer case matched the creator's path spelling, so a real Codex session that read it through a relative path failed as not routed. The case now counts a successful command whose output carries the installed creator's frontmatter name and description lines, whatever the path spelling. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🛑 11 blocking findings
🔴 Critical · Transcript path normalization can cross workspace boundaries
🔴 High · Verify both quiet-rerun offer mentions
🔴 High · Require setup completion before accepting formal routing
🔴 High · No setup case accepts step 10's verification-skill offer
🔴 High · Detect intermediate Codex questions on quiet reruns
🔴 High · First-run still accepts questions despite supplied declines
🔴 High · Require the rerun's post-write smoke panel
🔴 High · Require probe evidence before accepting an automatic write
🔴 High · keep-setting's only evidence of setup work is the rewrite
🟡 Medium · A verification edit is not a confirmed sync point
🟡 Medium · Maintenance omits uncommitted covered-code changes
Check
Restore the verifier's recipes, setup notes, parser and tests to main. This removes the accept-formal-offer case, the SETUP-DONE and ACCEPT-ROUTED sentinels, the parser's reply field, the offer-decline sentence and the extra keep-setting and first-run assertions. The registry still lists the two formal verification skills. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🛑 14 blocking findings
🔴 Critical · Transcript path normalization can cross workspace boundaries
🔴 High · Verify both quiet-rerun offer mentions
🔴 High · Exercise the ordinary offer's affirmative handoff
🔴 High · Detect intermediate Codex questions on quiet reruns
🔴 High · Exercise quiet reruns without supplying their answers
🔴 High · First-run still accepts questions despite supplied declines
🔴 High · Require the rerun's post-write smoke panel
🔴 High · Require probe evidence before accepting an automatic write
🔴 High · Exercise both affirmative setup-offer routes
🔴 High · keep-setting's only evidence of setup work is the rewrite
🔴 High · Exercise the formal offer through setup
🔴 High · No live case exercises the #46 qualifying rerun
🟡 Medium · Do not use an unconfirmed verification edit as the sync point
🟡 Medium · Include uncommitted covered-code changes
Check
|
Operator waiver for head dc9d157 (#234, #46, #235). No open blocking finding is material. Eleven of the fourteen are verifier coverage gaps. On 2026-10-21 Eric decided to drop the verifier cases that covered them ("roll it back"). Head 7 restores the verifier's recipes, notes, parser and tests to main.
Coverage gaps:
Product text:
No consequence is security, secret exposure, data loss, or a gate or waiver that publishes without its run. The advisory |
Live evidence: Open Pstack
|
Merge Queue Status
This pull request spent 16 seconds in the queue, including 2 seconds running CI. Required conditions to merge
|
Summary
Syncs Open Pstack to Cursor pstack 0.15.29 (
88d4751) from 0.15.25, and releases it as 1.16.0. The same PR stops setup reruns from asking questions they can answer from the sheet (#46), and fixes/recallin worktree sessions (#235).Closes #234. Closes #46. Closes #235.
Evidence
scripts/upstream-audit.pyandscripts/upstream-merge.pyagainst88d4751gave 6 verbatim, 3 clean merges, 3 needing review and 14 unmapped (exit 1, review needed).cursor/main(190d287) has no newer pstack commit./pstack:recall, run from a.claude/worktrees/session, derived-Users-…-open-pstack-.claude-worktrees-…, andGlobreported "Directory does not exist". The real folder is-Users-…-open-pstack--claude-worktrees-….recall and session pickup name the wrong transcript folder in worktree sessions #235 after: the three files encode each
/and each.as-, with a worked example that has a dot.setup-pstack/SKILL.mdhas not changed sincecd3b3f35. On heads 3, 4 and 5, earlier verifier cases ran setup in both harnesses on a complete sheet with no answers. I read those six sessions. Each one asked no question, wrote the sheet, and named/create-verification-skilland/create-formal-verification-skillwithout invoking them. The head-3 and head-5 sessions also show the probes and the smoke panel running.--self-testand--wide, because the registry change makes this a verifier-changing PR. Features, and why each runs:claude:setupandcodex:setup: setup's behaviour changes (setup-pstack: on a rerun with a valid sheet and passing probes, steps 4/6/7 should take the sheet as their answers #46, steps 10 and 11). These are main's eight cases per harness.claude:skill-invocation:create-formal-verification-skilland the Codex one: a new skill, now model-invocable, as the one stand-in for every skill text change.claude:skill-invocation:recall: the recall and session pickup name the wrong transcript folder in worktree sessions #235 rule, as the stand-in for the same rule in three files. Codex transcripts live elsewhere.project-skillin both harnesses comes with--self-test.Merge Danger
Door: two-way
Blast Radius: setup
Setup reruns change behaviour: a qualifying rerun stops asking and writes when every probe passes. A first run, an invalid sheet, a kept-predecessor proposal or a named change still asks, and a failed probe still stops without writing.
Acceptance criteria
From #234:
live-gateon its exact head." Pending.UPSTREAM.mdrecords88d4751and pstack 0.15.29." Done: the sync-point table and the 1.16.0 row.python3 scripts/release.py publish." After merge.From #46:
setup-pstack/SKILL.md, with edits at the step 2, 4 and 7 questions and the confirmation clauses in steps 7 and 8. The six live sessions read on heads 3 to 5 show it (Evidence, above).setup-pstack/SKILL.md, step 5).From #235:
/and each.as-. Verified live byclaude:skill-invocation:recall.Gate results
On
dc9d1572:bun run testbun run typechecktsc, three projectsbun run staticclaude plugin validate plugins/pstackbun plugins/pstack/skills/poteto-mode/scripts/runner/registry/render.ts --checkpython3 scripts/release_test.pyReview rounds
96a1ffc9to4ac36d85) added verifier cases for setup-pstack: on a rerun with a valid sheet and passing probes, steps 4/6/7 should take the sheet as their answers #46 and the formal offer: a quietkeep-settingrerun,accept-formal-offer,SETUP-DONEandACCEPT-ROUTEDsentinels, and a parser field for the final reply. Every Unfret round after head 2 and every live-gate failure targeted those cases.dc9d1572): on 2026-10-21 Eric decided to drop that machinery. The verifier's recipes, notes, parser and tests are main's bytes again, and only the registry listing of the two formal skills remains..versus-(pre-accepted, Claude Code's own encoding), and the maintain skill's fallback sync point and uncommitted-change scope (pre-acceptedandinert, upstream text).Not verified
keep-settingsupplies answers, so it passes under the old and the new behaviour. The quiet path rests on the six sessions read on heads 3 to 5, whose setup text matches this head byte for byte./sharpen,/ketchup,typescript-best-practicesor/maintain-formal-verification-skill. Their changes are upstream text, and one new skill stands in for skill loading. The generic skill case proves loading, not behaviour.pstack@open-pstackand upstream'spstack@cursor-pluginsinstalled. README says to install one.🤖 Generated with Claude Code