diff --git a/src/app_controller.py b/src/app_controller.py index ef0f25de..c5a69d08 100644 --- a/src/app_controller.py +++ b/src/app_controller.py @@ -4636,6 +4636,12 @@ class AppController: """ [C: src/gui_2.py:App._render_track_proposal_modal] """ + import os as _os + _dl = b"C:\\projects\\manual_slop_tier2\\tests\\artifacts\\tier2_state\\fix_mma_concurrent_tracks_sim_20260627\\mma_diag.log" + try: + with open(_dl, "ab") as _df: + _df.write(b"[DIAG] _cb_accept_tracks called\n") + except Exception: pass self._show_track_proposal_modal = False def _bg_task() -> "Result[None]": @@ -4668,6 +4674,10 @@ class AppController: return result # Now loop through tracks and call _start_track_logic with generated skeletons total_tracks = len(self.proposed_tracks) + try: + with open(b"C:\\projects\\manual_slop_tier2\\tests\\artifacts\\tier2_state\\fix_mma_concurrent_tracks_sim_20260627\\mma_diag.log", "ab") as _df: + _df.write(f"[DIAG] _bg_task ENTER total_tracks={total_tracks} proposed_ids={[(t.get(chr(105)+chr(100)) if isinstance(t, dict) else getattr(t, chr(105)+chr(100), chr(63))) for t in self.proposed_tracks]}\n".encode()) + except Exception: pass print(f"[DEBUG] _cb_accept_tracks: Starting {total_tracks} tracks...") for i, track_data in enumerate(self.proposed_tracks): title = track_data.get("title") or track_data.get("goal", "Untitled Track") @@ -4757,12 +4767,16 @@ class AppController: self.ai_status = f"Phase 2: Generating tickets for {title}..." skeletons = skeletons_str or "" # Use provided skeletons or empty self.ai_status = "Phase 2: Calling Tech Lead..." - sys.stderr.write(f"[DEBUG_MMA_FIX] _start_track_logic: ENTER title='{title}' goal='{goal[:60]}' skeletons_len={len(skeletons)}\n") - sys.stderr.flush() + try: + with open(b"C:\\projects\\manual_slop_tier2\\tests\\artifacts\\tier2_state\\fix_mma_concurrent_tracks_sim_20260627\\mma_diag.log", "ab") as _df: + _df.write(f"[DIAG] _start_track_logic_result ENTER title={title!r} goal={goal[:60]!r} skeletons_len={len(skeletons)}\n".encode()) + except Exception: pass _t2_baseline = len(ai_client.get_comms_log()) raw_tickets = conductor_tech_lead.generate_tickets(goal, skeletons) - sys.stderr.write(f"[DEBUG_MMA_FIX] _start_track_logic: generate_tickets returned {len(raw_tickets) if raw_tickets else 0} tickets for '{title}'\n") - sys.stderr.flush() + try: + with open(b"C:\\projects\\manual_slop_tier2\\tests\\artifacts\\tier2_state\\fix_mma_concurrent_tracks_sim_20260627\\mma_diag.log", "ab") as _df: + _df.write(f"[DIAG] _start_track_logic_result AFTER generate_tickets title={title!r} raw_tickets_count={len(raw_tickets) if raw_tickets else 0}\n".encode()) + except Exception: pass _t2_new = ai_client.get_comms_log()[_t2_baseline:] _t2_resp = [e for e in _t2_new if e.get("direction") == "IN" and e.get("kind") == "response"] _t2_in = sum(e.get("payload", {}).get("usage", {}).get("input_tokens", 0) for e in _t2_resp) @@ -4806,6 +4820,10 @@ class AppController: project_manager.save_track_state(track_id, state, self.active_project_root) # Add to memory and notify UI self.tracks.append({"id": track_id, "title": title, "status": "todo"}) + try: + with open(b"C:\\projects\\manual_slop_tier2\\tests\\artifacts\\tier2_state\\fix_mma_concurrent_tracks_sim_20260627\\mma_diag.log", "ab") as _df: + _df.write(f"[DIAG] _start_track_logic_result self.tracks.append OK title={title!r} track_id={track_id}\n".encode()) + except Exception: pass with self._pending_gui_tasks_lock: self._pending_gui_tasks.append({'action': 'refresh_from_project'}) # 4. Initialize ConductorEngine and run loop @@ -4833,9 +4851,11 @@ class AppController: return OK except (OSError, IOError, ValueError, TypeError, KeyError, AttributeError, RuntimeError) as e: import traceback - sys.stderr.write(f"[DEBUG_MMA_FIX] _start_track_logic: EXCEPTION for '{title}': {type(e).__name__}: {e}\n") - traceback.print_exc(file=sys.stderr) - sys.stderr.flush() + try: + with open(b"C:\\projects\\manual_slop_tier2\\tests\\artifacts\\tier2_state\\fix_mma_concurrent_tracks_sim_20260627\\mma_diag.log", "ab") as _df: + _df.write(f"[DIAG] _start_track_logic_result EXCEPTION title={title!r} {type(e).__name__}: {e}\n".encode()) + traceback.print_exc(file=_df) + except Exception: pass err = ErrorInfo(kind=ErrorKind.INTERNAL, message=str(e), source="app_controller._start_track_logic_result", original=e) return Result(data=None, errors=[err])