freemo
8608584e99
fix(plan-executor): wire SubplanService and SubplanExecutionService into Execute phase
...
Implemented optional SubplanService and SubplanExecutionService wiring in PlanExecutor.__init__() (None = no-op).
- Added _spawn_subplans() helper:
- Queries spawn decisions via SubplanService.get_spawn_decisions() and calls SubplanService.spawn() for each decision.
- No-ops when there are no spawn decisions.
- Added _execute_subplans() helper:
- Delegates to SubplanExecutionService.execute_all() to run spawned subplans, handling both sequential and parallel groups as dictated by decisions.
- Added _apply_subplan_results_to_plan() helper:
- Updates parent plan status tracking when child subplans fail.
- Annotates error_details with failed_subplan_ids when appropriate.
- Integrated spawning and execution into existing flow:
- Called _spawn_subplans() and _execute_subplans() from both _run_execute_with_runtime() and _run_execute_with_stub() after actor completion.
- Introduced PlanExecutor properties:
- subplan_service and subplan_execution_service for external wiring and testability.
- Added tests and scenarios:
- Behave feature file with 6 scenarios covering subplan_spawn, subplan_parallel_spawn, no-op, and failure tracking.
- Robot Framework integration test suite with 6 end-to-end subplan spawning test cases.
Key design decisions
- Optional services (None = no-op) to maintain backward compatibility with existing deployments.
- Subplan spawning is a no-op when no spawn decisions exist, avoiding unnecessary work.
- Parent plan error_details is annotated with failed_subplan_ids when a child subplan fails to aid debugging and traceability.
- Both runtime and stub execute paths share the same spawning logic to ensure consistent behavior across execution modes.
ISSUES CLOSED : #3561
2026-04-05 20:46:24 +00:00
..
2026-04-03 00:29:46 +00:00
2026-03-31 16:01:58 +00:00
2026-03-31 21:47:12 +00:00
2026-04-03 00:29:46 +00:00
2026-04-04 20:38:16 +00:00
2026-04-04 20:38:16 +00:00
2026-04-04 20:38:16 +00:00
2026-04-04 20:38:16 +00:00
2026-04-04 20:38:16 +00:00
2026-04-02 23:53:13 +00:00
2026-04-01 06:16:41 +00:00
2026-04-01 06:16:41 +00:00
2026-03-31 21:47:12 +00:00
2026-03-30 23:40:36 +01:00
2026-04-03 00:23:58 +00:00
2026-04-05 18:18:08 +00:00
2026-04-05 18:18:08 +00:00
2026-03-30 19:35:23 +00:00
2026-03-31 21:47:12 +00:00
2026-04-05 18:18:08 +00:00
2026-03-31 16:01:58 +00:00
2026-03-31 16:01:58 +00:00
2026-04-02 16:53:03 +00:00
2026-04-04 20:38:16 +00:00
2026-03-30 17:06:49 -04:00
2026-03-31 21:47:12 +00:00
2026-04-04 20:38:16 +00:00
2026-04-02 17:00:53 +00:00
2026-04-02 16:59:07 +00:00
2026-04-02 06:21:49 +00:00
2026-04-01 01:46:37 +00:00
2026-03-31 21:47:12 +00:00
2026-03-30 21:39:26 +00:00
2026-03-31 11:03:20 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 19:09:04 +00:00
2026-03-31 21:47:12 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 19:09:04 +00:00
2026-03-31 21:47:12 +00:00
2026-04-01 06:16:41 +00:00
2026-03-31 21:47:12 +00:00
2026-03-31 21:47:12 +00:00
2026-03-30 21:48:01 +00:00
2026-03-30 21:48:01 +00:00
2026-03-30 21:39:26 +00:00
2026-03-30 17:06:49 -04:00
2026-03-31 21:47:12 +00:00
2026-04-02 16:59:40 +00:00
2026-04-02 08:31:27 +00:00
2026-04-02 16:58:36 +00:00
2026-03-31 11:03:20 +00:00
2026-04-04 20:38:16 +00:00
2026-03-31 21:47:12 +00:00
2026-04-04 20:38:16 +00:00
2026-03-30 23:40:36 +01:00
2026-03-30 23:40:36 +01:00
2026-03-30 23:40:36 +01:00
2026-04-04 20:38:16 +00:00
2026-03-31 21:47:12 +00:00
2026-04-01 06:16:41 +00:00
2026-04-04 20:38:16 +00:00
2026-03-31 21:47:12 +00:00
2026-04-02 17:08:52 +00:00
2026-04-03 02:01:45 +00:00
2026-04-04 20:38:16 +00:00
2026-04-02 17:07:48 +00:00
2026-04-02 16:53:03 +00:00
2026-04-02 16:59:07 +00:00
2026-03-31 16:01:58 +00:00
2026-03-31 11:31:00 +00:00
2026-03-31 21:47:12 +00:00
2026-03-31 16:01:58 +00:00
2026-03-31 21:47:12 +00:00
2026-04-02 16:58:39 +00:00
2026-03-31 21:47:12 +00:00
2026-03-31 21:47:12 +00:00
2026-03-31 21:47:12 +00:00
2026-04-05 05:46:05 +00:00
2026-04-02 16:59:14 +00:00
2026-04-02 16:58:32 +00:00
2026-03-31 21:47:12 +00:00
2026-03-31 21:47:12 +00:00
2026-04-02 16:52:33 +00:00
2026-04-05 07:06:53 +00:00
2026-03-31 21:47:12 +00:00
2026-04-04 23:48:02 +00:00
2026-04-02 16:52:33 +00:00
2026-03-31 21:47:12 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 16:53:03 +00:00
2026-04-04 20:38:16 +00:00
2026-04-04 20:38:16 +00:00
2026-03-31 21:47:12 +00:00
2026-03-31 21:47:12 +00:00
2026-03-30 22:42:15 +00:00
2026-03-30 22:42:15 +00:00
2026-03-30 23:40:36 +01:00
2026-04-02 16:58:36 +00:00
2026-03-30 19:52:51 +00:00
2026-03-31 21:47:12 +00:00
2026-04-02 17:08:38 +00:00
2026-04-02 17:07:41 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 19:09:04 +00:00
2026-03-30 17:06:49 -04:00
2026-04-04 20:38:16 +00:00
2026-04-02 19:09:04 +00:00
2026-03-31 01:49:16 +00:00
2026-04-03 20:50:17 +00:00
2026-04-02 19:09:04 +00:00
2026-03-30 17:06:49 -04:00
2026-04-05 20:46:24 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 19:09:04 +00:00
2026-04-02 19:09:04 +00:00
2026-03-30 23:40:36 +01:00
2026-03-31 21:47:12 +00:00
2026-04-01 04:27:09 +00:00
2026-04-03 13:38:33 -04:00
2026-04-04 20:38:16 +00:00
2026-03-30 23:40:36 +01:00
2026-04-04 20:38:16 +00:00
2026-04-03 00:01:48 +00:00
2026-03-30 23:40:36 +01:00
2026-04-02 21:30:05 +00:00
2026-04-04 20:38:16 +00:00
2026-04-02 16:59:48 +00:00
2026-03-31 21:47:12 +00:00
2026-03-31 21:47:12 +00:00
2026-03-31 21:47:12 +00:00
2026-03-30 23:40:36 +01:00
2026-03-30 23:40:36 +01:00
2026-03-30 23:40:36 +01:00
2026-03-31 21:47:12 +00:00
2026-04-02 08:31:27 +00:00
2026-04-02 08:31:27 +00:00
2026-04-04 20:38:16 +00:00
2026-04-01 13:02:24 +00:00
2026-04-04 20:38:16 +00:00
2026-04-04 20:38:16 +00:00
2026-03-31 21:47:12 +00:00
2026-04-02 08:31:27 +00:00
2026-04-02 08:31:27 +00:00
2026-03-31 21:47:12 +00:00
2026-04-02 16:53:03 +00:00
2026-03-31 21:47:12 +00:00
2026-04-02 17:00:53 +00:00
2026-04-04 20:38:16 +00:00
2026-04-04 23:08:32 +00:00
2026-04-04 23:08:32 +00:00
2026-03-31 21:47:12 +00:00
2026-04-05 18:19:19 +00:00
2026-04-04 20:38:16 +00:00
2026-03-31 23:57:39 +00:00
2026-04-03 19:00:22 +00:00
2026-04-02 16:50:50 +00:00
2026-04-02 16:51:15 +00:00
2026-04-02 16:51:29 +00:00
2026-04-03 03:58:45 +00:00
2026-04-03 19:03:15 +00:00
2026-04-02 19:09:04 +00:00
2026-04-01 00:40:46 +00:00
2026-03-30 17:06:49 -04:00
2026-04-04 20:38:16 +00:00
2026-04-01 04:27:09 +00:00
2026-03-31 07:42:06 +00:00
2026-04-02 23:53:13 +00:00
2026-04-02 23:59:37 +00:00
2026-04-02 17:07:26 +00:00
2026-04-02 16:53:03 +00:00
2026-04-02 16:53:03 +00:00
2026-04-02 17:07:26 +00:00
2026-04-02 17:07:26 +00:00
2026-04-02 17:07:26 +00:00
2026-04-02 17:07:26 +00:00
2026-03-31 11:31:00 +00:00
2026-04-01 21:51:14 +00:00
2026-04-05 18:08:09 +00:00
2026-04-04 20:38:16 +00:00
2026-04-05 18:08:09 +00:00
2026-04-01 21:51:14 +00:00
2026-04-03 05:56:27 +00:00
2026-04-02 17:08:13 +00:00
2026-04-04 20:38:16 +00:00
2026-04-02 20:48:33 +00:00
2026-04-01 09:23:21 +00:00
2026-04-03 05:56:27 +00:00
2026-04-02 17:09:15 +00:00
2026-03-31 21:47:12 +00:00
2026-04-01 03:30:00 +00:00
2026-04-04 20:38:16 +00:00