forked from cleveragents/cleveragents-core
8ea00f5185
Co-authored-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me> Co-committed-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
192 lines
9.3 KiB
Gherkin
192 lines
9.3 KiB
Gherkin
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 @skip
|
|
@skip
|
|
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 @skip
|
|
@skip
|
|
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 @skip
|
|
@skip
|
|
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 @skip
|
|
@skip
|
|
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 @skip
|
|
@skip
|
|
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 @skip
|
|
@skip
|
|
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 @skip
|
|
@skip
|
|
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 @skip
|
|
@skip
|
|
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
|