v0.1.8
- Cap retained terminal sessions via shared prunePolicy() — keep N most recently updated, delete older (Storage, InMemoryStorage, SessionEnd hook)
- engine: _pruneTerminal runs once after cascade (not per child), avoids quadratic scans
- prunePolicy: stable tiebreak by session_id, throws on negative keep, skips transient placeholders