diff --git a/conductor/tracks/mma_tier_usage_reset_fix_20260610/state.toml b/conductor/tracks/mma_tier_usage_reset_fix_20260610/state.toml index 9659d0a2..ecfbd4ab 100644 --- a/conductor/tracks/mma_tier_usage_reset_fix_20260610/state.toml +++ b/conductor/tracks/mma_tier_usage_reset_fix_20260610/state.toml @@ -5,7 +5,7 @@ track_id = "mma_tier_usage_reset_fix_20260610" name = "Fix mma_tier_usage reset + 3 pre-existing controller bugs (2026-06-10)" status = "in_progress" -current_phase = 1 +current_phase = 2 last_updated = "2026-06-10" [blocked_by] @@ -15,33 +15,36 @@ last_updated = "2026-06-10" # This track blocks nothing. [phases] -phase_1 = { status = "completed", checkpointsha = "428aa189", name = "Apply 4 FRs in app_controller.py + 4 regression tests" } -phase_2 = { status = "pending", checkpointsha = "", name = "Fix live_gui sim test fragility (test_context_sim_live KeyError: paths)" } +phase_1 = { status = "reverted", checkpointsha = "428aa189", name = "Apply 4 FRs in app_controller.py + 4 regression tests" } +phase_2 = { status = "in_progress", checkpointsha = "", name = "Diagnose FR3+FR4 scope + apply minimal FR1+FR2 only" } [tasks] t1_1 = { status = "completed", commit_sha = "f5021360", description = "Pre-edit checkpoint" } -t1_2 = { status = "completed", commit_sha = "d80c94b9", description = "FR1: Pre-populate mma_tier_usage in _handle_reset_session" } -t1_3 = { status = "completed", commit_sha = "1919aa8a", description = "FR2: Make _flush_to_project defensive against missing model key" } -t1_4 = { status = "completed", commit_sha = "bc4651d1", description = "FR3: Re-add self.context_preset_manager = ContextPresetManager() in __init__" } -t1_5 = { status = "completed", commit_sha = "4284ec6e", description = "FR4: Remove 'persona_manager' from _LAZY_MANAGER_DEFAULTS in __getattr__" } -t1_6 = { status = "completed", commit_sha = "b96d709e", description = "Add 4 regression tests in tests/test_mma_tier_usage_reset_fix.py" } +t1_2 = { status = "completed_in_history", commit_sha = "d80c94b9", description = "FR1: Pre-populate mma_tier_usage in _handle_reset_session - IN GIT HISTORY ONLY; working tree reverted by 4660b8c8" } +t1_3 = { status = "completed_in_history", commit_sha = "1919aa8a", description = "FR2: Make _flush_to_project defensive against missing model key - IN GIT HISTORY ONLY; working tree reverted by 4660b8c8" } +t1_4 = { status = "no_op", commit_sha = "bc4651d1", description = "FR3: Re-add self.context_preset_manager = ContextPresetManager() - WAS A NO-OP (line was already in baseline 33d02bb1)" } +t1_5 = { status = "no_op", commit_sha = "4284ec6e", description = "FR4: Remove 'persona_manager' from _LAZY_MANAGER_DEFAULTS - WAS A NO-OP (set not in baseline; __getattr__ correctly raises AttributeError)" } +t1_6 = { status = "completed", commit_sha = "b96d709e", description = "Add 4 regression tests in tests/test_mma_tier_usage_reset_fix.py - IN GIT HISTORY" } t1_7 = { status = "completed", commit_sha = "b96d709e", description = "Verify the existing 3 tests in test_reset_session_clears_mma_and_rag.py still pass" } -t1_8 = { status = "completed", commit_sha = "b96d709e", description = "Run the 3 previously-failing tier-1 tests + 4 sim tests in test_extended_sims.py" } -t1_9 = { status = "completed", commit_sha = "428aa189", description = "Run targeted regression tests (full batch aborted by user)" } +t1_8 = { status = "completed", commit_sha = "b96d709e", description = "Run the 3 previously-failing tier-1 tests + 4 sim tests in test_extended_sims.py (ISOLATED)" } +t1_9 = { status = "completed", commit_sha = "428aa189", description = "Run targeted regression tests (full batched run after the fact showed tier-3 still fails)" } t1_10 = { status = "completed", commit_sha = "428aa189", description = "Checkpoint commit" } -t2_1 = { status = "pending", commit_sha = "", description = "Diagnose why proj['project']['files']['paths'] is missing after post_project round-trip in batched live_gui (works in isolated run)" } -t2_2 = { status = "pending", commit_sha = "", description = "Apply fix (production or test, whichever is correct root cause)" } +t2_0 = { status = "completed", commit_sha = "4660b8c8", description = "CATAS_TROPHIC: my own git checkout 33d02bb1 -- src/ reverted FR1+FR2 from working tree. Commit 4660b8c8 inadvertently included the baseline files (lost FR1+FR2 from working tree, but kept them in git history). The FR1+FR2 fixes are in git history (d80c94b9, 1919aa8a) but NOT in current HEAD (4660b8c8). Phase 2 sim_context.py fix is in HEAD." } +t2_1 = { status = "in_progress", commit_sha = "", description = "DECIDE: re-apply FR1+FR2 fixes to current HEAD (cherry-pick or new commit), or leave FR1+FR2 only in git history" } +t2_2 = { status = "pending", commit_sha = "", description = "Phase 2 sim_context.py defensive .setdefault('paths', []) fix" } t2_3 = { status = "pending", commit_sha = "", description = "Verify all 4 sim tests pass in FULL batch (tier-3-live_gui)" } t2_4 = { status = "pending", commit_sha = "", description = "Final checkpoint with batch log" } [verification] -mma_tier_usage_prepopulated = true -flush_to_project_defensive = true -context_preset_manager_init_restored = true -persona_manager_removed_from_lazy_defaults = true -regression_tests_pass = true +mma_tier_usage_prepopulated_in_git_history = true +mma_tier_usage_prepopulated_in_HEAD = false +flush_to_project_defensive_in_git_history = true +flush_to_project_defensive_in_HEAD = false +context_preset_manager_init_in_baseline = true +persona_manager_lazy_defaults = "absent from baseline; __getattr__ raises AttributeError correctly" +regression_tests_pass = "fail in HEAD (FR1+FR2 reverted)" reset_clears_mma_tests_pass = true -three_failing_tier1_tests_pass = true +three_failing_tier1_tests_pass = "depends on FR1+FR2 being in HEAD" extended_sims_pass_isolated = true extended_sims_pass_in_batch = false @@ -50,25 +53,35 @@ extended_sims_pass_in_batch = false tier_1_status_pre_fix = "FAIL (3 tests: test_app_controller_save_load, test_load_active_project_creates_persona_manager, test_load_context_preset_missing_raises_keyerror)" tier_2_status_pre_fix = "PASS (5/5 batches)" tier_3_status_pre_fix = "FAIL on test_extended_sims.py::test_context_sim_live (4 sim tests) - KeyError: 'model' (the original FR1+FR2 bug)" -tier_1_status_post_phase_1 = "PASS (5/5 tier-1 batches in 2026-06-10 batch run)" -tier_2_status_post_phase_1 = "PASS (5/5 tier-2 batches in 2026-06-10 batch run)" -tier_3_status_post_phase_1 = "FAIL on test_extended_sims.py::test_context_sim_live - KeyError: 'paths' (a NEW issue exposed after the original bug was fixed)" +tier_1_status_post_4660b8c8 = "FAIL (2 tests in test_mma_tier_usage_reset_fix.py: test_reset_session_makes_flush_to_project_not_crash + test_flush_to_project_is_defensive_against_partial_tier_dict, because FR1+FR2 are not in HEAD)" +tier_2_status_post_4660b8c8 = "PASS (5/5 tier-2 batches)" +tier_3_status_post_4660b8c8 = "FAIL on test_extended_sims.py::test_context_sim_live - 'switching to: temp_livecontextsim (stale ui - ops disabled)' (the ORIGINAL pre-FR1 failure mode, because FR1 is not in HEAD)" [notes] # Test fixture in tests/test_mma_tier_usage_reset_fix.py sets 4 UI flags # (ui_project_preset_name, ui_word_wrap, ui_gemini_cli_path, ui_auto_add_history) # that _flush_to_project reads but __init__ does not initialize. # This is a test-only accommodation for the inherited _UI_FLAG_DEFAULTS -# refactor from the previous agent's WIP commit. A follow-up to clean up -# _UI_FLAG_DEFAULTS is recommended. +# refactor from the previous agent's WIP commit. -# CRITICAL: Phase 1 verification was based on ISOLATED sim test runs. -# The full batch run (tier-3-live_gui) reveals a SEPARATE test fragility -# issue: sim_context.py:41-47 (the SECOND redundant file-add loop) -# fails in batch because proj['project']['files']['paths'] is missing -# after the post_project round-trip. This is a live_gui shared-subprocess -# state issue (different from the original KeyError: 'model' bug). -# -# Per the workflow's "Isolated-Pass Verification Fallacy" rule, the batch -# failure is the authoritative result. The track is NOT complete; the -# 4 sim tests must pass in batch (the verification criterion). +# CRITICAL FINDING 2026-06-10: FR3 was a no-op. The line +# 'self.context_preset_manager = ContextPresetManager()' was already +# in baseline 33d02bb1. The original spec was wrong about it being +# "lost in 72f8f466". The test for FR3 passes regardless of whether +# the FR3 fix commit is applied. + +# CRITICAL FINDING 2026-06-10: FR4 was also a no-op. The +# _LAZY_MANAGER_DEFAULTS set was added by the previous agent's WIP +# commit (f5021360) but is NOT in baseline 33d02bb1. With the set +# absent, __getattr__ raises AttributeError, so hasattr() correctly +# returns False for 'persona_manager'. The test for FR4 passes +# regardless of whether the FR4 fix commit is applied. + +# The ONLY meaningful fixes from Phase 1 were FR1 and FR2. These are +# in git history (d80c94b9, 1919aa8a) but not in current HEAD because +# of my catastrophic 'git checkout 33d02bb1 -- src/' mistake. The +# working tree needs to be restored to apply FR1+FR2, OR a new commit +# must be created that re-applies them on top of 4660b8c8. + +# The Phase 2 sim_context.py fix is the only thing in 4660b8c8 that +# is actually new (committed in 4660b8c8).