Feature: Plan Service Coverage Boost
  Target uncovered lines in plan_service.py to increase branch and line coverage.

  Scenario: Build actor context populates initial_context from config_blob dict
    Given I have a lightweight plan service for coverage boost testing
    And I have an actor with initial_context dict in config_blob
    When I build the actor context for the actor with initial_context
    Then the actor invocation context should contain the initial_context entries

  Scenario: Build actor context populates graph_descriptor from actor dict
    Given I have a lightweight plan service for coverage boost testing
    And I have an actor with a dict graph_descriptor
    When I build the actor context for the actor with graph_descriptor
    Then the actor invocation context should contain the graph_descriptor

  Scenario: Resolve AI provider raises PlanError when actor has no provider
    Given I have a lightweight plan service for coverage boost testing
    And the actor lookup returns an actor with empty provider
    When I try to resolve the AI provider for the providerless actor
    Then the providerless actor PlanError should contain "Actor is missing provider configuration"

  Scenario: Strip code fences removes markdown python fences
    Given I have a lightweight plan service for coverage boost testing
    When I strip code fences from python-fenced content
    Then the stripped content should contain only the inner code

  Scenario: Strip code fences removes generic markdown fences
    Given I have a lightweight plan service for coverage boost testing
    When I strip code fences from generic-fenced content
    Then the stripped content should contain only the inner text

  Scenario: LangSmith config returns empty dict when builder returns None
    Given I have a lightweight plan service for coverage boost testing
    And LangSmith is enabled but build_langsmith_config returns None
    When I build the LangSmith config for a project
    Then the plan service LangSmith config result should be an empty dict

  Scenario: Build actor context uses context_variables fallback for initial_context
    Given I have a lightweight plan service for coverage boost testing
    And I have an actor with context_variables fallback in config_blob
    When I build the actor context for the actor with context_variables
    Then the actor invocation context should contain the context_variables entries

  Scenario: Build actor context falls back to config_blob graph_descriptor key
    Given I have a lightweight plan service for coverage boost testing
    And I have an actor with graph_descriptor in config_blob but not on the actor
    When I build the actor context for the config_blob graph_descriptor actor
    Then the actor invocation context should contain the config_blob graph_descriptor
