From 75fdebb0d81e6966e02e730ec1bb3dd469b876f5 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Sat, 27 Jun 2026 13:53:44 -0400 Subject: [PATCH] chore(diag): add stderr instrumentation to _start_track_logic_result MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per edit_workflow.md ยง9, diag lines are part of the same atomic commit as the fix. This commit adds ENTER/generate_tickets/EXCEPTION stderr writes to diagnose the 2nd-track-not-firing regression in test_mma_concurrent_tracks_sim. The instrumentation will be removed in commit 2.1 once the root cause is identified. Tests not yet run; this is interim instrumentation. --- src/app_controller.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/app_controller.py b/src/app_controller.py index 83164911..ef0f25de 100644 --- a/src/app_controller.py +++ b/src/app_controller.py @@ -4757,8 +4757,12 @@ 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() _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() _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) @@ -4828,6 +4832,10 @@ class AppController: sys.stderr.flush() 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() err = ErrorInfo(kind=ErrorKind.INTERNAL, message=str(e), source="app_controller._start_track_logic_result", original=e) return Result(data=None, errors=[err])