Feature: Action CLI spec alignment
  As a developer
  I want the action CLI commands aligned to the v3 spec
  So that actions are created via config-only and legacy flags are rejected

  Background:
    Given a spec alignment CLI runner
    And a spec alignment mocked lifecycle service

  # Config-only create (valid YAML creates action)
  Scenario: Config-only create with valid YAML creates action
    Given a spec alignment valid config file
    When I run spec alignment create with --config
    Then the spec alignment create should succeed
    And the spec alignment output should contain "Action Created"
    And the spec alignment output should contain "Namespaced Name"
    And the spec alignment output should contain "Short Name"
    And the spec alignment output should contain "State"

  # Config create with --format flag
  Scenario: Config-only create with --format plain produces plain output
    Given a spec alignment valid config file
    When I run spec alignment create with --config and --format "plain"
    Then the spec alignment create should succeed
    And the spec alignment output should contain "local/spec-action"

  Scenario: Config-only create with --format json produces JSON output
    Given a spec alignment valid config file
    When I run spec alignment create with --config and --format "json"
    Then the spec alignment create should succeed
    And the spec alignment output should contain "namespaced_name"

  # Legacy flag rejection
  Scenario: Legacy --name flag is rejected
    When I run spec alignment create with legacy flag "--name" "local/test"
    Then the spec alignment command should fail with unrecognized option

  Scenario: Legacy --strategy-actor flag is rejected
    When I run spec alignment create with legacy flag "--strategy-actor" "openai/gpt-4"
    Then the spec alignment command should fail with unrecognized option

  Scenario: Legacy --execution-actor flag is rejected
    When I run spec alignment create with legacy flag "--execution-actor" "openai/gpt-4"
    Then the spec alignment command should fail with unrecognized option

  Scenario: Legacy --definition-of-done flag is rejected
    When I run spec alignment create with legacy flag "--definition-of-done" "Test passes"
    Then the spec alignment command should fail with unrecognized option

  Scenario: Legacy --arg flag is rejected
    When I run spec alignment create with legacy flag "--arg" "x:string:required"
    Then the spec alignment command should fail with unrecognized option

  # List filters
  Scenario: List with --namespace filter
    Given spec alignment actions exist
    When I run spec alignment list with namespace "local"
    Then the spec alignment list should show filtered results
    And the spec alignment service list should use namespace "local"

  Scenario: List with --state filter
    Given spec alignment actions exist
    When I run spec alignment list with state "available"
    Then the spec alignment list should succeed

  Scenario: List with regex filter
    Given spec alignment actions exist
    When I run spec alignment list with regex "action-a"
    Then the spec alignment list should show filtered results

  Scenario: List with invalid regex pattern
    Given spec alignment actions exist
    When I run spec alignment list with regex "[invalid"
    Then the spec alignment command should abort

  # Show by namespaced name
  Scenario: Show by namespaced name
    Given a spec alignment action exists with name "local/my-action"
    When I run spec alignment show with name "local/my-action"
    Then the spec alignment show should display details
    And the spec alignment output should contain "Namespaced Name"
    And the spec alignment output should contain "Short Name"
    And the spec alignment output should contain "Definition of Done"

  # Archive by namespaced name
  Scenario: Archive by namespaced name
    Given a spec alignment action exists for archive "local/my-action"
    When I run spec alignment archive with name "local/my-action"
    Then the spec alignment archive should succeed

  # Invalid config file errors
  Scenario: Missing config file produces error
    When I run spec alignment create with missing config
    Then the spec alignment command should abort
    And the spec alignment output should contain "Config file error"

  Scenario: Invalid YAML config produces schema error
    Given a spec alignment invalid YAML config file
    When I run spec alignment create with --config
    Then the spec alignment command should abort

  Scenario: Config with schema errors produces validation error
    Given a spec alignment config with missing required fields
    When I run spec alignment create with --config
    Then the spec alignment command should abort
    And the spec alignment output should contain "validation error"

  # Show with long definition of done truncates to summary
  Scenario: Show action with long definition of done
    Given a spec alignment action with long definition of done
    When I run spec alignment show with name "local/long-dod"
    Then the spec alignment show should display details
    And the spec alignment output should contain "..."

  # List with long definition of done truncates to summary
  Scenario: List with long definition of done
    Given spec alignment actions with long definition of done
    When I run spec alignment list all
    Then the spec alignment list should succeed
    And the spec alignment list output should contain truncated dod

  # ValueError from config validation
  Scenario: Config with ValueError from Action.from_config
    Given a spec alignment config that triggers value error
    When I run spec alignment create with --config
    Then the spec alignment command should abort
    And the spec alignment output should contain "config validation error"

  # Available command removed
  Scenario: Available subcommand no longer exists
    When I run spec alignment available command
    Then the spec alignment command should fail with unrecognized command
