diff --git a/src/app_controller.py b/src/app_controller.py index c5a69d08..c0e681f7 100644 --- a/src/app_controller.py +++ b/src/app_controller.py @@ -1,6 +1,6 @@ from __future__ import annotations from src.tool_presets import ToolPreset -from src.mma import Ticket, Track, TrackState +from src.mma import Ticket, Track, TrackState, TrackMetadata from src.personas import Persona from src.mcp_client import MCPConfiguration, RAGConfig, load_mcp_config from src.project_files import ContextPreset, FileItem, NamedViewPreset, Preset @@ -4796,8 +4796,16 @@ class AppController: print(f"Warning: No tickets generated for track: {title}") return OK self.ai_status = "Phase 2: Sorting tickets..." + 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(b"[DIAG] BEFORE _topological_sort_tickets_result\n") + except Exception: pass sort_result = self._topological_sort_tickets_result(raw_tickets, title) sorted_tickets_data = sort_result.data + 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] AFTER sort sorted_count={len(sorted_tickets_data) if sorted_tickets_data else 0} type={type(sorted_tickets_data[0]).__name__ if sorted_tickets_data else None}\n".encode()) + except Exception: pass # 3. Create Track and Ticket objects (sorted_tickets_data is list[Ticket]) tickets = [] for t_data in sorted_tickets_data: @@ -4814,10 +4822,18 @@ class AppController: tickets.append(ticket) track_id = f"track_{uuid.uuid5(uuid.NAMESPACE_DNS, f'{self.active_project_path}_{title}').hex[:12]}" track = Track(id=track_id, description=title, tickets=tickets) + 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(b"[DIAG] BEFORE save_track_state\n") + except Exception: pass # Initialize track state in the filesystem - meta = models.Metadata(id=track_id, name=title, status="todo", created_at=datetime.now(), updated_at=datetime.now()) + meta = TrackMetadata(id=track_id, name=title, status="todo", created_at=datetime.now(), updated_at=datetime.now()) state = TrackState(metadata=meta, discussion=[], tasks=tickets) project_manager.save_track_state(track_id, state, self.active_project_root) + 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(b"[DIAG] AFTER save_track_state\n") + except Exception: pass # Add to memory and notify UI self.tracks.append({"id": track_id, "title": title, "status": "todo"}) try: @@ -4850,12 +4866,6 @@ class AppController: sys.stderr.flush() return OK except (OSError, IOError, ValueError, TypeError, KeyError, AttributeError, RuntimeError) as e: - import traceback - 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])