Skip to content

Merge pstack-claude 0.9.79 into the Herdr fork (0.9.80) - #22

Merged
TiewKH merged 12 commits into
mainfrom
sync/pstack-claude-0.9.79
Oct 9, 2026
Merged

TiewKH merged 12 commits into
mainfrom
sync/pstack-claude-0.9.79

Conversation

@TiewKH

@TiewKH TiewKH commented Oct 9, 2026

Copy link
Copy Markdown
Owner

Summary

This merges michael-denyer/pstack-claude 0.9.76 through 0.9.79 (3b0bc62..60ae9e2, 11 commits) into the fork.

From upstream

  • haiku joins the default panel.
  • reflect keeps the parent's verdict out of its reviewer prompts.
  • The cursor/plugins pin moves to df58112 (v0.15.15).
  • ship-pr cancel-pending can dequeue a PR again.
  • Fixes in watch-pr (--interval limit), the Pi scheduler and agent restore, the orch store lock, worktree-audit, and sync. The Lean and TLA+ models behind them come too.

Kept in the fork: the Herdr dispatcher, --next, the Agent gate, routes, the Herdr model menu in models.json, the Herdr pointers in skills, and the real Herdr CI job. Upstream touched none of them.

Conflicts resolved

  • tools/forks.json: the reflect entry takes upstream's longer description and keeps the fork's Herdr pointer.
  • CHANGES.md: upstream released its own 0.9.76 and 0.9.77, which collide with the fork's. Its four entries go under the new ## 0.9.80 merge entry as ### pstack-claude subsections, as in earlier syncs.
  • VERSION and the manifests: set to 0.9.80 and regenerated.
  • README.md: the upstream pin moves to df58112. The fork's README test caught the stale pin.

Merge with a merge commit, not a squash, so the next sync starts from 60ae9e2.

Test plan

  • bun tools/generate.mjs --check
  • Fork registry dry runs, bun tools/sync.mjs <component> <pinned sha> --dry-run for pstack and cursor-team-kit: both exit 0.
  • node tests/herdr-runtime.test.mjs
  • poteto-mode/scripts: typecheck and Prettier pass. In bun test orch watch-pr herdr, 331 pass and 1 fails: the orch "Graphite output that carries colour codes" test. It fails the same way on main on this machine.
  • bun test tests/: 1195 pass and 1 fails: the 5 s timeout in log.test.mjs "40 concurrent writers". It fails the same way on main on this machine.
  • markdownlint
  • CI, including the real Herdr dispatch job

🤖 Generated with Claude Code

michael-denyer and others added 12 commits October 8, 2026 09:54
…ael-denyer#232)

* fix(reflect): keep the parent's verdict out of reviewer prompts

A focus note beside the transcript path stated the parent's diagnosis as fact, and two of three reviewers built on it (michael-denyer#231). reflect now adds nothing beside a transcript path, and the fallback digest records events in turn order without a diagnosis, verdict, or cause. Release 0.9.76.

* Keep reflect's fallback digest to one line per event
The panel tier in models.json gains haiku, so arena, architect, and interrogate run four models when no override sheet names the role. Release 0.9.77.
* feat(pstack): sync to upstream 1e56b29

poteto-help offers /setup-pstack when the model sheet is missing and the answer depends on it.

* feat(pstack): sync to upstream df58112 (v0.15.15)

Upstream dropped one panel model and lowered its Opus effort. The port keeps its own panel and effort from models.json, and new substitution rules stop an upstream model change from conflicting with forked lines. Release 0.9.78.
)

* test(sync): pin the period after a setup-pstack slug

* fix(sync): keep the period after a setup-pstack slug

The slug rule's last segment admits dots, so a bare slug that ended a sentence took the period into <slug>. A lookbehind stops the match before a trailing dot.

* docs(pstack): name the default effort in poteto-help and correct the 0.9.78 sync counts

poteto-help offered a reasoning budget, a step the port's setup-pstack does not have. The 0.9.78 entry listed counts that summed to 87 over 82 synced files, so it now states what the two sync commits show.
…ichael-denyer#236)

A timer delay above 2^31 - 1 ms is replaced with 1 ms, so --interval above 2147483.647 seconds made every poll sleep return at once. The parser now refuses it. The Lean model of the polling arithmetic comes with the change; its sleep bound assumes a sleep lasts as long as asked, which this keeps true for the CLI.
…enyer#237)

/loop treated any non-idle session as a run in flight. Pi is also not idle during a manual compaction, and it emits agent_settled only when a run ends, so a /loop typed during a compaction left the slot sealed and the next run was refused every wakeup. The scheduler now tracks a run from agent_start to agent_settled and seals only then. The TLA+ model of the scheduler comes with the change; two of its runs still fail by design and record narrower findings this does not fix.
…denyer#238)

The release read the lock, saw its own pid, and unlinked the lock by path as a separate step. A forced takeover between the two replaced the lock, and the release deleted the replacement, which left the forced writer with no lock on disk. The release now runs its read and unlink behind the claim a takeover holds, and waits for a live claimant to finish. The TLA+ model of the lock comes with the change; two of its runs still fail by design and record the empty lock a filesystem without hard links allows.
Co-authored-by: Alex  OG Dev <Alexdev@Overcy-Dev-1.local>
…el-denyer#240)

* test(shipping): answer the shipping tests from one fake GitHub

Both shipping test files dispatched on the query text themselves, and each compared the dequeue mutation with a fixed string. That check failed a query that differed only in spacing and passed a wrong input field on disablePullRequestAutoMerge.

fakeGitHub holds each mutation's required input field in one table and answers the way the endpoint does: a query gets back only the fields it selects, and a mutation needs the right name, input field, variable type, and pull request id.

* test(shipping): match only top-level fields and allow a named mutation

The field filter matched the nested id in mergeQueueEntry { id }, so the fake still returned the pull request id to a query that no longer selected it. The mutation pattern also refused a named operation, which GitHub accepts.
Takes upstream's haiku in the default panel, reflect reviewer prompts
without the parent's verdict, the cursor/plugins pin at df58112
(v0.15.15), the ship-pr dequeue fix, and the watch-pr, Pi scheduler,
Pi agent restore, orch store lock, worktree-audit, and sync fixes with
their Lean and TLA+ models. Keeps the fork's Herdr dispatcher, --next,
Agent gate, routes, Herdr model menu, and the real Herdr CI job. The
reflect fork entry takes upstream's description and keeps the Herdr
pointer, and the README pin moves to df58112. Upstream released its
own 0.9.76 and 0.9.77, so its entries become subsections of this one
and the version moves to 0.9.80.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@TiewKH
TiewKH merged commit 2f9dd4b into main Oct 9, 2026
15 checks passed
@TiewKH
TiewKH deleted the sync/pstack-claude-0.9.79 branch October 9, 2026 03:53
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.

3 participants