Feature: Project context CLI commands (B2.cli)
  As a CleverAgents user
  I want to manage project context policies via CLI commands
  So that I can control what resources and files are visible per ACMS phase

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

  # ── context set basic options ────────────────────────────────

  Scenario: Set default view with include resources
    When I run context set on "local/ctx-app" with view "default" and include-resource "db-*"
    Then the context set command should succeed
    And the stored policy default view should include resource "db-*"

  Scenario: Set default view with exclude resources
    When I run context set on "local/ctx-app" with view "default" and exclude-resource "db-test"
    Then the context set command should succeed
    And the stored policy default view should exclude resource "db-test"

  Scenario: Set default view with include paths
    When I run context set on "local/ctx-app" with view "default" and include-path "src/**/*.py"
    Then the context set command should succeed
    And the stored policy default view should include path "src/**/*.py"

  Scenario: Set default view with exclude paths
    When I run context set on "local/ctx-app" with view "default" and exclude-path "*.pyc"
    Then the context set command should succeed
    And the stored policy default view should exclude path "*.pyc"

  Scenario: Set default view with max file size
    When I run context set on "local/ctx-app" with view "default" and max-file-size 1048576
    Then the context set command should succeed
    And the stored policy default view max file size should be 1048576

  Scenario: Set default view with max total size
    When I run context set on "local/ctx-app" with view "default" and max-total-size 10485760
    Then the context set command should succeed
    And the stored policy default view max total size should be 10485760

  Scenario: Set strategize view
    When I run context set on "local/ctx-app" with view "strategize" and include-resource "cache-*"
    Then the context set command should succeed
    And the stored policy strategize view should include resource "cache-*"

  Scenario: Set invalid view name fails
    When I run context set on "local/ctx-app" with invalid view "bogus"
    Then the context set command should fail

  Scenario: Set view on nonexistent project fails
    When I run context set on "local/no-such-project" with view "default" and include-resource "x"
    Then the context set command should fail

  # ── context set --clear ─────────────────────────────────────

  Scenario: Clear a view resets it to inherit
    Given I have set a strategize view on "local/ctx-app" with defaults
    When I run context set on "local/ctx-app" with view "strategize" and clear flag
    Then the context set command should succeed
    And the stored policy strategize view should be None

  # ── context show ─────────────────────────────────────────────

  Scenario: Show displays the policy for a project
    Given I have set a default view on "local/ctx-app" with include-resource "db-*"
    When I run context show on "local/ctx-app" without options
    Then the context show command should succeed

  Scenario: Show with view displays resolved view
    Given I have set a default view on "local/ctx-app" with include-resource "db-*"
    When I run context show on "local/ctx-app" with view "default"
    Then the context show command should succeed

  Scenario: Show on nonexistent project fails
    When I run context show on "local/nonexistent-proj" without options
    Then the context show command should fail

  # ── inspect now wired to ACMS tier service ─────────────────

  Scenario: Inspect succeeds and shows tier state
    When I run context inspect on "local/ctx-app"
    Then the context inspect command should succeed

  # ── simulate now wired to ACMS tier service ────────────────

  Scenario: Simulate succeeds and shows assembly result
    When I run context simulate on "local/ctx-app"
    Then the context simulate command should succeed

  # ── view inheritance ─────────────────────────────────────────

  Scenario: Execute inherits from strategize when not overridden
    Given I have set a strategize view on "local/ctx-app" with include-resource "strat-res"
    When I run context show on "local/ctx-app" with view "execute"
    Then the resolved view should include resource "strat-res"

  Scenario: Apply inherits from execute when not overridden
    Given I have set an execute view on "local/ctx-app" with include-resource "exec-res"
    When I run context show on "local/ctx-app" with view "apply"
    Then the resolved view should include resource "exec-res"

  Scenario: Strategize inherits from default when not overridden
    Given I have set a default view on "local/ctx-app" with include-resource "def-res"
    When I run context show on "local/ctx-app" with view "strategize"
    Then the resolved view should include resource "def-res"

  # ── JSON format output ──────────────────────────────────────

  Scenario: Show with JSON format returns valid JSON
    Given I have set a default view on "local/ctx-app" with include-resource "db-*"
    When I run context show on "local/ctx-app" with format "json"
    Then the context show command should succeed
    And the context output should be valid JSON
