Repository navigation
2.0.0-rc.18: Lauren's 4ec7ffa, six statechart fixes so a run stops instead of charting wrong, and #779's comment cleanup - #43
Merged
Conversation
All three components move from eb4db2b to 7698375. Upstream changed only pstack, and only the statechart skill (pstack #776). The label map stops on a variable or field that the --fixed or --against model lacks, in place of using the current model's start value. New --config, --fixed-config, and --against-config flags mean the agreed spec is never checked with the code model's config, and a rule the agreed config does not check is marked "not checked". When TLC finds a broken rule and then throws, the command keeps the paths it printed and warns. On a file system that cannot rename into the output folder (ENOSYS, EXDEV, EISDIR, as on FUSE mounts) it copies the files into place. TLC now checks each rule with one worker per CPU and rechecks a broken rule with one worker, each PROPERTY gets its own run, and --expect-broken accepts it. With --against each story says whether a config beside the agreed spec expects the bug, and with --fixed or --against the command lists conditions with no file:line citation. SKILL.md asks for those citations, defines a valid replay, and asks the hand-off to say whether the spec already lists each bug. The test accepts Naturals.tla anywhere under TLC 1.8.0's temp folder. bun tools/sync.mjs updated SKILL.md, lib.mjs, statechart.mjs, tlc-to-chart.mjs, and the test file cleanly, and each is byte-identical to upstream at 7698375, file modes included. No substitution, fork, or hook changed. The 15 declared forks were left alone, and cursor-team-kit and thermos synced with no file changes. Upstream's copies under harness/pstack/claude-code/ sit outside every synced component.
VERSION, the manifests, and package.json move to 2.0.0-rc.18. 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 7698375, and the README's pinned installer command names the new tag. The skill count stays at 65.
All three components move from 7698375 to 4ec7ffa. Upstream changed only
pstack, and only the statechart scripts (pstack #779). It deletes
comments that repeat the code and renames helpers so the name carries
the fact a comment held: splitComments is splitCommentsKeepingOffsets,
checkTlcOutput is tlcOutputWarning, quote is escapeMermaidQuotes,
luminance is wcagRelativeLuminance, and parseMermaid's declared is
declaredInRegion. cited takes { above } in place of a positional flag,
and one PRIMES_OR_UNCHANGED regex replaces two copies. Behavior does not
change.
bun tools/sync.mjs updated lib.mjs, statechart.mjs, tlc-to-chart.mjs,
and the test file cleanly, and the statechart directory is
byte-identical to upstream at 4ec7ffa, file modes included. No
substitution, fork, or hook changed. The 15 declared forks were left
alone, and cursor-team-kit and thermos synced with no file changes.
Upstream's copies under harness/pstack/claude-code/ sit outside every
synced component.
The CHANGES.md entry for 2.0.0-rc.18 now names upstream 4ec7ffa in its title and links pstack #779 beside #776. It says #779 changes no behavior, names the helpers it renames, and records the test runs at 4ec7ffa: without TLC 29 pass and 38 skip, and from-spec on the bundled OutputFolder model with TLC 1.7.4 exits 0 with all five rules holding. The TLC suite numbers stay labelled as runs at 7698375. NOTICE.md, NOTICE-skills.md, poteto-mode's copy of the notice, and the README's pin point at 4ec7ffa. The version stays 2.0.0-rc.18.
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
4ec7ffafor all three components. Only pstack changed upstream, only in thestatechartskill that rc.17 shipped, and its version stays at 0.15.30. Two upstream PRs land. #776 fixes the skill, and #779 cleans up its scripts with no change in behavior.pstack #776 brings the skill up to its current version. Before it, a run could draw a wrong chart or exit with the wrong code and not say so.
--fixedor--againstmodel lacks. Before, it gave that variable the current model's start value.--config,--fixed-config, and--against-configflags. The agreed spec is never checked with the code model's config, and a missing config stops the run and lists the configs beside the spec.ENOSYS,EXDEV, orEISDIR, as on FUSE mounts), the run copies the files into place.Naturals.tlaanywhere under it, where TLC 1.8.0 puts it.cursor/plugins#776 also checks each rule with one worker per CPU and checks a broken rule again with one worker, which gives the shortest paths. Each
PROPERTYgets its own TLC run, and--expect-brokenaccepts it. With--against, each story says whether a config beside the agreed spec expects the bug. With--fixedor--against, the run lists each condition of an action that no\* file:linecomment ties to code.SKILL.md(+4 -4) asks for those citations, says what a valid replay is, and asks the hand-off to say whether the spec already lists each bug.pstack #779 deletes statechart script comments that repeat the code. Where a comment held a fact, a helper's name now says it.
splitCommentsbecomessplitCommentsKeepingOffsets, andcheckTlcOutputbecomestlcOutputWarning.quotebecomesescapeMermaidQuotes,luminancebecomeswcagRelativeLuminance, andparseMermaid'sdeclaredbecomesdeclaredInRegion.citedtakes{ above }in place of a positional flag, and one exportedPRIMES_OR_UNCHANGEDregex replaces two copies of the same regex.#779 touches
lib.mjs,statechart.mjs,tlc-to-chart.mjs, and the test file, 44 lines in and 64 out. No file outside the skill uses a name it changes.All of it is Lauren's code and byte-identical to upstream at
4ec7ffa. No substitution, fork, or hook changed.Commits
7698375(#776).bun tools/sync.mjsmoves each component's pin fromeb4db2bto7698375and updatesSKILL.md,lib.mjs,statechart.mjs,tlc-to-chart.mjs, andtest/statechart.test.mjscleanly. Each matched upstream's at7698375undercmp, file modes included. The 15 declared forks were left alone. cursor-team-kit and thermos synced with no file changes.VERSIONand the manifests move to 2.0.0-rc.18. CHANGES gets the entry with its behavior-delta table. NOTICE, NOTICE-skills, poteto-mode's copy of the notice, and the README pointed at7698375, and the README's pinned installer command names the new tag. The skill count stays at 65.4ec7ffa(#779).bun tools/sync.mjsmoves each pin from7698375to4ec7ffaand updateslib.mjs,statechart.mjs,tlc-to-chart.mjs, and the test file cleanly.diff -rfinds the whole skill folder identical to upstream at4ec7ffa, and each file's git mode matches upstream's. The 15 declared forks were left alone. cursor-team-kit and thermos synced with no file changes.4ec7ffa. The rc.18 CHANGES entry names4ec7ffain its title, links #779 beside #776, and says what #779 renames. NOTICE, NOTICE-skills, poteto-mode's copy of the notice, and the README's pin point at4ec7ffa. The version stays 2.0.0-rc.18, and the behavior-delta table is unchanged because #779 changes no behavior.On T3
Nothing T3-specific changes. The new flags and messages name no Cursor tool,
.cursor/path, model, or subagent, so no rule is needed, and #779 adds none. The scripts still find TLC only throughTLA2TOOLSandJAVA, since cursor/plugins#776 left out its source's repo-pinned TLC install. The rc.17 limits still hold. Under Codex's workspace-write sandbox TLC cannot listen on its RMI port, and--pngcannot reach the npm registry.TLC 1.8.0 is a prerelease, and one gap remains with it. It words a broken temporal property as "Temporal property X was violated.", which the scripts do not read yet. So a broken temporal
PROPERTYstops the run with "TLC stopped on an error that is not a broken rule", as cursor/plugins#776 reports. The "no TLC" message still points at 1.7.4, the latest stable release.Checks at
4ec7ffaThese ran on this head.
bun tools/sync.mjs <component> 4ec7ffa --dry-runfor pstack, cursor-team-kit, and thermos after both new commits exits 0 for each, with no warning, 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 as rc.17, 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.t3-sheet.mjsagainst this machine's sheet and catalog reports that every role line parses and dispatches.git grepfinds no use ofcheckTlcOutput,splitComments,quote(, orluminance(left anywhere in the repo.statechart.mjs from-spec scripts/model/OutputFolder.tla --map scripts/model/OutputFolder.map.mjson the bundled model, with TLC 1.7.4 (TLC2 2.19) and Java 21.0.12.1 on macOS, finds that all five rules hold and prints "TLC ran 6 times in 4.5 s". It draws a 19-state chart in two parallel regions of 4 and 15 states from 4,294 model states, with 19 states that work and 0 that break a rule. It writeschart.mmd,stories.md, andsummary.jsonand exits 0.Checks at
7698375These ran on
2d8b487, before #779 was folded in. #779 changes no behavior, and they were not rerun.unshare. With TLC 1.8.0, 65 passed, that test skipped, and thePROPERTYtest failed on the wording above.TMPDIRset to its canonical/private/varpath, TLC 1.7.4 passed 65, skipped 1, and failed 1. TLC 1.8.0 passed 64, skipped 1, and failed that test and thePROPERTYtest. The failing test fails renames throughLD_PRELOAD, which macOS ignores, as in rc.17, and it passes on Linux. With the default/var/foldersTMPDIR, four more tests failed comparing temp paths and passed onceTMPDIRwas canonical.Naturals.tlafix, shown on TLC 1.8.0. The test from rc.17 fails because TLC 1.8.0 parsesNaturals.tlafromtmp/tlc-<n>/Naturals.tla, one folder below the path it expects. The synced test passed.statechart.mjs from-spec OutputFolder.tla --pngon a copy of the bundled model, with TLC 1.8.0 and Java 21, found that all five rules hold and drew the same 19-state chart. It wrotechart.mmd,chart.png,stories.md, andsummary.jsonand exited 0. Itschart.mmdandsummary.jsonwere identical to what rc.17's scripts write on the same TLC.--configflag. With a config that lists two of the five rules, the run checked only those two in 3 TLC runs, drew the same chart, and exited 0. With a config that does not exist, it exited 2 with<dir>/Missing.cfg does not exist. Pass --config with the config to check OutputFolder.tla with. The configs beside it: OutputFolder.cfg, TwoRules.cfg.and wrote no output folder.Note
Medium Risk
Changes TLC orchestration, spec-vs-code comparison semantics, and chart output for a formal-verification workflow; misconfiguration could still mislead PMs, though the release mostly replaces silent wrong charts with explicit stops and warnings.
Overview
Release 2.0.0-rc.18 bumps version manifests and pins all three synced components to Lauren Tan's cursor/plugins
4ec7ffa. Aside from notices and changelog, almost all code change is the upstreamstatechartskill (pstack #776 behavior fixes, #779 rename-only cleanup).The
from-spec/ chart pipeline is stricter and more explicit when comparing code to an agreed spec or fix:--config,--fixed-config, and--against-configchoose which TLC configs run;--againstnever uses the code model's config, and missing configs fail with a list of configs beside the spec.--fixed/--againstmodel lacks, the run stops instead of silently filling from the current model's initial state.--against, they can also say whether a sibling config's\* expect:line already expects the bug.PROPERTYrules get separate TLC runs (charts still only color INVARIANT breaks);--expect-brokencan target properties.\* file:lineon guards the code does not check) are warned and recorded insummary.json;SKILL.mdtightens replay and hand-off guidance.Helper renames only (#779): e.g.
checkTlcOutput→tlcOutputWarning,quote→escapeMermaidQuotes.Reviewed by Cursor Bugbot for commit 58f7119. Bugbot is set up for automated code reviews on this repo. Configure here.