You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
pr-recap: test Hermes, the skip path, and comment replacement live; close the Codex sketch gap #301
Follow-ups from #300 (pr-recap). The no-mistakes test step approved #300 with these paths still untested live.
Hermes. Run pr-recap on a merged PR through Hermes. On the authoring host, hermes -z stopped before any work: Gateway inaccessible: unsafe_control_path (/opt/data is owned by uid 501, expected uid 0 (gateway user)). Confirm that Hermes can run Bun and view the PNG, or that the skill's text-only fallback works.
Skip path. Run the skill on a trivial PR, such as a version pin, and confirm that it posts nothing and replies with the skip line.
Comment replacement. Post a recap, push a change, and post again. Confirm that exactly one pstack-recap comment remains.
Codex sketch quality. Codex sketches still lag Claude's. In the last two Codex rounds on PR 293, glosses kept multi-word internal terms such as "outer response" and "manifest", which the identifier check cannot catch. Measure whether the reviewer read with claude -p closes this, or try another lever.
Another follow-up, from the Shipping verifier on PR 300 (note N3): the rule that refreshes the recap after a push lives only in opening-a-pr.md. Pushes made from Babysit, Shipping, autopilot, or no-mistakes fix rounds don't refresh the recap, so a recap can describe an old head. Either put the refresh in those playbooks too, or have one shared push step own it.
Skip path: done. pr-recap ran live on Dependabot PR 302 (opentype.js 1.3.4 to 2.0.0). It skipped, posted 0 comments, and replied with the skip line. The run found the rule ambiguous for a major version bump, so fix(pr-recap): refresh the recap after any push and skip major pin bumps #303 states that a version pin skips even across a major version.
Comment replacement: done. On PR 300, the refreshed recap replaced the old one (6355188716 deleted, 6358546328 kept). A dry run first listed only the old comment. PR 297's recaps used the same path.
Hermes: still blocked, by the host's Hermes install, not by pr-recap. The hermes wrapper (/opt/homebrew/bin/hermes) runs docker exec as root, which fails the gateway's uid check (unsafe_control_path). Run as the gateway user (docker exec -u 501 hermes-default-gateway hermes ...), it fails unsafe_control_permissions. Each time the gateway starts, it recreates /opt/data/gateway.sock with mode 0755 on the macOS bind mount, and Hermes 0.22.4 requires 0600. The gateway also crash-looped with gateway session bootstrap control listener unavailable. The fix needs a Hermes update, or a HERMES_HOME that isn't on a bind mount, plus -u 501 in the wrapper.
Codex plain words: still open. Round 8 (main at 5048ec5, PRs 293 and 285) still had multi-word internal glosses on 293: "one outer response", "reviewed manifest", "unrepaired mixed read". The claude -p reader flagged them correctly every time, but Codex didn't act on its last read. A lever that records the reader's flags in story.unclear and fails the render while a flagged label is still drawn gave the plainest 293 sketch. It is brittle, though. It depends on Codex copying the flags (one run skipped 9), it matches exact text only, and one run deleted an added part when a flag pointed at it. The next attempt should have the renderer read the reader's output file itself and match on word overlap. Data is in the session scratchpad's w8/ folder.
New item: recaps must not acknowledge bot reviews. The fix(pr-recap): refresh the recap after any push and skip major pin bumps #303 verifier found that watch-pr and merge-gate treat any trusted comment containing a bot review's URL as acknowledging that review (acknowledgment() and linksReview() in skills/poteto-mode/scripts/watch-pr/review-bodies.ts). A recap that linked one would clear a review-findings blocker without anyone triaging it. fix(pr-recap): refresh the recap after any push and skip major pin bumps #303 tells recap writers never to link a bot review. Two steps remain. The structural fix is to have linksReview ignore comments that start with <!-- pstack-recap:start -->, with a red-first test. The wording should also become "never include a bot review's URL", because the check matches the URL anywhere in the comment, code spans included.
Open edges: done in fix(pr-recap): clarify refresh rules and sketch setup #312. A threads-only Babysit fix push that changes the diff refreshes the recap like any other push. An operator's hold beats a pending refresh, and the refresh is reported as pending. On trunk, fresh sonnet and codex agents already answered both scenarios correctly in 16 of 16 samples. The new text states the rules outright.
Hermes: mostly done. pr-recap ran end to end through Hermes v0.22.4 in a throwaway container whose HERMES_HOME sat on the container's own filesystem. The sketch exited 0. Hermes viewed the PNG with vision_analyze and fixed a reversed arrow, and the recap followed block.md. The installed gateway container still fails: -u 501 plus a non-bind-mount home gives profile_mismatch, and Hermes v0.22.5 doesn't fix the socket mode. The run also found that Bun older than 1.4.0 can't read the sketch lockfile. fix(pr-recap): clarify refresh rules and sketch setup #312 now states the minimum and an npx --allow-scripts=bun [email protected] fallback. Not yet run: a posting run, which needs gh and a token inside the container. That is the operator's decision.
Codex plain words: still open. I tried the next lever. The renderer read the reader's "Words to guess" list and failed while a drawn label shared words with a flagged phrase. I measured it with 2 Codex runs per arm on PR 293. It never fired, because Codex reworded flagged glosses by itself. An independent reader then flagged 6 phrases in each arm, including new multi-word internal glosses. I dropped it. The patch is kept outside the repo.
Follow-ups filed: #315 (ledger claim omits the recap exception), #317 (Bun version check, and the npx route for Node-only hosts).
Activity
mdsmithaustin commentedon Oct 23, 2026
Another follow-up, from the Shipping verifier on PR 300 (note N3): the rule that refreshes the recap after a push lives only in
opening-a-pr.md. Pushes made from Babysit, Shipping, autopilot, or no-mistakes fix rounds don't refresh the recap, so a recap can describe an old head. Either put the refresh in those playbooks too, or have one shared push step own it.feat(pr-recap): post a story-first reviewer recap with a hand-drawn s…
fix(pr-recap): refresh the recap after any push and skip major pin bu…
mdsmithaustin commentedon Oct 24, 2026
Status after a pass over every item:
hermeswrapper (/opt/homebrew/bin/hermes) runsdocker execas root, which fails the gateway's uid check (unsafe_control_path). Run as the gateway user (docker exec -u 501 hermes-default-gateway hermes ...), it failsunsafe_control_permissions. Each time the gateway starts, it recreates/opt/data/gateway.sockwith mode 0755 on the macOS bind mount, and Hermes 0.22.4 requires 0600. The gateway also crash-looped withgateway session bootstrap control listener unavailable. The fix needs a Hermes update, or aHERMES_HOMEthat isn't on a bind mount, plus-u 501in the wrapper.claude -preader flagged them correctly every time, but Codex didn't act on its last read. A lever that records the reader's flags instory.unclearand fails the render while a flagged label is still drawn gave the plainest 293 sketch. It is brittle, though. It depends on Codex copying the flags (one run skipped 9), it matches exact text only, and one run deleted an added part when a flag pointed at it. The next attempt should have the renderer read the reader's output file itself and match on word overlap. Data is in the session scratchpad'sw8/folder.acknowledgment()andlinksReview()inskills/poteto-mode/scripts/watch-pr/review-bodies.ts). A recap that linked one would clear areview-findingsblocker without anyone triaging it. fix(pr-recap): refresh the recap after any push and skip major pin bumps #303 tells recap writers never to link a bot review. Two steps remain. The structural fix is to havelinksReviewignore comments that start with<!-- pstack-recap:start -->, with a red-first test. The wording should also become "never include a bot review's URL", because the check matches the URL anywhere in the comment, code spans included.threads-onlymode refreshes the recap, and whether an operator's zero-writes hold overrides a pending refresh.Still open here: Hermes, Codex plain words, and the bot-review structural fix.
fix(watch-pr): never count a PR recap as a review acknowledgment (#305)
fix(pr-recap): clarify refresh rules and sketch setup (#312)
mdsmithaustin commentedon Oct 26, 2026
Status after #312 (
bf619d69):acknowledgment()skip recap comments. fix(pr-recap): clarify refresh rules and sketch setup #312 added a test that builds a recap from theblock.mdtemplate and fails if the marker drifts on either side. pr-recap now says "never include a bot review's URL anywhere in the comment, code spans included".threads-onlyBabysit fix push that changes the diff refreshes the recap like any other push. An operator's hold beats a pending refresh, and the refresh is reported as pending. On trunk, fresh sonnet and codex agents already answered both scenarios correctly in 16 of 16 samples. The new text states the rules outright.HERMES_HOMEsat on the container's own filesystem. The sketch exited 0. Hermes viewed the PNG withvision_analyzeand fixed a reversed arrow, and the recap followedblock.md. The installed gateway container still fails:-u 501plus a non-bind-mount home givesprofile_mismatch, and Hermes v0.22.5 doesn't fix the socket mode. The run also found that Bun older than 1.4.0 can't read the sketch lockfile. fix(pr-recap): clarify refresh rules and sketch setup #312 now states the minimum and annpx --allow-scripts=bun [email protected]fallback. Not yet run: a posting run, which needsghand a token inside the container. That is the operator's decision.Follow-ups filed: #315 (ledger claim omits the recap exception), #317 (Bun version check, and the npx route for Node-only hosts).