Repository navigation
2.0.0-rc.17: Lauren's eb4db2b, a skill that draws a TLA+ model as a statechart a PM can read - #41
Merged
Merged
Conversation
All three components move from 88d4751 to eb4db2b. Upstream changed only pstack. A new skill, statechart, draws what an app's user sees as a Mermaid statechart generated from a TLA+ model (pstack #741). TLC checks each rule the reader agrees to as an invariant, each state is marked as working, still wrong, or fixed by an open change, and each class of counterexample is drawn as a numbered path. It also turns an agreed chart into a TLA+ skeleton and compares a drawn chart with the agreed one. The skill is a SKILL.md plus Node scripts (statechart.mjs, tlc-to-chart.mjs, chart-to-tla.mjs, compare-charts.mjs, lib.mjs), a bundled OutputFolder model, and a node:test suite. The scripts find TLC only through TLA2TOOLS and JAVA and exit 2 without them, and --png renders through npx @mermaid-js/mermaid-cli. poteto-help gains its row. bun tools/sync.mjs added the skill and updated poteto-help cleanly. The 12 new files are byte-identical to upstream. The skill names no Cursor tool, path, model, command, or subagent, so it takes no substitution and keeps Lauren's disable-model-invocation flag. The 15 declared forks were left alone, and cursor-team-kit and thermos synced with no file changes. Upstream's pstack README, guide page, version bump, harness tree, and CI step sit outside every synced component.
pstack #741 added a node --test step for the skills' own script tests to upstream's validate-plugins.yml, which the port does not sync. A new Skill script tests job runs the same command, node --test plugins/pstack/skills/*/scripts/test/*.test.mjs, on Node 20, the version upstream uses and the oldest the installer accepts. Today that is the statechart suite. The runner has no TLC, so the 31 tests that need it skip, as they do upstream. setup-node is pinned by SHA at v7.1.0 like every other action here.
VERSION, the manifests, and package.json move to 2.0.0-rc.17. CHANGES.md gets the entry with its behavior-delta table. NOTICE.md, NOTICE-skills.md, poteto-mode's copy of the notice, and the README point at upstream eb4db2b, the README's pinned installer command names the new tag, and its skill count moves to 65 for statechart.
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.
t3-pstack moves to Lauren Tan's pstack at cursor/plugins
eb4db2bfor all three components. Only pstack changed upstream, and its version moves to 0.15.30.statechart. It draws what an app's user sees as a Mermaid statechart generated from a TLA+ model, so a PM or a designer can judge the design without reading TLA+. TLC checks each rule the PM agrees to as an invariant. Each state is gray when it works, red when it is still wrong, and green when an open fix fixes it, and each class of counterexample is drawn as a numbered path.from-specdraws the chart,--fixedshows what an open fix changes,--againstaudits the code against an existing spec, andfrom-chartturns an agreed chart into a TLA+ skeleton and compares the two. poteto-help gains its row. Upstream's README row, guide page, harness copy, and version bump sit outside every synced component.Unlike earlier syncs, this one brings Lauren's code, not only text. The skill is a 36-line
SKILL.mdplus about 6,000 lines of Node scripts (statechart.mjs,tlc-to-chart.mjs,chart-to-tla.mjs,compare-charts.mjs,lib.mjs), a bundledOutputFolderTLA+ model, and a 2,790-linenode:testsuite. All of it is byte-identical to upstream. No substitution, fork, or hook changed.Commits
bun tools/sync.mjsmoves each component's pin from88d4751toeb4db2b, adds the 12 files underskills/statechart/, and adds poteto-help's row through existing substitutions. Each of the 12 files matches upstream's ateb4db2bundercmp, file modes included. The 15 declared forks were left alone. cursor-team-kit and thermos synced with no file changes.node --test plugins/pstack/skills/*/scripts/test/*.test.mjson Node 20, the step #741 added to upstream'svalidate-plugins.yml, which the port does not sync. Node 20 is the version upstream uses and the oldest the installer accepts.actions/setup-nodeis pinned by SHA at v7.1.0. The runner has no TLC, so 31 of the 58 tests skip, as they do upstream.VERSIONand the manifests move to 2.0.0-rc.17. CHANGES gets the entry with its behavior-delta table. NOTICE, NOTICE-skills, poteto-mode's copy of the notice, and the README point ateb4db2b, the README's pinned installer command names the new tag, and its skill count moves from 64 to 65.On T3
The skill and its scripts name no Cursor tool,
.cursor/path, model, cloud agent, or subagent, so no rule is needed. It keeps Lauren'sdisable-model-invocation: true. On Claude Code the user types/t3-pstack:statechart, and on Codex$t3-pstack:statechart.poteto-modedoes not route to it, upstream or here.The agent runs the scripts with
node <skill dir>/scripts/statechart.mjs. They import only Node built-ins, and the installer already requires Node 20. They write only to the system temp folder and beside their input, never into the installed plugin folder. TLC comes fromTLA2TOOLSandJAVA. WithoutTLA2TOOLSthe scripts print where to downloadtla2tools.jarand exit 2.--pngrenders throughnpx -y @mermaid-js/mermaid-cli.Each external call has a limit worth knowing.
java.rmi.server.ExportException: Listen failed on port: 0,SocketException: Operation not permitted). The script exits 2 and keeps TLC's output.npxcannot reach the npm registry there either. In full access, or after the user approves an escalated run, both work. In TLC 1.7.4 every fingerprint set extendsjava.rmi.server.UnicastRemoteObject, so any TLC run in that sandbox fails this way, not only this skill's.spawnSync("npx", ...)without a shell should not findnpx.cmd, so--pngwould print "could not render" and exit 2. This is inferred from how Node starts processes on Windows and was not run./vartemp path with Java's canonical/private/varform and passes onceTMPDIRis the canonical path. The other fails renames withLD_PRELOAD, which macOS ignores. Both pass on Linux.Checks
bun tools/sync.mjs <component> eb4db2b --dry-runfor pstack, cursor-team-kit, and thermos after the sync exits 0 for each, with no undeclared fork, no denylist hit, and no unmatched substitution. pstack reads 132 unchanged files and the same 15 declared forks with 551 changed lines, andtools/forks.jsonis unchanged.bun tools/generate.mjs --checkreports 17 generated files current and passes the hooks freeze check.GIT_CONFIG_GLOBAL=/dev/null bun test tests/ --timeout 30000passes 550, skips 46, and fails 0.unshare. On macOS with Java 21 and TLC 1.7.4, 55 pass, 1 skips, and the 2 tests above fail.ci.yml.t3-sheet.mjsagainst this machine's sheet and catalog reports that every role line parses and dispatches.T3_PSTACK_E2E=1 bun test tests/install-e2e.test.mjswith the realclaude2.1.308 andcodex0.163.0 CLIs passes 12 of 12.tools/install.mjs install --source <this branch>into a throwaway HOME installs 2.0.0-rc.17 in Claude Code and Codex, and every check passes.claude plugin details t3-pstack@t3-pstacklists 65 skills,statechartamong them, and Claude Code 2.1.308's session init listst3-pstack:statechart. Codex 0.163.0's app-serverskills/listreturns 65t3-pstack:skills,t3-pstack:statechartenabled.statechart.mjs from-spec OutputFolder.tla --pngon the bundled model, with TLC 1.7.4 and Java 21, finds that all five rules hold and draws a 19-state chart in two parallel regions from 4,294 model states. It writeschart.mmd,chart.png,stories.md, andsummary.jsonand exits 0. WithoutTLA2TOOLSthe same command prints the download hint and exits 2.