@tdd_issue @tdd_issue_968 @mock_only
Feature: TDD Issue #968 — plan explain expects decision_id but test passes plan_id
  As a developer
  I want to verify that `plan explain <plan_id>` succeeds when given a plan ID
  So that the bug is captured and will be caught by a regression test

  # This test was written to capture bug #968:
  # The `plan explain` CLI command declares its first positional argument as
  # `decision_id` (a Decision ULID).  When the M3 acceptance test passes a
  # plan ID, `svc.get_decision(plan_id)` raises DecisionNotFoundError because
  # the plan ID is not a decision ID.  The command exits with rc=1 and
  # "Decision not found".
  #
  # The expected fix (#968) will make `explain_decision_cmd` fall back to
  # treating the argument as a plan_id when decision lookup fails — looking
  # up decisions for the plan via `decision_service.list_decisions(plan_id)`
  # and explaining the root decision.
  #
  # These tests assert the *fixed* behaviour (rc=0 with decision details) and
  # will FAIL until the bug is fixed.  The @tag inverts the
  # result so CI passes.

  Scenario: Plan explain succeeds when given a plan_id with decisions
    Given tdd968 a mock DecisionService where get_decision raises DecisionNotFoundError for a plan id
    And tdd968 the same mock DecisionService returns decisions via list_decisions for the plan id
    When tdd968 I invoke plan explain with the plan id
    Then tdd968 the command should exit with return code 0
    And tdd968 the output should contain decision details

  Scenario: Plan explain with plan_id shows root decision question
    Given tdd968 a mock DecisionService where get_decision raises DecisionNotFoundError for a plan id
    And tdd968 the same mock DecisionService returns decisions via list_decisions for the plan id
    When tdd968 I invoke plan explain with the plan id
    Then tdd968 the command should exit with return code 0
    And tdd968 the output should contain the root decision question
