SIGN IN SIGN UP

fix(omo-senpi): bound every Kibitzer wake from admission with a cap steers cannot extend (refs #8337)

The wake deadline was armed only after startChild returned, so a child start that never
resolved held the machine-wide wake lease indefinitely (measured: a 5,365 s wake with no
tool call and no context token, other sessions waiting up to 3,820 s for a slot), and every
steer re-armed the 90 s deadline from scratch, so a steered turn had no ceiling at all.

seed() and followUp() now arm the deadline right after admission, before the child I/O they
bound. A deadline that fires while that I/O is pending cannot queue on the mutex the stuck
transition holds, so it settles the turn inline - lease handed back, wake reported as
deadline - and the transition aborts and disposes the handle that finally arrives without
beginning a turn, carrying its payload into the retry. Every arm is clamped to
startedAt + KIBITZER_WAKE_MAX_TOTAL_MS (300 s), so steer re-arms cannot extend a wake.
Y
YeonGyu-Kim committed
e9f024d83203943b216cddd8fae9d9be3af3acb1
Parent: 730a535