Repository navigation
Conversation
…omments The first run for a PR is a silent baseline: it records the comments, reviews and threads that already exist and reports only later ones. But finish() always saved state, so a first run that stopped before a poll completed (a non-transient gh error, GitHub unreachable for MAX_FAILED_POLLS, or the PR found closed) wrote a state file with an empty or partial reported set. The next run loaded it, skipped the baseline, and printed every existing comment and review thread as a new event. Save from finish() during a baseline only once a poll has recorded the PR's events. A baseline that did not get that far leaves no state, so the next run baselines again. A baseline poll that did record everything and then stops (a failed required check, a DIRTY branch) still saves, so a rerun after the fix reports comments that arrived in between.
ryoppippi
added a commit
to ryoppippi/dotfiles
that referenced
this pull request
Nov 3, 2026
…ping Skipping the save for every baseline run also dropped one that had recorded every comment and then stopped on a failed check or a DIRTY branch, so the rerun after the fix baselined again and silently lost comments posted in between. Save once a poll has recorded the PR, as proposed upstream in t3dotgg/tstack#14.
ryoppippi
added a commit
to ryoppippi/dotfiles
that referenced
this pull request
Nov 4, 2026
… copies The local babysit-pr, takeover, full-send, full-stop and modernize were near-verbatim copies of t3dotgg/tstack, so every upstream fix had to be ported by hand, and pr-wait was being rewritten in another language only to avoid maintaining Python we did not write. Pinning tstack in the skill registry installs the upstream skills directly; its pr-wait needs only the system python3 and gh. leaving-pr-comments comes along because babysit-pr, takeover and modernize name it. tstack's file-pr and sol-loop are not installed, as create-pr and review-loop cover them here, so a transform renames those references. The upstream pr-wait still replays existing comments after an interrupted baseline until t3dotgg/tstack#14 lands.
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.
If the first
pr-waitrun for a PR stops before its first poll completes (a non-transientgherror, or GitHub unreachable for 10 polls), the next run prints every existing comment, review and thread on the PR as new. On one real PR that replayed about 35 old review threads at once.The cause: the first run is meant to be a silent baseline, but
finish()always saved state, so the failed run left a file with an emptyreportedset and the next run skipped the baseline. Nowfinish()saves during a baseline only once a poll has recorded the PR's events; otherwise the next run simply baselines again. A baseline poll that did record everything and then stops (failed required check, DIRTY branch) still saves, so a rerun after fixing it still reports comments that arrived in between.Reproduced by stubbing
fetch_prto raise a non-transientGhErroron the first run, then running a real poll on an open PR with comments: before, the second run printed every existing comment; after, it baselines silently.Created with Claude Opus 5.5 in Claude Code & T3 code