stop method
Implementation
Future<void> stop() async {
ActionGates.instance.removeListener(_onGatesChanged);
final loop = _voiceLoop;
_voiceLoop = null;
loop?.dispose();
final pump = _snapshotPump;
_snapshotPump = null;
pump?.dispose();
_outbound?.dispose();
_outbound = null;
ExplorationLog.instance.setSender(null);
ExplorationLog.instance.setScope(null);
// Call-scoped: drop the accumulated node union on stop so it cannot grow
// across calls for the life of a long-lived host process (OOM guard —
// it was previously reset only at mission start).
ExplorationLog.instance.reset();
navStack.clear();
_lastInteractionSentAt = null;
}