Files
cleveragents-core/robot/subplan_execution.robot
T
Luis Mendes 9f6fb667c2
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 20s
CI / security (pull_request) Successful in 33s
CI / typecheck (pull_request) Successful in 34s
CI / integration_tests (pull_request) Successful in 2m45s
CI / unit_tests (pull_request) Successful in 13m14s
CI / docker (pull_request) Successful in 38s
CI / benchmark-regression (pull_request) Successful in 24m49s
CI / coverage (pull_request) Successful in 49m5s
CI / lint (push) Successful in 14s
CI / quality (push) Successful in 15s
CI / build (push) Successful in 14s
CI / security (push) Successful in 28s
CI / typecheck (push) Successful in 30s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 2m43s
CI / unit_tests (push) Successful in 13m9s
CI / docker (push) Successful in 39s
CI / benchmark-publish (push) Successful in 14m49s
CI / coverage (push) Successful in 47m53s
feat(subplan): execute and merge subplans
Implement SubplanExecutionService and SubplanMergeService to enable
parent plans to decompose work into coordinated child subplans with
configurable execution modes (sequential, parallel, dependency-ordered)
and merge strategies (git_three_way, sequential_apply, fail_on_conflict,
last_wins).

- SubplanExecutionService: schedules subplan execution with retry
  support via SubplanFailureHandler, max_parallel limits, fail_fast
  semantics, and topological DAG ordering for dependency mode
- SubplanMergeService: wraps sandbox merge infrastructure to combine
  subplan sandbox outputs using the configured merge strategy
- BDD tests: 21 scenarios covering all execution modes, merge
  strategies, validation, and integration flows
- Robot tests: 11 integration test cases with helper module
- ASV benchmarks: performance benchmarks for execution and merge
- Documentation: reference guide in docs/reference/subplans.md

ISSUES CLOSED: #184
2026-03-01 09:07:06 +00:00

109 lines
5.4 KiB
Plaintext

*** Settings ***
Documentation Smoke tests for subplan execution scheduler, merge strategies,
... and integrated execution+merge workflows.
Resource ${CURDIR}/common.resource
Suite Setup Setup Test Environment
Suite Teardown Cleanup Test Environment
*** Variables ***
${HELPER} robot/helper_subplan_execution.py
*** Test Cases ***
Sequential Execution Completes All Subplans
[Documentation] Verify sequential mode executes all subplans in order
[Tags] subplan execution sequential
${result}= Run Process ${PYTHON} ${HELPER} sequential-all cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} sequential-all-ok
Sequential Execution Stops On Fail Fast
[Documentation] Verify sequential fail_fast stops after first failure
[Tags] subplan execution sequential failfast
${result}= Run Process ${PYTHON} ${HELPER} sequential-failfast cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} sequential-failfast-ok
Parallel Execution Completes All Subplans
[Documentation] Verify parallel mode executes all subplans
[Tags] subplan execution parallel
${result}= Run Process ${PYTHON} ${HELPER} parallel-all cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} parallel-all-ok
Dependency Ordered Execution Respects DAG
[Documentation] Verify dependency-ordered mode follows topological order
[Tags] subplan execution dependency
${result}= Run Process ${PYTHON} ${HELPER} dep-ordered cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} dep-ordered-ok
Git Three Way Merge Non Overlapping
[Documentation] Verify git three-way merge combines non-overlapping changes
[Tags] subplan merge git
${result}= Run Process ${PYTHON} ${HELPER} merge-git-clean cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} merge-git-clean-ok
Sequential Apply Merge
[Documentation] Verify sequential apply merge strategy
[Tags] subplan merge sequential
${result}= Run Process ${PYTHON} ${HELPER} merge-sequential cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} merge-sequential-ok
Last Wins Merge Strategy
[Documentation] Verify last-wins merge strategy takes final output
[Tags] subplan merge lastwins
${result}= Run Process ${PYTHON} ${HELPER} merge-last-wins cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} merge-last-wins-ok
Fail On Conflict Merge Raises Error
[Documentation] Verify fail-on-conflict strategy raises error on conflicts
[Tags] subplan merge conflict
${result}= Run Process ${PYTHON} ${HELPER} merge-fail-conflict cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} merge-fail-conflict-ok
Execution With Merge Integration
[Documentation] Verify end-to-end execution and merge integration
[Tags] subplan execution merge integration
${result}= Run Process ${PYTHON} ${HELPER} exec-merge-integration cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} exec-merge-integration-ok
Service Validation Guards
[Documentation] Verify service rejects invalid inputs
[Tags] subplan validation
${result}= Run Process ${PYTHON} ${HELPER} validation-guards cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} validation-guards-ok
Execution Summary Report
[Documentation] Verify execution result reports correct summary
[Tags] subplan execution summary
${result}= Run Process ${PYTHON} ${HELPER} exec-summary cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} exec-summary-ok
Non Retriable Error Is Not Retried
[Documentation] Verify non-retriable errors are not retried
[Tags] subplan execution retry
${result}= Run Process ${PYTHON} ${HELPER} retry-non-retriable cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} retry-non-retriable-ok
Executor Exception Triggers Retry Then Succeeds
[Documentation] Verify executor exception triggers retry for retriable errors
[Tags] subplan execution retry
${result}= Run Process ${PYTHON} ${HELPER} retry-exception cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} retry-exception-ok
Merge Conflict During Execution
[Documentation] Verify merge conflict during execution marks result as failed
[Tags] subplan execution merge conflict
${result}= Run Process ${PYTHON} ${HELPER} merge-conflict-exec cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} merge-conflict-exec-ok