Multiple fixes for code review automation pipeline #134

Merged
shad0w merged 2 commits from feat/pr-review-watcher-followups into master 2026-06-25 19:25:04 +00:00
Owner

feat(automation): one-command updater for the deployed PR-review watcher

update-pr-review-watcher.sh refreshes the deployed script from the repo via a
dedicated self-update checkout (~/pr-review-watcher/.src) that never races the
issue watcher's work clone. Reads the live config for auth, never clobbers the
config (real token), and self-updates. Optional ref arg for pre-merge testing.

fix(automation): bound + detach the Claude run so a hang can't wedge or stick

First live run on PR #126 left the foreground shell stuck: Claude pushed the
commit itself and then did not exit, so the supervisor code after it (push +
ack + handled marker) never ran. Under cron that also holds the flock lock,
freezing every later run, and the comment never gets marked handled (so it
would be re-processed forever).

  • Wrap the Claude invocation in setsid timeout -k 30s "$CLAUDE_TIMEOUT"
    (default 30m). setsid detaches from the controlling terminal so a lingering
    child can't stick an interactive run; timeout returns control to the
    supervisor, which still pushes any commits (idempotent if Claude pushed) and
    writes the handled marker. A timed-out run (rc=124) is logged, not fatal.
  • Give this watcher its own dev port (devPort, default 3101) distinct from the
    issue watcher's 3100, and reap it after each run -- no cross-watcher kill.
  • Reinforce the prompt: stop any dev server and END THE TURN; never push.

Adds claudeTimeout + devPort to the example config and documents both.

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com

feat(automation): one-command updater for the deployed PR-review watcher update-pr-review-watcher.sh refreshes the deployed script from the repo via a dedicated self-update checkout (~/pr-review-watcher/.src) that never races the issue watcher's work clone. Reads the live config for auth, never clobbers the config (real token), and self-updates. Optional ref arg for pre-merge testing. fix(automation): bound + detach the Claude run so a hang can't wedge or stick First live run on PR #126 left the foreground shell stuck: Claude pushed the commit itself and then did not exit, so the supervisor code after it (push + ack + handled marker) never ran. Under cron that also holds the flock lock, freezing every later run, and the comment never gets marked handled (so it would be re-processed forever). - Wrap the Claude invocation in `setsid timeout -k 30s "$CLAUDE_TIMEOUT"` (default 30m). `setsid` detaches from the controlling terminal so a lingering child can't stick an interactive run; `timeout` returns control to the supervisor, which still pushes any commits (idempotent if Claude pushed) and writes the handled marker. A timed-out run (rc=124) is logged, not fatal. - Give this watcher its own dev port (devPort, default 3101) distinct from the issue watcher's 3100, and reap it after each run -- no cross-watcher kill. - Reinforce the prompt: stop any dev server and END THE TURN; never push. Adds claudeTimeout + devPort to the example config and documents both. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
shad0w added 2 commits 2026-06-25 19:24:52 +00:00
update-pr-review-watcher.sh refreshes the deployed script from the repo via a
dedicated self-update checkout (~/pr-review-watcher/.src) that never races the
issue watcher's work clone. Reads the live config for auth, never clobbers the
config (real token), and self-updates. Optional ref arg for pre-merge testing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
fix(automation): bound + detach the Claude run so a hang can't wedge or stick
All checks were successful
PR checks / checks (pull_request) Successful in 49s
PR checks / integration (pull_request) Successful in 30s
0814b040e1
First live run on PR #126 left the foreground shell stuck: Claude pushed the
commit itself and then did not exit, so the supervisor code after it (push +
ack + handled marker) never ran. Under cron that also holds the flock lock,
freezing every later run, and the comment never gets marked handled (so it
would be re-processed forever).

- Wrap the Claude invocation in `setsid timeout -k 30s "$CLAUDE_TIMEOUT"`
  (default 30m). `setsid` detaches from the controlling terminal so a lingering
  child can't stick an interactive run; `timeout` returns control to the
  supervisor, which still pushes any commits (idempotent if Claude pushed) and
  writes the handled marker. A timed-out run (rc=124) is logged, not fatal.
- Give this watcher its own dev port (devPort, default 3101) distinct from the
  issue watcher's 3100, and reap it after each run -- no cross-watcher kill.
- Reinforce the prompt: stop any dev server and END THE TURN; never push.

Adds claudeTimeout + devPort to the example config and documents both.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
shad0w merged commit fda87e5b13 into master 2026-06-25 19:25:04 +00:00
Sign in to join this conversation.
No description provided.