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.
This commit is contained in:
2026-05-07 08:41:08 -04:00
parent f3585cb5a1
commit b0a837d235
+13 -1
View File
@@ -2913,7 +2913,7 @@ class AppController:
# Ensure it's loaded as active # Ensure it's loaded as active
if not self.active_track or self.active_track.id != track_id: if not self.active_track or self.active_track.id != track_id:
self._cb_load_track(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 # 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}") print(f"[DEBUG] _cb_start_track: track_id={self.active_track.id}, desc={self.active_track.description}")
self._set_mma_status("running") self._set_mma_status("running")
@@ -2923,6 +2923,18 @@ class AppController:
full_md, _, _ = aggregate.run(flat) full_md, _, _ = aggregate.run(flat)
threading.Thread(target=engine.run, kwargs={"md_content": full_md}, daemon=True).start() threading.Thread(target=engine.run, kwargs={"md_content": full_md}, daemon=True).start()
self._set_status(f"Track '{self.active_track.description}' started.") 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 return
idx = 0 idx = 0
if isinstance(user_data, int): if isinstance(user_data, int):