# Track state for default_layout_extract_20260629 # Updated by Tier 2 Tech Lead as tasks complete [meta] track_id = "default_layout_extract_20260629" name = "Default Layout Extract + Hard Visual Verification" status = "active" current_phase = 0 last_updated = "2026-06-29" [blocked_by] # None — this track is independent (replaces default_layout_install_20260629 which is superseded) [blocks] # Tracks that depend on this one panel_defs_fleury_migration = "deferred (consumes LayoutFile + get_layouts_dir)" render_persona_editor_window_fix = "deferred (Layer 1 sentinel catches the empty-content bug)" test_engine_integration_20260627 = "in_progress (separate track)" [phases] phase_1 = { status = "pending", checkpointsha = "", name = "Asset Foundation (layouts/ + src/layouts.py + get_layouts_dir)" } phase_2 = { status = "pending", checkpointsha = "", name = "Install Helpers (_install_default_layout_if_empty + pre_run)" } phase_3 = { status = "pending", checkpointsha = "", name = "Wiring (App._post_init + App.run)" } phase_4 = { status = "pending", checkpointsha = "", name = "Surgical Cherry-Picks (orphan end_child + reset_layout)" } phase_5 = { status = "pending", checkpointsha = "", name = "Layer 1 Sentinel (per-panel render size check)" } phase_6 = { status = "pending", checkpointsha = "", name = "Layer 2 Pixel Baseline (Win32 PrintWindow)" } phase_7 = { status = "pending", checkpointsha = "", name = "Layer 3 Forced Viewport/Theme (env vars)" } phase_8 = { status = "pending", checkpointsha = "", name = "Layer 4 Cannot-Skip Gates (CI + tag)" } phase_9 = { status = "pending", checkpointsha = "", name = "Negative Test + End-to-End + Track Completion" } [tasks] # Phase 1 t1_1 = { status = "pending", commit_sha = "", description = "RED test for src/layouts.py:load_layouts_from_dir" } t1_2 = { status = "pending", commit_sha = "", description = "Create src/layouts.py (port fresh from tier-2)" } t1_3 = { status = "pending", commit_sha = "", description = "RED test for src/paths.py:get_global_layouts_path" } t1_4 = { status = "pending", commit_sha = "", description = "Add get_global_layouts_path() + SLOP_GLOBAL_LAYOUTS env override" } t1_5 = { status = "pending", commit_sha = "", description = "RED test for bundled layouts/default.ini structure" } t1_6 = { status = "pending", commit_sha = "", description = "Port layouts/default.ini to master (8 [Window] + [Docking])" } # Phase 2 t2_1 = { status = "pending", commit_sha = "", description = "RED test for _install_default_layout_if_empty (5 cases)" } t2_2 = { status = "pending", commit_sha = "", description = "Implement _install_default_layout_if_empty + _result wrapper" } t2_3 = { status = "pending", commit_sha = "", description = "RED test for _install_default_layout_pre_run_result (disk-only)" } t2_4 = { status = "pending", commit_sha = "", description = "Implement _install_default_layout_pre_run_result" } # Phase 3 t3_1 = { status = "pending", commit_sha = "", description = "RED test for App._post_init calling install helper" } t3_2 = { status = "pending", commit_sha = "", description = "Wire _install_default_layout_if_empty_result into App._post_init" } t3_3 = { status = "pending", commit_sha = "", description = "RED test for App.run calling pre-run install before immapp" } t3_4 = { status = "pending", commit_sha = "", description = "Wire _install_default_layout_pre_run_result into App.run" } t3_5 = { status = "pending", commit_sha = "", description = "GREEN end-to-end install fires + INI created" } # Phase 4 t4_1 = { status = "pending", commit_sha = "", description = "Cherry-pick c2155593 (remove orphan imgui.end_child at line 6990)" } t4_2 = { status = "pending", commit_sha = "", description = "Cherry-pick 3b966288 (remove dead test-fixture path from reset_layout)" } # Phase 5 t5_1 = { status = "pending", commit_sha = "", description = "RED test for per-panel render size check (Layer 1)" } t5_2 = { status = "pending", commit_sha = "", description = "Verify sentinel catches empty-panels regression (negative test)" } t5_3 = { status = "pending", commit_sha = "", description = "Verify sentinel catches render_main_interface no-op (negative test)" } # Phase 6 t6_1 = { status = "pending", commit_sha = "", description = "RED test for Win32 PrintWindow capture (Layer 2)" } t6_2 = { status = "pending", commit_sha = "", description = "Implement _capture_gui_window_png (PrintWindow + Pillow)" } t6_3 = { status = "pending", commit_sha = "", description = "Generate baseline PNG (visual_baseline_default.png)" } t6_4 = { status = "pending", commit_sha = "", description = "RED test for pixel diff comparison" } t6_5 = { status = "pending", commit_sha = "", description = "Implement _compute_pixel_diff (numpy-based)" } # Phase 7 t7_1 = { status = "pending", commit_sha = "", description = "RED test for MANUAL_SLOP_TEST_VIEWPORT env var" } t7_2 = { status = "pending", commit_sha = "", description = "Implement MANUAL_SLOP_TEST_VIEWPORT parsing in App.run" } t7_3 = { status = "pending", commit_sha = "", description = "RED test for MANUAL_SLOP_TEST_THEME env var" } t7_4 = { status = "pending", commit_sha = "", description = "Implement MANUAL_SLOP_TEST_THEME parsing in App.run" } # Phase 8 t8_1 = { status = "pending", commit_sha = "", description = "Create scripts/check_visual_baseline.py (standalone CLI)" } t8_2 = { status = "pending", commit_sha = "", description = "Wire check_visual_baseline into scripts/run_tests_batched.py" } t8_3 = { status = "pending", commit_sha = "", description = "Write docs/guide_visual_verification.md" } t8_4 = { status = "pending", commit_sha = "", description = "Update conductor/tracks.md schema (VERIFIED- tag requirement)" } t8_5 = { status = "pending", commit_sha = "", description = "Update docs/Readme.md to reference new guide" } # Phase 9 t9_1 = { status = "pending", commit_sha = "", description = "Negative test: corrupted INI catches the regression (FR8)" } t9_2 = { status = "pending", commit_sha = "", description = "Run full test batch (scripts/run_tests_batched.py)" } t9_3 = { status = "pending", commit_sha = "", description = "Manual visual verification gate (user runs uv run sloppy.py)" } t9_4 = { status = "pending", commit_sha = "", description = "User commits VERIFIED- git tag (HARD GATE)" } t9_5 = { status = "pending", commit_sha = "", description = "Write TRACK_COMPLETION report" } t9_6 = { status = "pending", commit_sha = "", description = "Update conductor/tracks.md to mark track [x]" } t9_7 = { status = "pending", commit_sha = "", description = "Conductor - User Manual Verification" } [verification] phase_1_complete = false phase_2_complete = false phase_3_complete = false phase_4_complete = false phase_5_complete = false phase_6_complete = false phase_7_complete = false phase_8_complete = false phase_9_complete = false visual_baseline_png_committed = false verified_tag_exists = false all_tiers_pass = false