@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 ` 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 @tdd_expected_fail 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