Skip to content

sync: Cursor pstack 0.15.36 as Open Pstack 1.17.0 (#262) - #264

Merged
mergify[bot] merged 8 commits into
mainfrom
sync/262-pstack-0.15.36
Nov 6, 2026
Merged

mergify[bot] merged 8 commits into
mainfrom
sync/262-pstack-0.15.36

Conversation

@ericlitman

@ericlitman ericlitman commented Nov 6, 2026 •

Copy link
Copy Markdown
Owner

Why

Upstream Cursor pstack moved from 0.15.29 to 0.15.36. This brings Open Pstack level with it as 1.17.0, keeping our Claude Code and Codex adaptations. Closes #262.

Summary

 plugins/pstack/skills/
+├── statechart/              # TLA+ model check drawn as a Mermaid statechart (typed-only)
+├── ketchup-video/           # /ketchup as a subtitled slide video (typed-only)
 ├── interrogate/
-│   ├── SKILL.md             # reviewers list concerns, lead sorts them
-│   └── references/          # rubric, reviewer prompt, code-quality lens, lead judgment
+│   └── SKILL.md             # adversaries prove each finding with a run; lead reruns it
 ├── arena/SKILL.md           # judge never from the parent's provider; skip if none runs
 ├── reflect/SKILL.md         # never edit a skill in the plugin cache; copy it first
 └── poteto-mode/
     ├── playbooks/orchestrate.md     # agentic: own tools, no orch CLI
     ├── playbooks/autopilot-stack.md # Autopilot-full without the merge
-    └── scripts/orch/                # deleted upstream

Interrogate in the port:

interrogate
  frame: scope + intent (read and follow in-your-own-words)
  for each `interrogate reviewers` descriptor
    parent prepares a dedicated worktree at HEAD + uncommitted changes
    route with isolated-write          # no isolated-write mode -> named dropout
  rerun every reported command; keep only failures that break the intent
  output: intent, adversaries (or dropouts), verified findings, dropped counts

Excluded from upstream, with reasons in UPSTREAM.md: the fallback chain on a rejected model slug, and refilling a rejected arena seat with the parent model. Both break the named-dropout rule. The per-commit adopt/adapt/exclude table is on #262 and in the batch design record.

Evidence

  • Mechanical merge (scripts/upstream-audit.py then scripts/upstream-merge.py against cursor/main 2776ddd): 415 verbatim, 6 clean, 15 resolved by hand, 6 removed, 6 unmapped (Cursor manifests and guide, already excluded).
  • Before: main has no statechart skill and runs orch tests. After: bun run test runs poteto-mode, 498 pass, 0 fail; bun run typecheck checks statechart's scripts. Statechart's upstream test corpus (scripts/test/, 2.9 MB) is not imported: with it, Unfret's reviewers overflowed their context twice on this PR (9051c97). Before that cut, statechart's suite passed here: 267 pass, 67 skipped for lack of TLA2TOOLS, 0 fail.
  • check-plan inline-code fix: new check-plan inline code tests pass.
  • Live gate on 9051c97: passed (evidence comment on this PR). It needs a new run on the current head. Features, in Claude Code and Codex: skill-invocation:interrogate (new seeded-defect recipe: the fixture's last commit breaks sum(); the check requires the scope checkout to stay unmodified), skill-invocation:reflect, skill-invocation:poteto-mode, and project-skill with --self-test (this PR changes verifier files).

Merge Danger

Door: two-way

Revert restores 1.16.0 content. No data or config migration.

Blast Radius: every-skill

Shared files (codex-tools.md) reach all skills. Interrogate behaves differently: it now needs writer-capable providers, and devin, opencode, dsh, amp, agy and cursor drop out of it until #263 lands. Orchestrate users lose the orch CLI.

Acceptance criteria

  1. "Every upstream pstack commit in the range has an adopt, adapt or exclude row" — done: 23 rows, in the batch record design-262.md and applied as listed in the build report; UPSTREAM.md records the new exclusions.
  2. "interrogate takes the run-based adversary design… isolated-write lanes… named dropout" — done in interrogate/SKILL.md; live: skill-invocation:interrogate (pending).
  3. "Orchestrate takes the agentic playbook, and scripts/orch/ is deleted… with its row in features/registry.json" — done; deleted orch paths map to nonRuntime, and playbooks/orchestrate.md selects poteto-mode.
  4. "statechart and ketchup-video are added and registered" — done; both in features/registry.json skills, statechart scripts under tools.
  5. "reflect never edits a skill under the plugin cache…" — done; destinations in codex-tools.md#reflect-skill-copies. Live: skill-invocation:reflect covers reflect's transcript path, not the copy (see Not verified).
  6. "Excluded… fallback chains… refilling a rejected arena seat" — done in UPSTREAM.md.
  7. "Autopilot-stack takes 'Autopilot-full without the merge'… static invariants move" — done; tests/skill-collision-repro.sh moves the fork and topology checks to Autopilot-full and adds no-merge checks.
  8. "Gates pass… live gate in Claude Code and Codex covers interrogate, reflect and poteto-mode" — gates pass (below); live gate pending.

Gate results

On a718159:

Check Exit
bun run test 0
bun run typecheck 0
bun run static 0
claude plugin validate plugins/pstack 0

no-comments pass on the owned code in the diff: 0 comments added, no edits.

Not verified

  • Statechart's test suite does not run in this repository; upstream's CI runs it.

  • Reflect's cache-to-local copy, live. The reflect recipe forbids edits.

  • Statechart's first run (mise installs Java and TLC; needs network). No headless case exists for it.

  • The README's Claude Code auto-update steps (/plugin → Marketplaces → Enable auto-update). claude plugin update exists in Claude Code's CLI help.

  • Codex user skill folder $HOME/.agents/skills/: taken from this machine's layout, not from Codex documentation.

Port patches to upstream files

Statechart's code fails strict typecheck as shipped upstream: exitClass gets a 0 | 1 | 2 return type. Its scripts/test/ folder is left out. Both are in UPSTREAM.md's ledger.

🤖 Generated with Claude Code

ericlitman and others added 6 commits November 6, 2026 05:58
Statechart takes upstream's final compiler, launcher, Pele renderer
instructions and test corpus (eb4db2b through 519d36a). Ketchup-video
comes from 3c0fdb4. Both stay typed-only. poteto-help gets both rows,
and create-formal-verification-skill tells the next agent to read and
follow the typed-only statechart skill (00d5dec).

Root test and typecheck now run statechart's suite. Statechart gets a
lockfile, pinned typescript and @types/node, and fixes for three type
errors and one macOS tmpdir symlink failure in upstream's code.

Refs #262

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
watch-pr skips fork heads during stack discovery (96dec8e) and caps a
poll sleep at an explicitly set deadline (fe096ef); it adds no implicit
timeout. check-plan's punctuation scan strips matching multi-backtick
code spans (86c2448), with upstream's tests rewritten for the port's
exported checkPlan. worktree-audit picks GNU or BSD stat and date flags
(f83fbe6) and keeps the port's transcript location.

Refs #262

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

Interrogate takes upstream's run-based adversaries (ab1f702). Each
adversary routes with isolated-write in its own worktree, which the
parent prepares at the reviewed HEAD with the scope's uncommitted
changes. A provider without isolated-write is a named dropout, and no
completed adversary means incomplete coverage. The four reference files
go. Interrogate stays model-invocable.

Arena's judge is never from the parent's provider; a judge entry that
does not run is a dropout, with no substitute slug or default pool.
Reflect copies a skill out of the plugin cache into the harness's skill
folder, mapped in codex-tools.md (7054003). Setup counts interrogate
reviewers as writers. Poteto-mode takes goal restatement, explain the
number before measuring and background steers, without the fallback
chain. Swarm's Phase A is numbered 1 to 4 (e73df47), and Explain the
Number writes the decision first.

Refs #262

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Orchestrate takes upstream's agentic playbook (c742dd6) and scripts/orch
is deleted. Workers go through provider dispatch in dedicated local
worktrees, state lives in a notes file under the config home, and PR
waits use watch-pr. A worker is replaced only on affirmative failure
evidence, and a tool error is a named dropout, never a retry on another
model.

Autopilot-stack becomes "Autopilot-full without the merge" (ab1f702).
Autopilot-full step 2 keeps the guarded rebase and push and takes the
stacked-owner, fork and split-remote rules from the old stack playbook,
so the landing invariants move with them; the stack's merge-frontier
check becomes a no-merge check. Autopilot-full, multi-phase-plan,
babysit and autonomous-run take the evidence-based blocking rule, the
same-files rebase trigger, push-each-unit and the goal scope.

Refs #262

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The verifier registers statechart and ketchup-video, maps statechart's
scripts to shipped tools, drops the orch tools row and maps the deleted
orch paths so the live gate can classify them. UPSTREAM.md moves the
sync point to 2776ddd (pstack 0.15.36), adds the new exclusions and
ledger lines, and NOTICE.md gets the provenance row. CHANGES.md
describes 1.17.0, README-UPSTREAM.md takes upstream's README, README.md
says how to turn on auto-update for open-pstack, and docs/reference.md
drops orch. Every version string is 1.17.0.

Refs #262

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The generic skill case gives interrogate no scope to review. The fixture's
last commit breaks sum(), and the check requires that the scope checkout
stays unmodified, since interrogate reports and adversaries work in their
own worktrees.

Refs #262

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

mergify Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Merge Protections

🟢 All 2 merge protections satisfied — ready to merge.

Show 2 satisfied protections

🟢 Queue ready pull requests

Automatically queue non-draft pull requests targeting main after verify and live-gate pass on the head and every review thread is resolved.

  • #review-threads-unresolved = 0
  • -draft
  • check-success=live-gate
  • check-success=verify

🟢 🚦 Auto-queue

When all merge protections are satisfied and these conditions match, this pull request will be queued automatically.

  • -files~=^\.github/
  • base = main

bun run static runs scripts/release_test.py, which writes
scripts/__pycache__/. A broad git add picked it up, and the live gate
refuses it as an unmapped path.

Refs #262

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

@unfret-eal unfret-eal Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Review incomplete

  • incomplete review: no reviewer completed
  • primary native-openai/openai/gpt-5.6-sol stream
  • fallback native-anthropic/anthropic/claude-opus-5-5 provider 400 context_overflow
  • primary native-anthropic/anthropic/claude-opus-5-5 provider 400 context_overflow
  • fallback native-anthropic/anthropic/claude-opus-5-5 oauth
  • primary native-openai/openai/gpt-6.1-sol stream
  • fallback native-anthropic/anthropic/claude-opus-5-5 provider 400 context_overflow
  • primary native-openai/openai/gpt-6.1-sol stream
  • largest inputs: plugins/pstack/skills/statechart/scripts/test/corpus/PickWorker/sany.out (526320 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/sany.out (222451 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/sany.out (215348 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/sany.out (212750 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/sany.out (181104 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/TwoPhase/sany.out (179510 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/sany.out (173792 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/CounterInstance/sany.out (150638 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/DieHard/sany.out (135251 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/LoginParallel/sany.out (131632 bytes)

@unfret-eal

unfret-eal Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

🛑 10 blocking findings

🔴 Critical · Avoid expanding all simultaneous arrow combinations

🔴 Critical · Avoid materializing every regional start combination

🔴 Critical · Large interval values exhaust the worker heap

🔴 Critical · TLC output descriptors leak across rule reruns

🔴 Critical · Native Windows crashes when starting the janitor

🟡 Medium · ChartRun input produces an empty successful chart

🟡 Medium · Preserve digit-prefixed model-value identifiers

🟡 Medium · Orchestrate verifier rule cannot be met on native-only sheets

🟡 Medium · Allow legitimate string values in default labels

🟡 Medium · ChartBound helper shadows a valid input module

Walkthrough

This PR syncs Open Pstack to upstream Cursor pstack 0.15.36 and releases it as version 1.17.0, keeping the Claude Code and Codex adaptations. The largest pieces are: - two new typed-only skills: `statechart`, a TLA+ model checker that draws Mermaid charts, and `ketchup-video`; - a rewrite of `interrogate`, where adversaries must prove each finding with a run in their own `isolated-write` worktree; - a much shorter agentic Orchestrate playbook that deletes the `orch` CLI; - Autopilot-stack redefined as "Autopilot-full without the merge". It also brings in smaller upstream fixes to `watch-pr`, `check-plan` and `worktree-audit.sh` with new tests for them. Docs, the registry and the static invariants are updated to match. The author reports that the gates pass, but the live gate still needs a run on the current head.

Area What changes Review notes
statechart skill Adds a TLA+ checker and Mermaid chart generator under `statechart/scripts` and wires it into the root typecheck, without upstream's test corpus. Findings raise: - unbounded expansion of region and arrow combinations; - heap exhaustion on large intervals; - leaked file descriptors across reruns; - a crash on native Windows; - module-name and value-parsing edge cases; - runtime formatting errors. Avoid expanding all simultaneous arrow combinations
Avoid materializing every regional start combination
Large interval values exhaust the worker heap
TLC output descriptors leak across rule reruns
Native Windows crashes when starting the janitor
ChartRun input produces an empty successful chart
ChartBound helper shadows a valid input module
Preserve digit-prefixed model-value identifiers
Allow legitimate string values in default labels
interrogate Replaces reviewers and lead triage with run-proven adversaries. Read-only providers become named dropouts. Adds a live recipe that one finding says never checks the seeded defect.
Orchestrate and autopilots Orchestrate drops the `orch` store for notes.md, provider dispatch and `watch-pr`. A finding says its different-provider verifier rule can't be met on native-only sheets. Autopilot-stack now defers to Autopilot-full, which takes over the stacked-owner and fork rules. Orchestrate verifier rule cannot be met on native-only sheets
Scripts and smaller skill changes Script fixes, each with added tests except the worktree-audit fix: - `watch-pr` ignores fork heads in stack discovery and caps each sleep at the deadline; - `check-plan` handles multi-backtick code spans; - `worktree-audit.sh` supports GNU `stat` and `date`. Skill changes: the arena judge must come from another provider, reflect copies a skill out of the plugin cache before editing, and poteto-mode restates the user's goal.
Advisories (3)
  • 🔵 Low · Exact time-unit boundaries are reported as zero · plugins/pstack/skills/statechart/scripts/backends/plain-text.ts:20-22
    The strict comparisons select the smaller unit exactly when its Date fields roll over. Executing `runtime(60000)` returns `00s`, `runtime(3600000)` returns `00min 00s`, and `runtime(86400000)` returns `00h 00min`. Consequently, TLC completion messages at those durations are rewritten incorrectly in `tlc.out`. The same boundary mistake occurs in the day comparisons on lines 16 and 18. Also reported for this defect: - Handle exact duration-unit boundaries (plugins/pstack/skills/statechart/scripts/backends/plain-text.ts:20-21): The strict comparisons send exact boundaries into a smaller-unit formatter whose fields have already wrapped. Executing `runtime(60000)`, `runtime(3600000)`, and `runtime(86400000)` returns `00s`, `00min 00s`, and `00h 00min`, respectively. Consequently, TLC's `Finished in 60000ms` becomes a claim that the run finished in zero seconds in `tlc.out`. The minute, hour, and day boundary comparisons need consistent inclusive handling.
    Not blocking because: Exact-unit durations are displayed as zero in the completion log. This presentation-only formatter does not control checking, chart generation, or exit status, and the supplied evidence identifies no decision gate that consumes the timing.
  • 🔵 Low · Calculate elapsed days independently of calendar years · plugins/pstack/skills/statechart/scripts/backends/plain-text.ts:19
    This expression calculates the day within the manufactured date's year rather than total elapsed days. Executing `runtime(366 * 86400000)` returns `1d 00h`, while 367 days returns `2d 00h`. A TLC run lasting at least 366 days therefore has its elapsed duration understated by a year in the retained output. This remains incorrect after fixing the exact-unit boundary comparisons.
    Not blocking because: The year rollover understates a completion duration in retained textual output. The formatter does not determine rule verdicts, graph contents, or exit status, and no supplied acceptance or deployment consumer reads this duration.
  • 🔵 Low · Interrogate live recipe never checks the seeded defect · .claude/skills/verify-open-pstack/features/recipes.ts:158-161
    The new case seeds a bug: its last commit changes a + b to a - b. Its check asserts only that sum.mjs and the tracked files are unchanged, and it never reads result.md. So skill-invocation:interrogate passes even when every adversary drops out, for example with no isolated-write route or a failed worktree prep, and result.md reports incomplete coverage or no findings. The run-based adversary flow that this PR rewrites can therefore fail while the live gate still publishes a pass.
    Not blocking because: The seeded-defect outcome is unchecked, but the recipe's explicit assertions establish only invocation, report creation, and an unchanged checkout. REVIEW.md treats behavior that no recipe asserts as an advisory coverage gap.
Since the last review
  • New: Avoid expanding all simultaneous arrow combinations
  • New: ChartRun input produces an empty successful chart
  • New: Avoid materializing every regional start combination
  • New: Preserve digit-prefixed model-value identifiers
  • New: Orchestrate verifier rule cannot be met on native-only sheets
  • New: Large interval values exhaust the worker heap
  • New: Allow legitimate string values in default labels
  • New: TLC output descriptors leak across rule reruns
  • New: ChartBound helper shadows a valid input module
  • New: Native Windows crashes when starting the janitor
Repair prompt

Read the Unfret check run for ericlitman/open-pstack#264 at head a718159df3f7be6166e8533dc2ed45010e8876e9 (run panel:a718159df3f7be6166e8533dc2ed45010e8876e9:ElyW7gLRAW0:TEBqZolfUBE, check). Use the check's App id and GET /repos/ericlitman/open-pstack/check-runs/127871587642; its output.text contains the structured result. Compare it with the current code and head, verify that each listed mandatory finding still applies, repair only those that do, honor the repository constraints, and validate the changes. Leave advisories and accepted risks alone. A manually resolved thread is not a waiver.

Details
Lane / stage Model Effort Outcome Duration
broad-gpt-5.6-sol-xhigh / review openai/gpt-5.6-sol → gpt-5.6-sol · primary xhigh succeeded 8 min 27 s
broad-opus-5.5-max / review anthropic/claude-opus-5-5 → claude-opus-5-5 · primary max succeeded 13 min 45 s
focal-gpt-5.6-sol-xhigh copy / review openai/gpt-6.1-sol → gpt-6.1-sol · primary xhigh succeeded 17 min 26 s
focal-gpt-5.6-sol-xhigh copy 2 / review openai/gpt-6.1-sol → gpt-6.1-sol · primary xhigh succeeded 15 min 28 s
judge / judge openai/gpt-6-astra → gpt-6-astra · primary high succeeded 2 min 43 s

First review of this pull request.
4 reviewers finished.
Commit a718159.
Check run.
Run: GET /unfret/run/panel:a718159df3f7be6166e8533dc2ed45010e8876e9:ElyW7gLRAW0:TEBqZolfUBE.

@unfret review · @unfret status · @unfret help

@ericlitman

Copy link
Copy Markdown
Owner Author

@unfret review

@greptile-apps

greptile-apps Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileTier: apex

[High impact] The update changes shared guidance and tools used across several Open Pstack workflows.

The PR still needs the existing Orchestrate fix before merging because Claude Code sub-coordinators cannot start their assigned workers.

Findings

  1. P1 Sub-coordinators cannot start workers ▶

Summary

Syncs Open Pstack to Cursor pstack 0.15.36 as version 1.17.0.

  • Interrogate keeps findings that a run proves.
  • Statechart turns a TLA+ model check into a chart and report.
  • Orchestrate uses the coordinator’s tools instead of the orch command.
  • Autopilot-stack stops before merging and hands PRs to the operator.
  • PR watching ignores fork heads as stack parents and respects its timeout.
  • Plan checks recognize multi-backtick code spans across supported wording.
  • Ketchup-video turns a chat catch-up into subtitled slides.
  • Arena skips its judge when no eligible provider can run it.
  • Reflect copies cached skills before editing them.
  • Agents restate the goal and explain numbers before measuring.
  • The package and its feature guides identify the 1.17.0 release.

Reviews (2) · Last reviewed commit: "sync: leave statechart's upstream test c..." · Reviewed by Greptile

@unfret-eal unfret-eal Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Review incomplete

  • incomplete review: no reviewer completed
  • primary native-openai/openai/gpt-5.6-sol stream
  • fallback native-anthropic/anthropic/claude-opus-5-5 provider 400 context_overflow
  • primary native-anthropic/anthropic/claude-opus-5-5 provider 400 context_overflow
  • fallback native-anthropic/anthropic/claude-opus-5-5 oauth
  • primary native-openai/openai/gpt-6.1-sol stream
  • fallback native-anthropic/anthropic/claude-opus-5-5 provider 400 context_overflow
  • primary native-openai/openai/gpt-6.1-sol stream
  • largest inputs: plugins/pstack/skills/statechart/scripts/test/corpus/PickWorker/sany.out (526320 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/MediaPlayerProps/sany.out (222451 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/MediaPlayerFixed/sany.out (215348 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/MediaPlayer/sany.out (212750 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/TwoPhaseFixed/sany.out (181104 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/TwoPhase/sany.out (179510 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/LoginGuarded/sany.out (173792 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/CounterInstance/sany.out (150638 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/DieHard/sany.out (135251 bytes), plugins/pstack/skills/statechart/scripts/test/corpus/LoginParallel/sany.out (131632 bytes)

@ericlitman

Copy link
Copy Markdown
Owner Author

Live evidence: Open Pstack

  • Candidate SHA: 9051c974fd598ac73bba4de16249991c24bd8316
  • Base SHA: b4c5e3d63318308b7e11f26b2bc156e7793d834a
  • Result: PASSED — named features verified
  • Self-test: completed in both harnesses
  • Planned sessions: 10 (limit 12)
  • Publisher revision: 9051c974fd598ac73bba4de16249991c24bd8316
  • Evidence-set SHA-256: 52ad390d65810818d97d6a7f6736b10c2c42a5c0862cc5d7aa250e684fc34a6e
  • Installation (claude): CLI 2.1.318 (Claude Code), plugin 1.17.0, candidate 9051c974fd598ac73bba4de16249991c24bd8316, tree ea529db610278515f34874411b0b34ec326d7e4b1173fa11c109aa6f176906d2.
  • Installation (codex): CLI codex-cli 0.166.0, plugin 1.17.0, candidate 9051c974fd598ac73bba4de16249991c24bd8316, tree ea529db610278515f34874411b0b34ec326d7e4b1173fa11c109aa6f176906d2.
  • Observation (claude / skill-invocation:interrogate): surface claude -p stream-json with the candidate plugin-dir; action recipe skill-invocation:interrogate: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md invoke:scope-unmodified; 4 assertions machine-checked; transcript SHA-256 a5de77829776c4c2d9463befb61725c382df295d3cf242e3c7d9818989a75f1d; artifact-set SHA-256 8e3a7abd4038596ca5dc9f2f628491fca70537c877424da064e2e9a809493b98.
  • Observation (claude / skill-invocation:reflect): surface claude -p stream-json with the candidate plugin-dir; action recipe skill-invocation:reflect: locate-transcript, digest-fallback; result passed 9 assertions; ids retained privately; 9 assertions machine-checked; transcript SHA-256 f02ed705e2f92275ee9d03fc0a5293b1117d68e45edd87b0bea42116ea8128ea; artifact-set SHA-256 2795f5000a1ee53a03ef8600f328cf684b6e08b95cff4bfcaab70f2ce76429ca.
  • Observation (claude / skill-invocation:poteto-mode): surface claude -p stream-json with the candidate plugin-dir; action recipe skill-invocation:poteto-mode: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md; 3 assertions machine-checked; transcript SHA-256 c9f944982dadaee54df74dfbe2a0f3a191f92531867bef816591cc5fecd3f564; artifact-set SHA-256 66e0731694a7a2c91c1adfa254989112e5ff019632540ada1938df05e27ae016.
  • Observation (claude / project-skill): surface claude -p stream-json with the candidate plugin-dir; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 ac80e05c97fd17f0560b3e8bfc7fa94194216c13e3bd7ab4e2ca76a2dab26e9e; artifact-set SHA-256 e42f012e619eab1ea59d09efc184b1e617d482aabbfa0558c8db55d81e2760dd.
  • Observation (codex / skill-invocation:interrogate): surface codex exec --json with the run-owned candidate installation; action recipe skill-invocation:interrogate: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md invoke:scope-unmodified; 4 assertions machine-checked; transcript SHA-256 ae77813702cac28366bf19a6932808810b6771f0dfc56e6b384c767fcaea6c6d; artifact-set SHA-256 68189dbc377a0a06d99ab113879378b1343a569f20e8f4db60dc67d3f3af7790.
  • Observation (codex / skill-invocation:reflect): surface codex exec --json with the run-owned candidate installation; action recipe skill-invocation:reflect: locate-transcript, digest-fallback; result passed 9 assertions; ids retained privately; 9 assertions machine-checked; transcript SHA-256 31d515c9a27c48cb253fa2d6ae7555560de2b556b08b41766a37ba06b32a03d6; artifact-set SHA-256 90c7a99b4fcb4b22fb79ccf5ce4fb8fd59ba1f5ce0ee9bea0a21f60dbf62901e.
  • Observation (codex / skill-invocation:poteto-mode): surface codex exec --json with the run-owned candidate installation; action recipe skill-invocation:poteto-mode: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md; 3 assertions machine-checked; transcript SHA-256 09d236f3d4b4262150b53e2c31fa4065cc21a5ed809510465a1fb2c0c2bbbb80; artifact-set SHA-256 0357df0f3a605d86c65e06962a20b10a3e535b5359219d5c5ec40323887e4bf7.
  • Observation (codex / project-skill): surface codex exec --json with the run-owned candidate installation; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 6df7304e627e80efc8a664cbcb197b0b5a11d002cf3cdb876699610e87bbbd51; artifact-set SHA-256 e752a3d67207c7235b8ac4bc93ec7f38f6ae65e88c687da6c098a194e9c58642.
  • Policy: every new head requires a fresh run; this verifier does not change PR state, queue, or merge.

@ericlitman
ericlitman marked this pull request as draft November 6, 2026 11:36
statechart/scripts/test/ is 2.9 MB of upstream test data and TLC output.
With it, the review service's reviewers overflow their context on this
PR twice, so the head never gets a review. Upstream's CI runs that suite.
The root typecheck still checks statechart's scripts.

Refs #262

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ericlitman
ericlitman marked this pull request as ready for review November 6, 2026 11:37

@unfret-eal unfret-eal Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛑 10 blocking findings
🔴 Critical · Avoid expanding all simultaneous arrow combinations
🔴 Critical · Avoid materializing every regional start combination
🔴 Critical · Large interval values exhaust the worker heap
🔴 Critical · TLC output descriptors leak across rule reruns
🔴 Critical · Native Windows crashes when starting the janitor
🟡 Medium · ChartRun input produces an empty successful chart
🟡 Medium · Preserve digit-prefixed model-value identifiers
🟡 Medium · Orchestrate verifier rule cannot be met on native-only sheets
🟡 Medium · Allow legitimate string values in default labels
🟡 Medium · ChartBound helper shadows a valid input module
Check

@ericlitman

Copy link
Copy Markdown
Owner Author

Live evidence: Open Pstack

  • Candidate SHA: a718159df3f7be6166e8533dc2ed45010e8876e9
  • Base SHA: b4c5e3d63318308b7e11f26b2bc156e7793d834a
  • Result: PASSED — named features verified
  • Self-test: completed in both harnesses
  • Planned sessions: 10 (limit 12)
  • Publisher revision: a718159df3f7be6166e8533dc2ed45010e8876e9
  • Evidence-set SHA-256: 218aac0da17f2959beaba24c8de62d92a51adbf78993babc489ba332e2f59db0
  • Installation (claude): CLI 2.1.318 (Claude Code), plugin 1.17.0, candidate a718159df3f7be6166e8533dc2ed45010e8876e9, tree 913b75b88c0098026f7058e05f8fa176c1005cb707044510b4e05ad25447595b.
  • Installation (codex): CLI codex-cli 0.166.0, plugin 1.17.0, candidate a718159df3f7be6166e8533dc2ed45010e8876e9, tree 913b75b88c0098026f7058e05f8fa176c1005cb707044510b4e05ad25447595b.
  • Observation (claude / skill-invocation:interrogate): surface claude -p stream-json with the candidate plugin-dir; action recipe skill-invocation:interrogate: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md invoke:scope-unmodified; 4 assertions machine-checked; transcript SHA-256 a768f54a0f52730eab6ea811c5030958cec76dbacbb9d445a17fe4a47e2c2fe7; artifact-set SHA-256 f4c22517ed165e7578643002100f23e6c997c72db474c03529650208df5396ec.
  • Observation (claude / skill-invocation:reflect): surface claude -p stream-json with the candidate plugin-dir; action recipe skill-invocation:reflect: locate-transcript, digest-fallback; result passed 9 assertions; ids retained privately; 9 assertions machine-checked; transcript SHA-256 513651f6dcb7db182664c1d4ece4f49f77a9c1b075dfd1cdbc31d511f73bdaef; artifact-set SHA-256 c0442c7495519002bd93714196c0df0fbc21da6f30fcbb96c5df56995622d882.
  • Observation (claude / skill-invocation:poteto-mode): surface claude -p stream-json with the candidate plugin-dir; action recipe skill-invocation:poteto-mode: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md; 3 assertions machine-checked; transcript SHA-256 95bb501fb235f042db7e75a8c5d9486433aaface47ba678c0c4d48b4e3ce64ce; artifact-set SHA-256 21361bf32cb2d5b6b259981e9ca9dba8c236620cd891d8dc0b45908cac5bd177.
  • Observation (claude / project-skill): surface claude -p stream-json with the candidate plugin-dir; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 dadbd4be35030aa9976b6caea31bbf5a5949925ad3f203a65010f43b2d7ca382; artifact-set SHA-256 fac447b0a612cd3696507e80154a017228becb12ee37034907b74288d9f88494.
  • Observation (codex / skill-invocation:interrogate): surface codex exec --json with the run-owned candidate installation; action recipe skill-invocation:interrogate: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md invoke:scope-unmodified; 4 assertions machine-checked; transcript SHA-256 2be888103f4f6f4a42b238aa1b02739f6587615007056a8bb4fb2fe3fb8f755e; artifact-set SHA-256 1fd27c104310457e4df60e836c79babd3634946b62903b2f418a9d8f22f7027b.
  • Observation (codex / skill-invocation:reflect): surface codex exec --json with the run-owned candidate installation; action recipe skill-invocation:reflect: locate-transcript, digest-fallback; result passed 9 assertions; ids retained privately; 9 assertions machine-checked; transcript SHA-256 5ad0a49df2132323c82bcb8aac11806d5d7e5b199c6f496788f7933614b29c80; artifact-set SHA-256 a2bd60a9299928e5bfa83ff03d5b472c8c526ba9599681278d37f187e9011e48.
  • Observation (codex / skill-invocation:poteto-mode): surface codex exec --json with the run-owned candidate installation; action recipe skill-invocation:poteto-mode: invoke; result passed: invoke:exit-0 invoke:skill-loaded invoke:file:result.md; 3 assertions machine-checked; transcript SHA-256 bea0c03165e0dd2930bfae82a16508598d513e7e783ae7047357bb188143c309; artifact-set SHA-256 c5c1566113cbdc261ff17a312bd239b4b9d7c5300da7bffa1f2b40d3a36b1eb2.
  • Observation (codex / project-skill): surface codex exec --json with the run-owned candidate installation; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 c0b1e39565239b31140f1bc4b25b79ccab0e8736e6bb48b14788e487d48793c1; artifact-set SHA-256 9fb0af298c1abe0e02e50f8c726779f82a80571c39d3bace2694cf67c44f20b5.
  • Policy: every new head requires a fresh run; this verifier does not change PR state, queue, or merge.

@mergify
mergify Bot merged commit bf53ac9 into main Nov 6, 2026
8 of 9 checks passed
@mergify

mergify Bot commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

✅ Merged into main as bf53ac9 at 12:05 UTC

Less than a minute in the queue, with no time running CI.

So far

  • ✅ Entered the queue Fri 6 Nov, 12:05 · rule default · triggered by merge protections
  • ✅ Checks skipped · PR is already up-to-date
  • ✅ Merged 12:05 · bf53ac9 · merge
8 merge conditions met
  • github-review-approved · required by GitHub repository ruleset rule Protect main
  • #review-threads-unresolved = 0 · required by Merge Protections rule Queue ready pull requests
  • -draft · required by Merge Protections rule Queue ready pull requests
  • check-success=live-gate · required by Merge Protections rule Queue ready pull requests
  • check-success=verify · required by Merge Protections rule Queue ready pull requests
  • any of · required by GitHub repository ruleset rule Protect main:
    • check-success = @github-actions/verify
    • check-neutral = @github-actions/verify
    • check-skipped = @github-actions/verify
  • any of · required by GitHub repository ruleset rule Protect main:
    • check-success = live-gate
    • check-neutral = live-gate
    • check-skipped = live-gate
  • any of · required by GitHub repository ruleset rule Review gate:
    • check-success = @mergify/Mergify Merge Protections
    • check-neutral = @mergify/Mergify Merge Protections
    • check-skipped = @mergify/Mergify Merge Protections

Times in UTC · dashboard · how the merge queue works

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.

Sync Cursor pstack 0.15.36 as Open Pstack 1.17.0

1 participant