@mock_only @subplan @orchestration Feature: Subplan spawn → execute → merge orchestration lifecycle As a system orchestrating hierarchical plan execution I want SubplanService.spawn() to create real child Plan domain objects and wire them through the full strategize → execute → validate cycle So that subplan execution is end-to-end orchestrated Background: Given a parent plan configured for subplan spawning And valid spawn entries for the parent plan Scenario: Spawn creates child Plans with correct parent-child identity When I spawn subplans via SubplanService Then the spawn result should contain child Plan domain objects And each child Plan should have parent_plan_id set to the parent And each child Plan root_plan_id should trace to the root plan Scenario: Child plans inherit project links from parent When I spawn subplans via SubplanService Then each child plan should inherit the parent project links Scenario: Parent plan blocks when child plans are pending When I spawn subplans via SubplanService Then the parent plan should have pending subplan statuses And the parent plan subplan_statuses count should equal spawn count Scenario: Child plan failure marks parent subplan status as errored When I spawn subplans via SubplanService And a child plan fails with error "ChildExecError: timeout" Then the corresponding parent subplan status should be errored And the parent subplan status error should contain "ChildExecError" Scenario: Child plan completion updates parent subplan status When I spawn subplans via SubplanService And a child plan completes successfully with changeset summary "Added tests" Then the corresponding parent subplan status should be complete And the parent subplan status changeset summary should be "Added tests" Scenario: Parallel spawn sets execution mode on result Given a parent plan configured for parallel subplan spawning And valid spawn entries for the parent plan When I spawn subplans via SubplanService Then the spawn result execution mode should be parallel And the spawn result child plan count should match entries