Feature: TUI Persona State Coverage Scenarios that exercise previously uncovered code paths in the tui/persona/state.py module. Background: Given a mock persona registry is prepared Scenario: active_name resolves default when session is new When I request the active name for a new session "sess-1" Then the active name should be the resolved default persona name Scenario: active_name returns cached name on second call Given session "sess-2" already has active persona "analyst" When I request the active name for a new session "sess-2" Then the active name should be "analyst" Scenario: active_persona falls back to default when registry returns None Given session "sess-3" is bound to a persona name not in the registry When I request the active persona for session "sess-3" Then the persona should be the registry default And the session should be rebound to the default persona name Scenario: active_persona returns the looked-up persona when found Given session "sess-4" is bound to a persona name that exists in the registry When I request the active persona for session "sess-4" Then the persona should be the one from the registry Scenario: set_active_persona raises ValueError for unknown persona When I try to set an unknown persona "ghost" for session "sess-5" Then tpscov a ValueError should be raised with message containing "Unknown persona" Scenario: set_active_persona sets and returns a known persona When I set persona "coder" for session "sess-6" Then the returned persona name should be "coder" And session "sess-6" should have active persona "coder" And the registry last persona should be set to "coder" Scenario: set_active_persona skips preset init when session already has one Given the preset for session "sess-6b" is already set to "turbo" When I set persona "coder" for session "sess-6b" Then the returned persona name should be "coder" And the preset for session "sess-6b" should still be "turbo" Scenario: current_preset returns default for a new session When I request the current preset for new session "sess-7" Then the current preset should be "default" Scenario: cycle_preset returns default when persona has no argument presets Given a persona with no argument presets is active for session "sess-8" When I cycle the preset for session "sess-8" Then the cycled preset should be "default" Scenario: cycle_preset picks first preset when current is not in the list Given a persona with presets "default,fast,slow" is active for session "sess-9" And the current preset for session "sess-9" is "nonexistent" When I cycle the preset for session "sess-9" Then the cycled preset should be "default" Scenario: cycle_preset advances to the next preset in the list Given a persona with presets "default,fast,slow" is active for session "sess-10" And the current preset for session "sess-10" is "default" When I cycle the preset for session "sess-10" Then the cycled preset should be "fast" Scenario: effective_arguments delegates to persona with current preset Given a persona with base arguments and presets is active for session "sess-11" When I request the effective arguments for session "sess-11" Then the effective arguments should merge base and preset overrides