Files
cleveragents-core/robot/subplan_spawn_orchestration.robot
T
freemo 21e9a65c33
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / build (pull_request) Successful in 27s
CI / typecheck (pull_request) Successful in 31s
CI / quality (pull_request) Successful in 31s
CI / security (pull_request) Successful in 43s
CI / unit_tests (pull_request) Successful in 2m56s
CI / integration_tests (pull_request) Successful in 3m45s
CI / docker (pull_request) Successful in 56s
CI / e2e_tests (pull_request) Successful in 4m14s
CI / coverage (pull_request) Successful in 7m37s
CI / lint (push) Successful in 15s
CI / build (push) Successful in 38s
CI / quality (push) Successful in 41s
CI / typecheck (push) Successful in 55s
CI / security (push) Successful in 56s
CI / benchmark-regression (push) Has been skipped
CI / unit_tests (push) Successful in 1m41s
CI / docker (push) Successful in 55s
CI / integration_tests (push) Successful in 3m39s
CI / e2e_tests (push) Successful in 5m9s
CI / coverage (push) Successful in 6m46s
CI / benchmark-publish (push) Has been cancelled
CI / benchmark-regression (pull_request) Successful in 37m40s
fix(plan): implement end-to-end subplan execution orchestration
Replace the metadata-only subplan spawn with real child Plan domain object
creation. SubplanService.spawn() now creates full Plan instances with proper
PlanIdentity (linking parent_plan_id and root_plan_id), sets them to
PlanPhase.STRATEGIZE / ProcessingState.QUEUED, and returns them in the
SpawnResult.child_plans list for downstream lifecycle orchestration.

Key changes:
- SubplanService.spawn() now creates Plan domain objects for each spawn entry
  with complete PlanIdentity linking, inheriting the parent plan's namespace,
  actors, project links, definition_of_done, and access settings.
- SpawnResult dataclass extended with child_plans: list[Plan] field to carry
  the created child plans alongside the existing metadata and statuses.
- Parent plan's subplan_statuses list is updated with SubplanStatus entries
  tracking each child's lifecycle state.
- Fixed Pyright type errors: added missing definition_of_done, reusable,
  read_only, and server parameters to Plan and NamespacedName constructors.
- Removed @tdd_expected_fail tags from TDD test files since the bug is fixed.
- Added Behave scenarios and Robot integration tests verifying child plan
  creation, lifecycle phase/state, and parent tracking.

ISSUES CLOSED: #823
2026-03-18 17:07:07 +00:00

51 lines
2.5 KiB
Plaintext

*** Settings ***
Documentation Integration test — parallel subplan spawn orchestration.
... Verifies that SubplanService.spawn() creates real child Plan
... domain objects, inherits project links, sets correct execution
... mode, and attaches SubplanStatus entries to the parent plan
... when configured for parallel execution.
Resource ${CURDIR}/common.resource
Suite Setup Setup Test Environment
Suite Teardown Cleanup Test Environment
*** Variables ***
${HELPER} ${CURDIR}/helper_subplan_spawn_orchestration.py
*** Test Cases ***
Parallel Spawn Creates Child Plans With Correct Identity
[Documentation] Verify parallel spawn creates child Plans with parent/root IDs.
[Tags] subplan orchestration
${result}= Run Process ${PYTHON} ${HELPER} parallel-spawn-identity cwd=${WORKSPACE} timeout=30s
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} parallel-spawn-identity-ok
Parallel Spawn Child Plans Inherit Project Links
[Documentation] Verify child plans inherit project links from the parent.
[Tags] subplan orchestration
${result}= Run Process ${PYTHON} ${HELPER} parallel-spawn-project-links cwd=${WORKSPACE} timeout=30s
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} parallel-spawn-project-links-ok
Parallel Spawn Attaches Statuses To Parent
[Documentation] Verify that spawn() attaches SubplanStatus entries to the
... parent plan for lifecycle tracking.
[Tags] subplan orchestration
${result}= Run Process ${PYTHON} ${HELPER} parallel-spawn-parent-statuses cwd=${WORKSPACE} timeout=30s
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} parallel-spawn-parent-statuses-ok
Parallel Spawn Execution Mode Is Parallel
[Documentation] Verify the spawn result reports PARALLEL execution mode.
[Tags] subplan orchestration
${result}= Run Process ${PYTHON} ${HELPER} parallel-spawn-mode cwd=${WORKSPACE} timeout=30s
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} parallel-spawn-mode-ok