Feature: Context Analysis Coverage Boost
  Additional scenarios targeting previously uncovered defensive code paths
  in cleveragents.agents.graphs.context_analysis module.

  Background:
    Given the context analysis coverage module is imported

  # ---- _with_retry fallback (line 183) ----

  Scenario: _with_retry returns chain unchanged when it has no with_retry method
    Given I have a context analysis agent for coverage boost
    And I have a runnable without a with_retry method
    When I call _with_retry on the runnable
    Then the returned object should be the same runnable

  # ---- _load_files exception handler (lines 239-240) ----

  Scenario: _load_files records error when TextLoader raises an exception
    Given I have a context analysis agent for coverage boost
    And TextLoader.load is patched to raise an OSError
    When I execute load_files with a real file path
    Then the load_files result should contain an error mentioning the file
    And the documents list should be empty in the result

  # ---- _analyze_dependencies exception handler (lines 267-276) ----

  Scenario: _analyze_dependencies records error when LLM chain raises
    Given I have a context analysis agent with a raising LLM for coverage boost
    And I have a state with one document for dependency analysis
    When I execute analyze_dependencies on the state
    Then the result should have an error about dependency analysis
    And the dependencies for the document should be an empty list

  Scenario: _analyze_dependencies combines errors with pre-existing state error
    Given I have a context analysis agent with a raising LLM for coverage boost
    And I have a state with one document and a pre-existing error
    When I execute analyze_dependencies on the state
    Then the result error should contain both the pre-existing and new error messages

  # ---- _score_relevance exception handler (lines 351-358) ----

  Scenario: _score_relevance records error when LLM chain raises
    Given I have a context analysis agent with a raising LLM for coverage boost
    And I have a state with chunks for relevance scoring
    When I execute score_relevance on the state
    Then the result should have an error about relevance scoring
    And the relevance score for the file should default to 0.5

  Scenario: _score_relevance combines errors with pre-existing state error
    Given I have a context analysis agent with a raising LLM for coverage boost
    And I have a state with chunks and a pre-existing error for scoring
    When I execute score_relevance on the state
    Then the scoring result error should contain both the pre-existing and new error messages

  # ---- _summarize_context exception handler (lines 416-424) ----

  Scenario: _summarize_context records error when LLM chain raises
    Given I have a context analysis agent with a raising LLM for coverage boost
    And I have a complete state ready for summarization
    When I execute summarize_context on the state
    Then the summary should be "Context analysis failed"
    And the result should have an error about summarization

  Scenario: _summarize_context combines errors with pre-existing state error
    Given I have a context analysis agent with a raising LLM for coverage boost
    And I have a complete state with a pre-existing error for summarization
    When I execute summarize_context on the state
    Then the summary should be "Context analysis failed"
    And the summarization result error should contain both the pre-existing and new error messages

  # ---- No LLM provided raises ValueError (lines 114-118) ----

  Scenario: Agent constructor raises ValueError when no LLM is provided
    When I try to create a ContextAnalysisAgent with no LLM
    Then a ValueError should be raised about missing LLM provider
