Repository navigation
2.0.0-rc.19: Lauren's e73df47, statechart charts any system, a ketchup-video skill, and reflect keeps its edits out of the plugin cache - #46
Merged
Conversation
All three components move from 4ec7ffa to e73df47. Upstream changed only pstack. statechart catches up with Lauren's source copy (#791). PNGs come from Pele and resvg in place of the Mermaid CLI, TLC installs with mise when TLA2TOOLS is unset, the bundled OutputFolder model is gone, and the skill charts how any system moves between states, not only an app's screens. create-formal-verification-skill tells a generated verify skill to read each model-check result with /statechart (#794). The new ketchup-video skill gives the /ketchup catch-up as a short silent video of slides, and poteto-help lists it (#797). reflect never edits a skill under plugins/cache/. It shows the local destination before approval, then copies the skill there and edits the copy (#800). watch-pr no longer takes a fork's head as a parent in stack discovery (#801) and caps each polling sleep at the deadline (#802). check-plan strips inline code spans whose backtick runs match (#803), orch prefers a branch's open PR over closed or merged ones (#804), worktree-audit reads transcript times with GNU stat and date as well as BSD (#805), and swarm's Phase A is numbered 1 to 4 with Phase B pointing at step 3 (#807). Three rules in tools/substitutions.json change. swarm's Phase B rule anchors on "the step 3 model" and its replacement says "the step 3 `target`". The port's copy took the new text before the sync, so the three-way merge saw the same change on both sides. A new reflect rule rewrites the destination sentence for T3. It names each harness's plugin cache and the project and user skills directories, .claude/skills on Claude Code and .agents/skills on Codex. codex debug prompt-input in a throwaway home showed Codex 0.164 reading ~/.agents/skills, $CODEX_HOME/skills, .agents/skills, and .codex/skills, and not .claude/skills. A new ketchup-video insert says to embed the video as a Markdown image whose target is its absolute path, which T3's chat renders as a player. bun tools/sync.mjs updated or added each file cleanly. It merged the four watch-pr forks and worktree-audit.sh with no conflict, and each merged file carries exactly upstream's changed lines beside the port's own. The statechart directory is byte-identical to upstream at e73df47, file modes included. --bootstrap was not used, and cursor-team-kit and thermos synced with no file changes. #792 and #798 bump upstream's manifests and #806 edits its README, all excluded paths.
VERSION, the manifests, and package.json move to 2.0.0-rc.19. CHANGES.md gets the entry with its behavior-delta table and the test runs at e73df47. NOTICE.md, NOTICE-skills.md, poteto-mode's copy of the notice, and the README point at upstream e73df47, and the README's pinned installer command names the new tag. The skill count moves to 66 with ketchup-video.
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, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 0f13a09. Configure here.
The CHANGES entry no longer implies that Codex honors ketchup-video's
disable-model-invocation. Codex 0.164 ignores the flag, as it does for
every skill that keeps it, so the entry says so. It also says #797's
README and recipes-guide rows and #806's README note are excluded paths,
in place of calling them outside every synced component.
reflect's T3 rule names the Claude Code plugin cache as
${CLAUDE_CONFIG_DIR:-~/.claude}/plugins/cache/, matching the Codex form,
since the installer also installs into redirected Claude Code homes. The
port's copy of reflect took the same text, and the pin dry run passes.
reflect's T3 rule now sends an approved Claude Code user-skill copy to
${CLAUDE_CONFIG_DIR:-~/.claude}/skills/<skill>/. Claude Code 2.1.310,
started in a throwaway home with a dead API endpoint, listed skills from
$CLAUDE_CONFIG_DIR/skills in place of ~/.claude/skills when the variable
was set, and from the project's .claude/skills, and never from
.agents/skills. A copy under ~/.claude/skills would be invisible to a
redirected home. The port's reflect copy and the CHANGES entry carry the
same text, and the pin dry run passes.
pstack #802 moved pollUntilTerminal's query-retry and poll sleeps onto a helper that stops at the time left before the deadline. The port's own wait while it confirms a BLOCKED read, which upstream does not have, still slept a full interval, so a watcher whose deadline fell inside that wait slept past it and could report a merge blocker after its timeout. It now uses the same helper. The new test in verdicts.test.ts runs the watcher with a 30-second timeout on a frontier that stays BLOCKED. Before the change it slept to 60 seconds and exited 6 with a blocker; now it exits 5 with TIMEOUT at 30 seconds. CHANGES.md records the change beside #802.
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.

Release 2.0.0-rc.19. t3-pstack moves to Lauren Tan's pstack at cursor/plugins
e73df47from4ec7ffa, for all three components. Only pstack changed upstream (0.15.30 to 0.15.32).Upstream commits and what T3 needed
~/.cache/statechart) in place of the Mermaid CLI. With noTLA2TOOLS, TLC 1.7.4 and Java install with mise. The bundledOutputFoldermodel is removed. Newrender,--cover, and goal rules through--expect-broken. About 13 new script modules and a rewritten test file.node --test plugins/pstack/skills/*/scripts/test/*.test.mjs) with no workflow change. Without mise orTLA2TOOLSthe TLC tests skip, as before./statechart, named only.ketchup-videoskill, poteto-help row/ketchupcatch-up as a short silent video of slides, with the waiting calls as text under it.ChatMarkdown.tsx), and T3 tells every model it can embed videos that way. Keeps Lauren'sdisable-model-invocation, so on Claude Code it runs as/t3-pstack:ketchup-videowhen the user types it. On Codex it is$t3-pstack:ketchup-video, and Codex 0.164 ignores the flag, as it does for every skill that keeps it.plugins/cache/. Show the local destination before approval, then copy the skill folder there and edit the copy. Never open a PR or push..cursor/skillsand~/.cursor/skillswith each harness's directories. It keepsplugins/cache/(both harnesses install plugins under that segment) and names${CLAUDE_CONFIG_DIR:-~/.claude}/plugins/cache/and${CODEX_HOME:-~/.codex}/plugins/cache/. The copy goes to.claude/skills/or${CLAUDE_CONFIG_DIR:-~/.claude}/skills/on Claude Code and.agents/skills/or~/.agents/skills/on Codex. Checked on this Mac.codex debug prompt-inputwith probe skills in a throwaway home showed Codex 0.164 reading~/.agents/skills,$CODEX_HOME/skills,.agents/skills, and.codex/skills, and not.claude/skills.claude -p --output-format stream-jsonagainst a dead API endpoint in a throwaway home showed Claude Code 2.1.310 listing~/.claude/skills(or$CLAUDE_CONFIG_DIR/skillsin its place) and.claude/skills, and not.agents/skills. "Never open a PR or push" stays.github.tsandtypes.tsare declared forks, and the three-way merge was clean.policy.tsandpolicy.test.tsare declared forks, and the three-way merge was clean. The port's own BLOCKED-confirmation wait still slept a full interval, so it now uses the same capped sleep, with a test in the port-onlyverdicts.test.ts(Bugbot's finding).target". The port's copy took the new text before the sync, so the merge saw the same change on both sides, the way the f9be7aa sync handled a moved anchor.t3-pstackmarketplace (tools/install/claude.mjs).Port changes kept
The four watch-pr files and
worktree-audit.shwere three-way merged. For each, upstream's changed lines between4ec7ffaande73df47and the port's changed lines in the sync commit are identical, so Lauren's fixes landed whole. The port's own parts are still there: the settle overlay, the in-flight check states, the no-checks reads, the BLOCKED confirmation, and the audit's ignored-file and reflog holds with its T3 transcript stub.--bootstrapwas not used. The other forks, includingfakes.test-helper.ts,cli.ts, andrender.ts, were left alone.Commits
Sync Lauren's pstack to e73df47 (#791-#807).bun tools/sync.mjsfor pstack, cursor-team-kit, and thermos (the last two with no file changes), and the threetools/substitutions.jsonrule changes.Release 2.0.0-rc.19: docs, notices, and manifests. VERSION, manifests,package.json, the CHANGES entry with its behavior-delta table, NOTICE pins, and the README's pin, tag, and skill count (65 to 66).Correct rc.19's release notes and reflect's Claude Code cache path. Review round 1 fixes, below.Point reflect's Claude Code skills copy at the config home. A redirected Claude Code home reads$CLAUDE_CONFIG_DIR/skills, not~/.claude/skills.Cap watch-pr's BLOCKED confirmation wait at the deadline. Bugbot's finding, below.Verification
bun tools/generate.mjs --checkpasses.GIT_CONFIG_GLOBAL=/dev/null bun test tests/ --timeout 30000passes 550, skips 46, fails 0.node --test plugins/pstack/skills/*/scripts/test/*.test.mjs) on Linux with Node 20.20.2, TLC 1.7.4 (checksum matches the pin), and Temurin 21 pass 146 and skip 4 (fonts, a PID namespace, a mise-only case), with 0 failing. Without TLC, as CI runs it, 58 pass and 92 skip. On macOS with TLC, 128 pass, 5 skip, and 17 fail. All 17 are the tests' macOS assumptions: a path relative to the run's folder where the Mac temp folder sits behind the/varsymlink, a rename failed throughLD_PRELOAD, which macOS ignores, and/varagainst/private/var.node statechart.mjs renderon a bundled two-region test chart wrote a correct PNG with Pele on macOS.bun run typecheckpasses,bun test orch watch-pr check-plan.test.tspasses 133 of 133, and the Prettier check passes. shellcheck passes on the mergedworktree-audit.sh.T3_PSTACK_E2E=1 bun test tests/install-e2e.test.mjspasses 9 and fails 3. The same 3 fail on unmodifiedorigin/mainon the same Mac. All three are Codex hook-trust checks under the local Codex CLI 0.164, and this PR touches neither the installer nor the hooks. They need their own follow-up.bun tools/sync.mjs <component> e73df47 --dry-runexits 0 for pstack, cursor-team-kit, and thermos, with no undeclared fork, denylist hit, or unused substitution.Neither hooks file changes.
Review
Round 1 ran Fable 5.1 (xhigh) and GPT-6-Astra (xhigh). Neither found a critical issue.
disable-model-invocation, soketchup-videostays model-invocable on Codex. This holds for every skill that keeps the flag and predates this sync (rc.17's entry says so for statechart). A Codex policy file for one skill would be a port-wide design change, so it is not in this PR. The CHANGES sentence that implied Codex honors the flag is corrected.${CODEX_HOME:-~/.codex}but a bare~/.claude. It now names${CLAUDE_CONFIG_DIR:-~/.claude}/plugins/cache/, since the installer also installs into redirected Claude Code homes.Round 2 reviewed that fix diff and the deferral. Both reviewers found nothing and accepted the deferral. A Claude Code probe then showed that a redirected home reads
$CLAUDE_CONFIG_DIR/skillsin place of~/.claude/skills, so reflect's user-skills destination on Claude Code now names${CLAUDE_CONFIG_DIR:-~/.claude}/skills/too. Without that, a copy made in a redirected home would land where that home never reads it.Round 3 reviewed that commit. Astra found nothing and reproduced the Claude Code probe. Fable's first round 3 run stopped on API errors and was replaced. The replacement found no critical or high issue, reproduced the probe, and noted one low, pre-existing gap outside this diff. automate-me's rule also names a bare
~/.claude/skills/. That is left for a follow-up.Cursor Bugbot, medium. #802's deadline cap missed the port's own BLOCKED-confirmation wait in
pollUntilTerminal, which still slept a full interval. Confirmed with a new test inverdicts.test.tsthat first failed (exit 6 after 60 seconds on a 30-second timeout), then fixed by routing that wait through the capped sleep. The test now passes (exit 5 at 30 seconds), along with all 134 script tests. This last fix came after the three review rounds, so Fable and Astra have not reviewed it.Note
Medium Risk
Touches PR watching, orchestration frontier resolution, and skill-install paths (
reflect), plus a large statechart rewrite with auto-installed TLC/Java and npm render deps; behavior changes are mostly in agent tooling rather than app runtime.Overview
Release 2.0.0-rc.19 bumps t3-pstack to upstream pstack
e73df47(0.15.32) and adds the 66th skill.The
statechartskill is reworked for general system flows, not PM-only app screens: TLC/Java install via mise whenTLA2TOOLSis missing, PNG output via Pele/resvg instead of Mermaid CLI,render CHART.mmd,--cover, and--expect-brokenfor goal rules. The bundledOutputFoldermodel is removed.New
/ketchup-videodelivers/ketchupas a silent slide video (T3 embeds via absolute-path Markdown image).reflectcopies approved skill edits into project or user skills dirs instead ofplugins/cache/.create-formal-verification-skillpoints generated TLA+ verify skills at/statechart.watch-prignores fork heads in stack discovery and caps polling sleeps (including BLOCKED confirmation) at the deadline.orchpicks the sole open PR when closed/merged history shares a branch.check-planignores punctuation inside matching multi-backtick spans.worktree-audituses GNU or BSDstat/dateflags.Version pins, notices, README skill count, and CHANGES document the sync; port-only rules cover
ketchup-videoembedding and reflect’s Claude/Codex skill paths.Reviewed by Cursor Bugbot for commit d5a9b43. Bugbot is set up for automated code reviews on this repo. Configure here.