mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-28 11:01:15 +00:00
* fix(scripts): bound duplicate PR closure GitHub lookups The duplicate PR closure helper performs multiple sequential gh API reads and writes after a merge. Each call used execFileSync without a timeout, so one stalled GitHub request could block the surrounding workflow job until it expires. Add a 60-second timeout and SIGKILL to the default gh runner, applied to both read-only lookups and pr edit writes that forward stdin. * test(scripts): add real behavior proof for duplicate PR closure timeout Add two live subprocess tests using the real spawnSync (not mocked) to prove the timeout + SIGKILL surface works against actual child processes: - A 1 ms timeout against a long-running node subprocess proves SIGKILL is delivered and the timeout triggers correctly. - A fast node -e 0 subprocess with the production 60-second bound proves the timeout does not false-positive on healthy completions. Switch the vi.mock to a partial mock using importOriginal so spawnSync remains the real implementation for live tests while execFileSync stays mocked for the DI-based option assertions. * refactor(scripts): inject duplicate closure GitHub runner * fix(scripts): declare trusted tooling pin validator --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>