Feature: ConfigService coverage boost for uncovered branches Target uncovered lines in config_service.py that existing tests miss: resolve() verbose mode with CLI and ENV values, set_project_value with empty project name and corrupted TOML data, get_project_overrides with corrupted TOML data. Background: Given a fresh temporary config directory for coverage boost tests # ----------------------------------------------------------------------- # resolve() verbose mode – CLI_FLAG branch (line 1267) # ----------------------------------------------------------------------- Scenario: Resolve with cli_value and verbose produces CLI_FLAG chain entry with value Given a coverage boost ConfigService with empty config When I resolve "core.log.level" with cli_value "TRACE" and verbose True Then the chain should contain a CLI_FLAG entry with value "TRACE" # ----------------------------------------------------------------------- # resolve() verbose mode – ENV_VAR branch (lines 1279-1283) # ----------------------------------------------------------------------- Scenario: Resolve with env var set and verbose produces ENV_VAR chain entry with value and env_name Given a coverage boost ConfigService with empty config And the coverage boost env var "CLEVERAGENTS_LOG_LEVEL" is injected as "WARN" When I resolve "core.log.level" with verbose True and no cli_value Then the chain should contain an ENV_VAR entry with value "WARN" and env_name "CLEVERAGENTS_LOG_LEVEL" # ----------------------------------------------------------------------- # set_project_value() empty project name (lines 1404-1405) # ----------------------------------------------------------------------- Scenario: set_project_value raises ValueError when project_name is empty Given a coverage boost ConfigService with empty config When I call set_project_value with empty project name and key "plan.concurrency" value 8 Then a ValueError with message "project_name must not be empty" should be raised # ----------------------------------------------------------------------- # set_project_value() corrupted project section – not a dict (line 1415) # ----------------------------------------------------------------------- Scenario: set_project_value handles non-dict project section in TOML gracefully Given a coverage boost ConfigService with project section set to a string When I call set_project_value for project "myproj" key "plan.concurrency" value 8 Then the call should succeed without error And get_project_overrides for "myproj" should contain key "plan.concurrency" # ----------------------------------------------------------------------- # set_project_value() corrupted project overrides – not a dict (line 1418) # ----------------------------------------------------------------------- Scenario: set_project_value handles non-dict project overrides for a project gracefully Given a coverage boost ConfigService with project overrides for "myproj" set to a string When I call set_project_value for project "myproj" key "plan.concurrency" value 8 Then the call should succeed without error And get_project_overrides for "myproj" should contain key "plan.concurrency" # ----------------------------------------------------------------------- # get_project_overrides() corrupted project section – not a dict (line 1450) # ----------------------------------------------------------------------- Scenario: get_project_overrides returns empty dict when project section is not a dict Given a coverage boost ConfigService with project section set to a string When I call get_project_overrides for project "myproj" Then the coverage boost result should be an empty dictionary # ----------------------------------------------------------------------- # get_project_overrides() corrupted project data – not a dict (line 1453) # ----------------------------------------------------------------------- Scenario: get_project_overrides returns empty dict when project data for name is not a dict Given a coverage boost ConfigService with project overrides for "myproj" set to a string When I call get_project_overrides for project "myproj" Then the coverage boost result should be an empty dictionary