Files
cleveragents-core/features/subplan_model.feature
T
brent.edwards ab8ed19aa7
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 19s
CI / lint (pull_request) Failing after 22s
CI / build (pull_request) Successful in 27s
CI / typecheck (pull_request) Successful in 55s
CI / coverage (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Has been skipped
CI / security (pull_request) Successful in 1m7s
CI / unit_tests (pull_request) Has been cancelled
CI / integration_tests (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
fix(tests): remove AutomationLevel references after legacy field removal
Master's refactor(automation) commit removed the AutomationLevel enum
and automation_level field from Plan. Update all behave steps, robot
helpers, and feature scenarios that referenced the removed type:

- cli_lifecycle_robot_alignment_steps.py: drop import and field assignment
- persistence_robot_alignment_steps.py: drop import and field assignment
- subplan_model_steps.py: drop import, parameter, and field assignment
- subplan_model.feature: replace automation level scenario with profile check
- helper_cli_lifecycle.py: drop import and field assignment
- helper_persistence_lifecycle.py: drop import, field assignment, and assertion
2026-02-20 20:34:29 +00:00

162 lines
7.3 KiB
Gherkin

Feature: Subplan Model Hierarchy and Configuration
As a developer
I want the Plan model to support subplan hierarchies
So that parent plans can decompose work into coordinated child plans
# Root plan identity
Scenario: Root plan has no parent and root equals self
Given I create a subplan-test root plan
Then the subplan-test plan should not be a subplan
And the subplan-test plan should be a root plan
And the subplan-test plan depth should be 0
Scenario: Root plan with explicit root_plan_id equal to plan_id
Given I create a subplan-test plan with root_plan_id equal to plan_id
Then the subplan-test plan should be a root plan
And the subplan-test plan should not be a subplan
# Child plan identity
Scenario: Child plan with parent_plan_id set is a subplan
Given I create a subplan-test child plan with a parent
Then the subplan-test plan should be a subplan
And the subplan-test plan should not be a root plan
And the subplan-test plan attempt should be 1
Scenario: Root plan id propagates to nested children
Given I create a subplan-test three-level hierarchy
Then the subplan-test grandchild root_plan_id should match the root plan_id
# Default values for new plans
Scenario: New plan defaults to strategize phase and queued state
Given I create a subplan-test default plan
Then the subplan-test plan phase should be "strategize"
And the subplan-test plan processing state should be "queued"
And the subplan-test plan should not be terminal
And the subplan-test plan should not be errored
Scenario: New plan defaults to no automation profile
Given I create a subplan-test default plan
Then the subplan-test plan automation profile should be none
Scenario: New plan has no subplan config by default
Given I create a subplan-test default plan
Then the subplan-test plan subplan_config should be none
Scenario: New plan has empty subplan statuses by default
Given I create a subplan-test default plan
Then the subplan-test plan should have 0 subplan statuses
# Subplan config storage and retrieval
Scenario: Plan stores sequential subplan config
Given I create a subplan-test plan with sequential subplan config
Then the subplan-test plan subplan_config execution_mode should be "sequential"
And the subplan-test plan subplan_config merge_strategy should be "git_three_way"
And the subplan-test plan subplan_config fail_fast should be false
Scenario: Plan stores parallel subplan config with custom settings
Given I create a subplan-test plan with parallel subplan config
Then the subplan-test plan subplan_config execution_mode should be "parallel"
And the subplan-test plan subplan_config max_parallel should be 10
And the subplan-test plan subplan_config retry_failed should be true
And the subplan-test plan subplan_config max_retries should be 3
Scenario: SubplanConfig defaults are sensible
Given I create a subplan-test default subplan config
Then the subplan-test subplan config execution_mode should be "sequential"
And the subplan-test subplan config merge_strategy should be "git_three_way"
And the subplan-test subplan config max_parallel should be 5
And the subplan-test subplan config fail_fast should be false
And the subplan-test subplan config retry_failed should be true
And the subplan-test subplan config max_retries should be 2
And the subplan-test subplan config timeout should be none
# Plan hierarchy helpers
Scenario: Plan with subplan statuses reports has_subplans true
Given I create a subplan-test plan with one subplan status
Then the subplan-test plan should have subplans
Scenario: Plan without subplan statuses reports has_subplans false
Given I create a subplan-test default plan
Then the subplan-test plan should not have subplans
Scenario: Depth returns negative one for non-root plans
Given I create a subplan-test child plan with a parent
Then the subplan-test plan depth should be -1
# Child plans follow same lifecycle as root plans
Scenario: Child plan transitions follow standard lifecycle
Then subplan-test transition from "action" to "strategize" should be valid
And subplan-test transition from "strategize" to "execute" should be valid
And subplan-test transition from "execute" to "apply" should be valid
Scenario: Child plan invalid transitions are rejected
Then subplan-test transition from "strategize" to "apply" should be invalid
And subplan-test transition from "action" to "execute" should be invalid
And subplan-test transition from "action" to "apply" should be invalid
# Dependency guardrails
Scenario: SubplanFailureHandler stops others when fail_fast is true
Given I create a subplan-test fail-fast config with errored status
Then the subplan-test failure handler should stop others
Scenario: SubplanFailureHandler does not stop others for parallel without fail_fast
Given I create a subplan-test parallel-no-fail-fast config with errored status
Then the subplan-test failure handler should not stop others
Scenario: SubplanFailureHandler retries retriable failure
Given I create a subplan-test config with retriable timeout error
Then the subplan-test failure handler should retry
Scenario: SubplanFailureHandler does not retry non-retriable error
Given I create a subplan-test config with non-retriable configuration error
Then the subplan-test failure handler should not retry
Scenario: SubplanFailureHandler does not retry when retries disabled
Given I create a subplan-test config with retries disabled and retriable error
Then the subplan-test failure handler should not retry
Scenario: SubplanFailureHandler does not retry when max retries exceeded
Given I create a subplan-test config with max retries exceeded
Then the subplan-test failure handler should not retry
# CLI dict rendering for subplan hierarchy
Scenario: CLI dict includes parent_plan_id for child plans
Given I create a subplan-test child plan with a parent
And I build a subplan-test plan with the child identity
Then the subplan-test cli dict should contain parent_plan_id
Scenario: CLI dict includes subplan_count when subplans exist
Given I create a subplan-test plan with one subplan status
Then the subplan-test cli dict should contain subplan_count of 1
Scenario: CLI dict omits parent_plan_id for root plans
Given I create a subplan-test root plan
And I build a subplan-test plan with the root identity
Then the subplan-test cli dict should not contain parent_plan_id
# Validation guardrails
Scenario: Invalid ULID for parent_plan_id raises validation error
When I try to create a subplan-test identity with invalid parent ULID
Then a validation error should be raised
Scenario: SubplanConfig max_parallel below minimum raises validation error
When I try to create a subplan-test config with max_parallel 0
Then a validation error should be raised
Scenario: SubplanConfig max_parallel above maximum raises validation error
When I try to create a subplan-test config with max_parallel 51
Then a validation error should be raised
Scenario: SubplanConfig max_retries below minimum raises validation error
When I try to create a subplan-test config with max_retries -1
Then a validation error should be raised