From d5cbd3b0a1983fab58fb2af5cbfca57161e1106a Mon Sep 17 00:00:00 2001 From: Ed_ Date: Thu, 18 Jun 2026 15:28:53 -0400 Subject: [PATCH] docs(reports): Phase 14 addendum - 2 documented test issues fixed; 11/11 tiers PASS clean Updates both the per-site report and the completion report for result_migration_small_files_20260617 with a Phase 14 addendum that: - Documents the 2 fixes (Issue 1: GUI subprocess crash; Issue 2: xdist race in workspace fixture) - References the follow-up track live_gui_test_fixes_20260618 - States the final test pass count: 11/11 tiers PASS clean - Lists the remaining Gemini 503 skip markers as out of scope - Confirms sub-track 2 is fully ready for merge with no documented issues from this track Sub-track 3 (result_migration_app_controller) is now unblocked. --- .../RESULT_MIGRATION_SMALL_FILES_20260617.md | 65 +++++++++++++++++++ ...N_result_migration_small_files_20260617.md | 53 +++++++++++++++ 2 files changed, 118 insertions(+) diff --git a/docs/reports/RESULT_MIGRATION_SMALL_FILES_20260617.md b/docs/reports/RESULT_MIGRATION_SMALL_FILES_20260617.md index 833456ef..fbb7d211 100644 --- a/docs/reports/RESULT_MIGRATION_SMALL_FILES_20260617.md +++ b/docs/reports/RESULT_MIGRATION_SMALL_FILES_20260617.md @@ -136,3 +136,68 @@ The 4 UNCLEAR classifications suggest 2 heuristic gaps: 2. **`openai_compatible.py:87` (Result-based SDK boundary)**: The audit doesn't have a heuristic for "try/except SDK_error + body returns Result with errors list." This is the canonical migrated pattern. A heuristic could classify these as BOUNDARY_SDK or INTERNAL_COMPLIANT. These heuristic improvements are deferred to a follow-up track. The sub-track 2 migrations (Phase 7) handle the 2 migration-target sites directly. + +--- + +## Phase 14 Addendum (Live GUI Test Fixes) + +This track shipped with 2 documented test infrastructure issues that +blocked the full closure of sub-track 2. Both issues have been fixed +in the follow-up track `live_gui_test_fixes_20260618`. + +### Issue 1: test_execution_sim_live GUI subprocess crash (tier-3-live_gui) + +GUI subprocess crashed mid-test with `0xC00000FD = STATUS_STACK_OVERFLOW`. +Root cause: `imgui.set_window_focus("Response")` was called directly +during the response panel render, exhausting the GUI main thread's +1.94 MB stack. + +Fix: defer the focus call to the next frame's idle phase via a new +`_pending_focus_response` flag. Mirrors the existing +`_autofocus_response_tab` pattern at `gui_2.py:5353-5356`. + +Tracks the same root cause as `test_z_negative_flows.py` (documented +in `docs/reports/NEGATIVE_FLOWS_INVESTIGATION_20260617_REFINED.md`). + +### Issue 2: test_live_gui_workspace_exists xdist race (tier-1-unit-gui) + +In pytest-xdist batched runs, the owner worker's live_gui fixture +teardown removes the shared workspace path via `shutil.rmtree` when +the owner's session ends. This can race with client workers' tests +that assert `live_gui_workspace.exists()`, leaving the workspace +missing. + +Root cause: the `live_gui_workspace` fixture returned `handle.workspace` +without ensuring the path exists. + +Fix: call `workspace.mkdir(parents=True, exist_ok=True)` before +returning. Idempotent and resilient to concurrent teardown. + +Pre-existing on parent commit `4ab7c732` (verified in +`tests/artifacts/PHASE14_PARENT_VERIFICATION.log`). + +### Final result: 11/11 tiers PASS clean + +The 11/11 verification is in `tests/artifacts/PHASE14_TEST_RUN_RESULTS.log`. + +| Tier | Status | +|---|---| +| tier-1-unit-comms | PASS | +| tier-1-unit-core | PASS | +| tier-1-unit-gui | PASS | +| tier-1-unit-headless | PASS | +| tier-1-unit-mma | PASS | +| tier-2-mock_app-comms | PASS | +| tier-2-mock_app-core | PASS | +| tier-2-mock_app-gui | PASS | +| tier-2-mock_app-headless | PASS | +| tier-2-mock_app-mma | PASS | +| tier-3-live_gui | PASS | + +The 4 Gemini 503 pre-existing skip markers remain (out of scope for +the fix track; deferred to a follow-up track to mock the Gemini API +in `summarize.summarise_file`). + +Sub-track 2 (`result_migration_small_files_20260617`) is now FULLY +ready for merge with no documented issues from this track. Sub-track +3 (`result_migration_app_controller`) is unblocked. diff --git a/docs/reports/TRACK_COMPLETION_result_migration_small_files_20260617.md b/docs/reports/TRACK_COMPLETION_result_migration_small_files_20260617.md index c1e0cb98..e79d5031 100644 --- a/docs/reports/TRACK_COMPLETION_result_migration_small_files_20260617.md +++ b/docs/reports/TRACK_COMPLETION_result_migration_small_files_20260617.md @@ -210,3 +210,56 @@ Note: UNCLEAR went UP from 7 to 21 because the narrowing created patterns that d **Total runtime:** ~2 hours **Test pass rate:** 100% (all 10 tiers PASS) **Verification:** ✓ (with documented G4 scope deviation) + +--- + +## Phase 14 Addendum (Live GUI Test Fixes - track live_gui_test_fixes_20260618) + +After this track shipped with 2 documented test infrastructure issues +blocking sub-track 2's full closure, a follow-up track was created to +fix those issues. **Both issues are now fixed**, and **all 11 test +tiers PASS clean** (was 10/11 in this track). + +### The 2 documented issues (now resolved) + +**Issue 1: test_execution_sim_live GUI subprocess crash (tier-3-live_gui)** +- Symptom: GUI subprocess crashes mid-test with `0xC00000FD = STATUS_STACK_OVERFLOW` +- Root cause: `imgui.set_window_focus("Response")` was called directly during the response panel render, exhausting the main thread's 1.94 MB stack +- Fix: defer the focus call to the next frame's idle phase via `_pending_focus_response` flag (commits d02c6d56, 0f796d7d) +- Same fix as `test_z_negative_flows.py` documented in `docs/reports/NEGATIVE_FLOWS_INVESTIGATION_20260617_REFINED.md` + +**Issue 2: test_live_gui_workspace_exists xdist race (tier-1-unit-gui)** +- Symptom: xdist race where the owner worker's teardown removes the shared workspace path before a client worker's test can assert it exists +- Root cause: `live_gui_workspace` fixture returned the path without ensuring it existed +- Fix: call `workspace.mkdir(parents=True, exist_ok=True)` before returning (commits 3fdb2592, bf6bc67b) +- Pre-existing on parent commit 4ab7c732 (verified in `tests/artifacts/PHASE14_PARENT_VERIFICATION.log`) + +### Final test pass count + +**11/11 tiers PASS clean** (about 825 seconds total): + +| Tier | Status | Time | +|---|---|---| +| tier-1-unit-comms | PASS | 25.0s | +| tier-1-unit-core | PASS | 56.1s | +| tier-1-unit-gui | PASS | 27.5s | +| tier-1-unit-headless | PASS | 23.0s | +| tier-1-unit-mma | PASS | 26.3s | +| tier-2-mock_app-comms | PASS | 10.2s | +| tier-2-mock_app-core | PASS | 15.9s | +| tier-2-mock_app-gui | PASS | 12.9s | +| tier-2-mock_app-headless | PASS | 10.9s | +| tier-2-mock_app-mma | PASS | 14.9s | +| tier-3-live_gui | PASS | 601.7s | + +The 4 Gemini 503 pre-existing skip markers remain (out of scope for +the live_gui_test_fixes track; deferred to a follow-up track to mock +the Gemini API in `summarize.summarise_file`). + +### References + +- `conductor/tracks/live_gui_test_fixes_20260618/spec.md` - the fix track's spec +- `conductor/tracks/live_gui_test_fixes_20260618/plan.md` - the fix track's plan +- `docs/reports/TRACK_COMPLETION_live_gui_test_fixes_20260618.md` - the fix track's completion report +- `tests/artifacts/PHASE14_PARENT_VERIFICATION.log` - Issue 2 parent-commit verification +- `tests/artifacts/PHASE14_TEST_RUN_RESULTS.log` - 11/11 tier verification