Feature: TDD — PlanGenerationGraph validation logic
  As a developer fixing a validation regression
  I want the PlanGenerationGraph._validate() logic to respect explicit LLM FAIL responses
  So that generated code is rejected when the LLM indicates failure, regardless of code length

  @tdd_issue @tdd_issue_10746
  Scenario: FAIL response is respected for code longer than 10 characters
    Given I have a langgraph PlanGenerationGraph instance
    When I execute the langgraph validate node with generated code:
      """
      FAIL: Security vulnerability found in generated code that exceeds length threshold
      """
    Then the langgraph validation status should be "FAIL"

  @tdd_issue @tdd_issue_10746
  Scenario: PASS response is accepted when no FAIL present
    Given I have a langgraph PlanGenerationGraph instance
    When I execute the langgraph validate node with generated code:
      """
      PASS: Code appears correct and follows best practices
      """
    Then the langgraph validation status should be "PASS"

  @tdd_issue @tdd_issue_10746
  Scenario: Mixed PASS and FAIL prefers FAIL
    Given I have a langgraph PlanGenerationGraph instance
    When I execute the langgraph validate node with generated code:
      """
      PASS: Looks okay
      FAIL: But contains a logic bug in edge case handling
      """
    Then the langgraph validation status should be "FAIL"

  @tdd_issue @tdd_issue_10746
  Scenario: No explicit PASS or FAIL keyword should fail
    Given I have a langgraph PlanGenerationGraph instance
    When I execute the langgraph validate node with generated code:
      """
      The validation response contains only neutral observations about the code
      structure and design choices with no verdict keyword present.
      """
    Then the langgraph validation status should be "FAIL"

  @tdd_issue @tdd_issue_10746
  Scenario: PASS keyword in mixed-case is accepted (case-insensitive)
    Given I have a langgraph PlanGenerationGraph instance
    When I execute the langgraph validate node with generated code:
      """
      pass: minimal checks passed, nothing critical found
      """
    Then the langgraph validation status should be "PASS"
