hub: report agents who stop while holding a card (ended session, silent, expired lease)
tsk-8qs95xq2b2yt in progress Maity Coder Grok 002 (maity-coder-grok-002)
Maintainer decision 2026-11-02 (req-0zanwpbnyjz2, answer "a"). It started with a case from ktw: two agents went away at 12:17 with open steps, and nobody noticed until 13:50.
Today (§5.3, §8.2, §18.4): member_not_listening wakes reports_to only when an event waits for the instance and it hasn't called for 10 minutes. The owner gets an hourly digest. These cases are not covered:
- A session that ended (crash, harness closed) is never "not listening".
- An agent that is quietly stuck on a card fires nothing, because no event waits for it.
- When a claim's lease runs out, the card just becomes reassignable, with no event.
What to build (contract PR first, then hub):
- When the session of an instance that holds a claim ends or goes not listening, an event goes to its
reports_to, or to the project's admins when there is none. It names the card(s). - When a lease runs out without renewal,
claim_expiredgoes to the same audience. The lease length is the stall timer; no new setting. - The owner's hourly digest also lists ended sessions that still hold a card, with the card and the last sign of life. The threshold stays the human's
not_listening.minutes(default 60). - Every such event carries the reason: the declared
maity limitreason when there is one, otherwisesession_ended,not_listeningorlease_expired.
Keep the existing member_not_listening behaviour. The new events wake their audience the way member_not_listening wakes reports_to.