Idempotent cleanup on unmount. Defaults to a no-op. Dispose-path: NO tree context (a lookup there would throw).
Future<void> teardown(StepArgs args) async {}