Feature: Provider configuration fixes remove FakeListLLM defaults
  As a developer
  I want providers to require explicit LLM configuration
  So that FakeListLLM is never silently used as a production fallback

  @phase1
  Scenario: Provider auto-detection selects first configured provider
    Given a provider-fix settings instance with openai configured
    When I create a provider-fix registry from those settings
    Then the provider-fix default provider type should be "openai"

  @phase1
  Scenario: No providers configured and mock_providers off raises error
    Given a provider-fix settings instance with no providers configured
    And provider-fix mock_providers is disabled
    When I call provider-fix validate_provider_availability
    Then a provider-fix ValueError should be raised containing "No AI providers configured"

  @phase1
  Scenario: mock_providers flag enables mock provider
    Given a provider-fix settings instance with mock_providers enabled
    When I build the provider-fix AI provider from the container helper
    Then a provider-fix mock AI provider should be returned

  @phase1
  Scenario: FakeListLLM is not used as default fallback in PlanGenerationGraph
    When I attempt to create a provider-fix PlanGenerationGraph without an LLM
    Then a provider-fix ValueError should be raised containing "No LLM provider configured"

  @phase1
  Scenario: FakeListLLM is not used as default fallback in ContextAnalysisAgent
    When I attempt to create a provider-fix ContextAnalysisAgent without an LLM
    Then a provider-fix ValueError should be raised containing "No LLM provider configured"

  @phase1
  Scenario: FakeListLLM is not used as default fallback in AutoDebugAgent
    When I attempt to create a provider-fix AutoDebugAgent without an LLM
    Then a provider-fix ValueError should be raised containing "No LLM provider configured"

  @phase1
  Scenario: Provider selection trace logging outputs chosen provider
    Given a provider-fix settings instance with openai configured
    When I create a provider-fix registry and request the default provider
    Then the provider-fix selection should be logged

  @phase1
  Scenario: resolve_provider_by_name returns provider for configured name
    Given a provider-fix settings instance with openai configured
    When I provider-fix resolve provider by name "openai"
    Then I should receive a provider-fix AI provider instance

  @phase1
  Scenario: resolve_provider_by_name raises error for unconfigured name
    Given a provider-fix settings instance with no providers configured
    When I provider-fix resolve provider by name "openai"
    Then a provider-fix ValueError should be raised containing "not configured"

  @phase1
  Scenario: resolve_provider_by_name raises error for unknown name
    Given a provider-fix settings instance with no providers configured
    When I provider-fix resolve provider by name "nonexistent_provider"
    Then a provider-fix ValueError should be raised containing "Unknown provider"

  @phase1
  Scenario: validate_provider_availability passes with provider configured
    Given a provider-fix settings instance with openai configured
    And provider-fix mock_providers is disabled on that instance
    When I call provider-fix validate_provider_availability
    Then no provider-fix error should be raised

  @phase1
  Scenario: mock_providers warns outside test mode
    Given a provider-fix settings instance with mock_providers enabled
    And the provider-fix environment is set to "production"
    When I call provider-fix validate_provider_availability
    Then a provider-fix warning should be logged about mock_providers

  @phase1
  Scenario: Settings mock_providers field defaults to False
    Given I create a provider-fix fresh settings instance
    Then provider-fix mock_providers should be False by default

  @phase1
  Scenario: Container get_ai_provider respects mock_providers setting
    Given a provider-fix settings instance with mock_providers enabled
    When I call provider-fix get_ai_provider with those settings
    Then a provider-fix mock provider or None should be returned

  @phase1
  Scenario: PlanGenerationGraph works with explicit LLM
    Given I have a provider-fix FakeListLLM instance for testing
    When I create a provider-fix PlanGenerationGraph with that LLM
    Then the provider-fix graph should be created successfully

  @phase1
  Scenario: ContextAnalysisAgent works with explicit LLM
    Given I have a provider-fix FakeListLLM instance for testing
    When I create a provider-fix ContextAnalysisAgent with that LLM
    Then the provider-fix agent should be created successfully

  @phase1
  Scenario: AutoDebugAgent works with explicit LLM
    Given I have a provider-fix FakeListLLM instance for testing
    When I create a provider-fix AutoDebugAgent with that LLM
    Then the provider-fix agent should be created successfully
