aboutsummaryrefslogtreecommitdiff
path: root/playwright-py/scripts
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-27 13:32:34 -0500
committerCraig Jennings <c@cjennings.net>2026-07-27 13:32:34 -0500
commit2c664cb5651fbf03bc52d7848add0c571708adcd (patch)
tree95d44306c84197affa6f98b645d623d2ca74cfce /playwright-py/scripts
parent79ed3b09a9ee2a63fb55d2354aa0c77ea24c6efa (diff)
downloadrulesets-2c664cb5651fbf03bc52d7848add0c571708adcd.tar.gz
rulesets-2c664cb5651fbf03bc52d7848add0c571708adcd.zip
fix(hooks): don't let a wrap sentinel outlive its session
wrap-it-up drops /tmp/ai-wrap-teardown-<project> to ask the Stop hook to kill the tmux session once the wrap certifies clean. When certification fails the Stop hook blocks and leaves the sentinel armed, which I did on purpose so a wrap blocked by a dirty tree can retry on a later stop without re-running the workflow. I never bounded that retry to the session. An uncertified sentinel sat armed indefinitely and fired in whatever session next reached a clean tree. work's 11:37 wrap today left one armed. The 13:20 session ran startup, committed the task filing and the template sync, went clean, and the next stop consumed the two-hour-old sentinel and killed the terminal mid-work. Every stop before those commits had been blocked by the same sentinel failing certification, so the session spent its whole life either blocked or dead. archsetup's had been armed since Saturday on a live attached terminal, and home's was armed and waiting. session-start-disarm.sh clears the project's sentinels at SessionStart. A new session means the wrap that armed one is gone, so its pending teardown is meaningless. Within-session retry is untouched, since the hook only runs at session start, and a test pins that. If teardown is still wanted, wrap-it-up re-arms it. I disarmed the three live ones by hand before writing this, backed up under /tmp/disarmed-sentinels. Four tests cover the disarm, one pins the retry behavior I did not want to lose. The scoping test matters most: a concurrent session in another project keeps its own sentinel.
Diffstat (limited to 'playwright-py/scripts')
0 files changed, 0 insertions, 0 deletions