Feature: Context CLI ACMS pipeline wiring (B2.cli)
  As a CleverAgents user
  I want context inspect and simulate commands wired to the ACMS pipeline
  So that I can examine tier state and dry-run context assembly

  Background:
    Given a context wiring in-memory database is initialized
    And a project "local/wire-app" exists for context wiring

  # ── context set with ACMS options ──────────────────────────

  Scenario: Set ACMS hot_max_tokens option
    When I run wired context set on "local/wire-app" with hot-max-tokens 4000
    Then the wired context set command should succeed
    And the stored ACMS config hot_max_tokens should be 4000

  Scenario: Set ACMS warm_max_decisions option
    When I run wired context set on "local/wire-app" with warm-max-decisions 200
    Then the wired context set command should succeed
    And the stored ACMS config warm_max_decisions should be 200

  Scenario: Set ACMS cold_max_decisions option
    When I run wired context set on "local/wire-app" with cold-max-decisions 3000
    Then the wired context set command should succeed
    And the stored ACMS config cold_max_decisions should be 3000

  Scenario: Set ACMS temporal_scope option
    When I run wired context set on "local/wire-app" with temporal-scope "recent"
    Then the wired context set command should succeed
    And the stored ACMS config temporal_scope should be "recent"

  Scenario: Set invalid temporal_scope fails
    When I run wired context set on "local/wire-app" with temporal-scope "invalid"
    Then the wired context set command should fail

  Scenario: Set ACMS auto-refresh off
    When I run wired context set on "local/wire-app" with no-auto-refresh
    Then the wired context set command should succeed
    And the stored ACMS config auto_refresh should be false

  Scenario: Set ACMS summarize off
    When I run wired context set on "local/wire-app" with no-summarize
    Then the wired context set command should succeed
    And the stored ACMS config summarize should be false

  Scenario: Set ACMS strategy option
    When I run wired context set on "local/wire-app" with strategy "breadth_first"
    Then the wired context set command should succeed
    And the stored ACMS config strategies should contain "breadth_first"

  Scenario: Set ACMS skeleton_ratio option
    When I run wired context set on "local/wire-app" with skeleton-ratio 0.5
    Then the wired context set command should succeed
    And the stored ACMS config skeleton_ratio should be 0.5

  Scenario: Set ACMS default_breadth option
    When I run wired context set on "local/wire-app" with default-breadth 5
    Then the wired context set command should succeed
    And the stored ACMS config default_breadth should be 5

  Scenario: Set ACMS default_depth option
    When I run wired context set on "local/wire-app" with default-depth 7
    Then the wired context set command should succeed
    And the stored ACMS config default_depth should be 7

  Scenario: Set ACMS query_limit option
    When I run wired context set on "local/wire-app" with query-limit 50
    Then the wired context set command should succeed
    And the stored ACMS config query_limit should be 50

  Scenario: Set ACMS summary_max_tokens option
    When I run wired context set on "local/wire-app" with summary-max-tokens 2000
    Then the wired context set command should succeed
    And the stored ACMS config summary_max_tokens should be 2000

  # ── context show with ACMS config ──────────────────────────

  @tdd_issue @tdd_issue_4244 @tdd_expected_fail
  Scenario: Show displays ACMS pipeline config
    Given I have set ACMS config on "local/wire-app" with hot-max-tokens 6000
    When I run wired context show on "local/wire-app" with format "json"
    Then the wired context show command should succeed
    And the wired output should be valid JSON
    And the wired JSON output should contain key "acms_config"

  @tdd_issue @tdd_issue_4244 @tdd_expected_fail
  Scenario: Show with view displays ACMS config
    Given I have set ACMS config on "local/wire-app" with hot-max-tokens 6000
    When I run wired context show on "local/wire-app" with view "default" and format "json"
    Then the wired context show command should succeed
    And the wired output should be valid JSON
    And the wired JSON output should contain key "acms_config"

  # ── context inspect wired to tier service ──────────────────

  Scenario: Inspect returns tier metrics with no fragments
    When I run wired inspect for project "local/wire-app" using defaults
    Then the wired context inspect command should succeed

  @tdd_issue @tdd_issue_4244 @tdd_expected_fail
  Scenario: Inspect with JSON format returns valid JSON
    When I run wired inspect for project "local/wire-app" using format "json"
    Then the wired context inspect command should succeed
    And the wired output should be valid JSON
    And the wired JSON output should contain key "tier_metrics"
    And the wired JSON output should contain key "project_fragments"
    And the wired JSON output should contain key "actor_visibility"

  @tdd_issue @tdd_issue_4244 @tdd_expected_fail
  Scenario: Inspect with pre-populated fragments shows counts
    Given the tier service has a hot fragment "frag-1" for project "local/wire-app"
    And the tier service has a warm fragment "frag-2" for project "local/wire-app"
    When I run wired inspect for project "local/wire-app" using format "json"
    Then the wired context inspect command should succeed
    And the wired JSON project_fragments total should be 2

  @tdd_issue @tdd_issue_4244 @tdd_expected_fail
  Scenario: Inspect shows project-scoped tier metrics not global counts
    Given the tier service has a hot fragment "scoped-a" for project "local/wire-app"
    And the tier service has a hot fragment "other-b" for project "local/other-proj"
    When I run wired inspect for project "local/wire-app" using format "json"
    Then the wired context inspect command should succeed
    And the wired JSON tier_metrics hot_count should be 1

  Scenario: Inspect on nonexistent project fails
    When I run wired inspect for project "local/no-such" using defaults
    Then the wired context inspect command should fail

  Scenario: Inspect with invalid view fails
    When I run wired inspect for project "local/wire-app" using view "bogus"
    Then the wired context inspect command should fail

  # ── context simulate wired to tier service ─────────────────

  Scenario: Simulate returns assembly result with no fragments
    When I run wired simulate for project "local/wire-app" using defaults
    Then the wired context simulate command should succeed

  @tdd_issue @tdd_issue_4244 @tdd_expected_fail
  Scenario: Simulate with JSON format returns valid JSON
    When I run wired simulate for project "local/wire-app" using format "json"
    Then the wired context simulate command should succeed
    And the wired output should be valid JSON
    And the wired JSON output should contain key "total_tokens"
    And the wired JSON output should contain key "budget_used"
    And the wired JSON output should contain key "strategies_used"
    And the wired JSON output should contain key "context_hash"

  Scenario: Simulate with budget override
    When I run wired simulate for project "local/wire-app" using budget 2000
    Then the wired context simulate command should succeed

  @tdd_issue @tdd_issue_4244 @tdd_expected_fail
  Scenario: Simulate with pre-populated fragments assembles them
    Given the tier service has a hot fragment "sim-1" for project "local/wire-app" sized at 100 tokens
    When I run wired simulate for project "local/wire-app" using format "json"
    Then the wired context simulate command should succeed
    And the wired JSON total_tokens should be greater than 0

  Scenario: Simulate on nonexistent project fails
    When I run wired simulate for project "local/no-such" using defaults
    Then the wired context simulate command should fail

  Scenario: Simulate with invalid view fails
    When I run wired simulate for project "local/wire-app" using view "bogus"
    Then the wired context simulate command should fail

  Scenario: Simulate with strategy hint
    When I run wired simulate for project "local/wire-app" using strategy "breadth_first"
    Then the wired context simulate command should succeed

  @tdd_issue @tdd_issue_4244 @tdd_expected_fail
  Scenario: Simulate with focus filters fragments by resource URI
    Given a focused hot fragment "foc-1" with resource "uko:file/main.py" and 100 tokens exists for project "local/wire-app"
    And a focused hot fragment "foc-2" with resource "uko:file/test.py" and 80 tokens exists for project "local/wire-app"
    When I run wired simulate for project "local/wire-app" focusing on "uko:file/main.py" in format "json"
    Then the wired context simulate command should succeed
    And the wired JSON fragment_count should be 1
    And the wired JSON total_tokens should be 100

  Scenario: Simulate with view option
    When I run wired simulate for project "local/wire-app" using view "strategize"
    Then the wired context simulate command should succeed
