Session Leave
SessionEnd hook handler
Event: SessionEnd
Best-effort: SessionEnd fires non-deterministically (cleanup-on-start in session-start is the primary mechanism). 1. Emit :session.leave event to task's events.jsonl 2. Update playbook co-application ledger 3. Clean up session files Merged from: session-leave.lisp + playbook-session-end.nix
Handler
session-leave-handler — SessionEnd handler: emit leave event, update playbook, cleanup.