Private
Public Access
3 tests in tests/test_default_layout_install.py per spec G6/G7 acceptance:
- test_default_layout_installed_when_ini_missing
- test_default_layout_installed_when_ini_empty
- test_default_layout_NOT_installed_when_layout_present
Currently fail as expected (no install helper exists yet). Test 3 passes as
a positive control (custom user INI is preserved when no install logic
runs).
Subprocess spawn pattern: each test creates its own tmp_path workspace,
spawns sloppy.py without --enable-test-hooks (avoids port-8999 conflict
with the live_gui session fixture's subprocess), waits 5s, terminates
via taskkill /F /T, asserts on the saved INI content.
state.toml: phase 1 marked completed; tasks t1_1-t1_10 recorded with
SHA 7577d7d. plan.md updated for Phase 1 task completion.
76 lines
5.3 KiB
TOML
76 lines
5.3 KiB
TOML
# Track state for default_layout_install_20260629
|
|
# Updated by Tier 2 Tech Lead as tasks complete
|
|
|
|
[meta]
|
|
track_id = "default_layout_install_20260629"
|
|
name = "Default Layout Install + Hardcoded Path Cleanup + layouts/ Stack"
|
|
status = "active"
|
|
current_phase = 2
|
|
last_updated = "2026-06-29"
|
|
|
|
[blocked_by]
|
|
# None. This track is independent.
|
|
|
|
[blocks]
|
|
# None. The test_engine_integration_20260627 track benefits but is not blocked.
|
|
|
|
[phases]
|
|
phase_1 = { status = "completed", checkpoint_sha = "7577d7d", name = "Move default layout to layouts/ + create src/layouts.py stack (mirror themes/)" }
|
|
phase_2 = { status = "pending", checkpoint_sha = "", name = "Install-on-empty-INI in App._post_init" }
|
|
phase_3 = { status = "pending", checkpoint_sha = "", name = "Remove hardcoded test-fixture path from production code" }
|
|
phase_4 = { status = "pending", checkpoint_sha = "", name = "Verification + checkpoint" }
|
|
|
|
[tasks]
|
|
# Phase 1 (10 tasks)
|
|
t1_1 = { status = "completed", commit_sha = "(audit, no commit)", description = "Verify bundled layout content + themes pattern baseline" }
|
|
t1_2 = { status = "completed", commit_sha = "7577d7d", description = "git mv tests/artifacts/manualslop_layout_default.ini -> layouts/default.ini" }
|
|
t1_3 = { status = "completed", commit_sha = "7577d7d", description = "Update tests/conftest.py:709 to layouts/default.ini" }
|
|
t1_4 = { status = "completed", commit_sha = "7577d7d", description = "Add `layouts: Path` to src/paths.py config dataclass (mirror themes line 60)" }
|
|
t1_5 = { status = "completed", commit_sha = "7577d7d", description = "Resolve layouts = root_dir / 'layouts' in src/paths.py (mirror line 83)" }
|
|
t1_6 = { status = "completed", commit_sha = "7577d7d", description = "Add SLOP_GLOBAL_LAYOUTS env + config override in src/paths.py (mirror line 150)" }
|
|
t1_7 = { status = "completed", commit_sha = "7577d7d", description = "Add get_layouts_dir() accessor to src/paths.py (mirror line 210-216)" }
|
|
t1_8 = { status = "completed", commit_sha = "7577d7d", description = "Create src/layouts.py loader module (mirror src/theme_models.py + src/theme_2.py)" }
|
|
t1_9 = { status = "completed", commit_sha = "7577d7d", description = "Verify src/layouts.py imports + returns empty dict cleanly" }
|
|
t1_10 = { status = "completed", commit_sha = "7577d7d", description = "Commit phase 1 with git note (relocation + layouts/ stack + future Fleury target)" }
|
|
|
|
# Phase 2 (9 tasks)
|
|
t2_1 = { status = "pending", commit_sha = "", description = "Write 3 failing tests in tests/test_default_layout_install.py" }
|
|
t2_2 = { status = "pending", commit_sha = "", description = "Confirm RED (tests fail for install-logic-missing reason)" }
|
|
t2_3 = { status = "pending", commit_sha = "", description = "Implement _install_default_layout_if_empty helper in src/gui_2.py" }
|
|
t2_4 = { status = "pending", commit_sha = "", description = "Wire helper into App._post_init BEFORE _diag_layout_state" }
|
|
t2_5 = { status = "pending", commit_sha = "", description = "Add drain helper _install_default_layout_if_empty_result per data-oriented convention" }
|
|
t2_6 = { status = "pending", commit_sha = "", description = "Confirm GREEN (all 3 tests pass)" }
|
|
t2_7 = { status = "pending", commit_sha = "", description = "Run adjacent tests/test_gui*.py batch; no regression" }
|
|
t2_8 = { status = "pending", commit_sha = "", description = "Commit phase 2 with git note" }
|
|
t2_9 = { status = "pending", commit_sha = "", description = "User Manual Verification: standalone launch with deleted INI; panels visible" }
|
|
|
|
# Phase 3 (7 tasks)
|
|
t3_1 = { status = "pending", commit_sha = "", description = "Write tests/test_reset_layout.py failing test for path cleanup" }
|
|
t3_2 = { status = "pending", commit_sha = "", description = "Confirm RED (test reads source via inspect and asserts dead path is gone)" }
|
|
t3_3 = { status = "pending", commit_sha = "", description = "Remove hardcoded tests/artifacts/... line from src/commands.py:reset_layout" }
|
|
t3_4 = { status = "pending", commit_sha = "", description = "Update commands.reset_layout docstring (line 351-362)" }
|
|
t3_5 = { status = "pending", commit_sha = "", description = "Confirm GREEN" }
|
|
t3_6 = { status = "pending", commit_sha = "", description = "Run tests/test_commands*.py batch; no regression" }
|
|
t3_7 = { status = "pending", commit_sha = "", description = "Commit phase 3 with git note" }
|
|
|
|
# Phase 4 (6 tasks)
|
|
t4_1 = { status = "pending", commit_sha = "", description = "Run batched verification per workflow.md §Phase Completion Verification" }
|
|
t4_2 = { status = "pending", commit_sha = "", description = "Empirical reproduction of original bug (production cwd, manual)" }
|
|
t4_3 = { status = "pending", commit_sha = "", description = "Phase 4 checkpoint commit + verification git note" }
|
|
t4_4 = { status = "pending", commit_sha = "", description = "Append phase checkpoint SHAs to plan.md" }
|
|
t4_5 = { status = "pending", commit_sha = "", description = "Commit final plan update" }
|
|
t4_6 = { status = "pending", commit_sha = "", description = "Add row to conductor/tracks.md + commit in same batch" }
|
|
|
|
[verification]
|
|
phase_4_g1_install_on_empty_ini = false
|
|
phase_4_g2_overrides_cleared = false
|
|
phase_4_g3_path_cleanup = false
|
|
phase_4_g4_regression_tests = false
|
|
phase_4_g5_layouts_at_root = false
|
|
phase_4_g6_paths_layouts_field = false
|
|
phase_4_g7_src_layouts_py = false
|
|
phase_4_g8_conftest_path_update = false
|
|
phase_4_no_test_paths_in_src = false
|
|
phase_4_no_configs_in_src = false
|
|
phase_4_user_signoff = false
|