Private
Public Access
0
0

chore(diag): add file-based diag instrumentation for MMA tracks

The prior commit (75fdebb0) added stderr-based instrumentation but
the output was not visible in the test log (the live_gui subprocess
log file is overwritten by each new subprocess and doesn't capture
stderr from background io_pool threads).

This commit adds file-based instrumentation that writes to a log file
in tests/artifacts/tier2_state/ (per workspace_paths.md, all
test artifacts live in tests/artifacts/, project-tree).

Diagnostic sites added:
- _cb_accept_tracks entry
- _cb_accept_tracks._bg_task entry (before for loop)
- _start_track_logic_result entry (after generate_tickets)
- _start_track_logic_result after self.tracks.append
- _start_track_logic_result except block (with traceback)

Per edit_workflow.md §9 the diag lines are part of the same atomic
commit as the fix. This is an INTERIM commit; all instrumentation
will be removed in the Phase 2 cleanup commit.
This commit is contained in:
2026-06-27 14:01:27 -04:00
parent 75fdebb0d8
commit d046394adf
+27 -7
View File
@@ -4636,6 +4636,12 @@ class AppController:
""" """
[C: src/gui_2.py:App._render_track_proposal_modal] [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 self._show_track_proposal_modal = False
def _bg_task() -> "Result[None]": def _bg_task() -> "Result[None]":
@@ -4668,6 +4674,10 @@ class AppController:
return result return result
# Now loop through tracks and call _start_track_logic with generated skeletons # Now loop through tracks and call _start_track_logic with generated skeletons
total_tracks = len(self.proposed_tracks) 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...") print(f"[DEBUG] _cb_accept_tracks: Starting {total_tracks} tracks...")
for i, track_data in enumerate(self.proposed_tracks): for i, track_data in enumerate(self.proposed_tracks):
title = track_data.get("title") or track_data.get("goal", "Untitled Track") 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}..." self.ai_status = f"Phase 2: Generating tickets for {title}..."
skeletons = skeletons_str or "" # Use provided skeletons or empty skeletons = skeletons_str or "" # Use provided skeletons or empty
self.ai_status = "Phase 2: Calling Tech Lead..." 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") try:
sys.stderr.flush() 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()) _t2_baseline = len(ai_client.get_comms_log())
raw_tickets = conductor_tech_lead.generate_tickets(goal, skeletons) 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") try:
sys.stderr.flush() 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_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_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) _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) project_manager.save_track_state(track_id, state, self.active_project_root)
# Add to memory and notify UI # Add to memory and notify UI
self.tracks.append({"id": track_id, "title": title, "status": "todo"}) 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: with self._pending_gui_tasks_lock:
self._pending_gui_tasks.append({'action': 'refresh_from_project'}) self._pending_gui_tasks.append({'action': 'refresh_from_project'})
# 4. Initialize ConductorEngine and run loop # 4. Initialize ConductorEngine and run loop
@@ -4833,9 +4851,11 @@ class AppController:
return OK return OK
except (OSError, IOError, ValueError, TypeError, KeyError, AttributeError, RuntimeError) as e: except (OSError, IOError, ValueError, TypeError, KeyError, AttributeError, RuntimeError) as e:
import traceback import traceback
sys.stderr.write(f"[DEBUG_MMA_FIX] _start_track_logic: EXCEPTION for '{title}': {type(e).__name__}: {e}\n") try:
traceback.print_exc(file=sys.stderr) with open(b"C:\\projects\\manual_slop_tier2\\tests\\artifacts\\tier2_state\\fix_mma_concurrent_tracks_sim_20260627\\mma_diag.log", "ab") as _df:
sys.stderr.flush() _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), err = ErrorInfo(kind=ErrorKind.INTERNAL, message=str(e),
source="app_controller._start_track_logic_result", original=e) source="app_controller._start_track_logic_result", original=e)
return Result(data=None, errors=[err]) return Result(data=None, errors=[err])