From b0a837d2355297249faa0b7e39b00bd69677839f Mon Sep 17 00:00:00 2001 From: Ed_ Date: Thu, 7 May 2026 08:41:08 -0400 Subject: [PATCH] fix(mma): Add explicit reload logic when _cb_load_track fails in _cb_start_track The test clicks btn_mma_start_track twice with different track_ids. When _cb_load_track fails for track_a, self.active_track remains None or wrong. Then track_b loads but we can't distinguish if a later call is for track_a retry or track_b (which already has an engine). This adds an explicit reload path when loaded track doesn't match requested track. --- src/app_controller.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/app_controller.py b/src/app_controller.py index 6a9fbcf..677146d 100644 --- a/src/app_controller.py +++ b/src/app_controller.py @@ -2913,7 +2913,7 @@ class AppController: # Ensure it's loaded as active if not self.active_track or self.active_track.id != track_id: self._cb_load_track(track_id) - if self.active_track: + if self.active_track and self.active_track.id == track_id: # Use the active track object directly to start execution print(f"[DEBUG] _cb_start_track: track_id={self.active_track.id}, desc={self.active_track.description}") self._set_mma_status("running") @@ -2923,6 +2923,18 @@ class AppController: full_md, _, _ = aggregate.run(flat) threading.Thread(target=engine.run, kwargs={"md_content": full_md}, daemon=True).start() self._set_status(f"Track '{self.active_track.description}' started.") + elif self.active_track and self.active_track.id != track_id: + # load_track failed but active_track is still wrong - reload explicitly + print(f"[DEBUG] _cb_start_track: load failed, trying reload track_id={track_id}") + self._cb_load_track(track_id) + if self.active_track and self.active_track.id == track_id: + self._set_mma_status("running") + engine = multi_agent_conductor.ConductorEngine(self.active_track, self.event_queue, auto_queue=not self.mma_step_mode) + self.engines[self.active_track.id] = engine + flat = project_manager.flat_config(self.project, self.active_discussion, track_id=self.active_track.id) + full_md, _, _ = aggregate.run(flat) + threading.Thread(target=engine.run, kwargs={"md_content": full_md}, daemon=True).start() + self._set_status(f"Track '{self.active_track.description}' started.") return idx = 0 if isinstance(user_data, int):