Epic: Subplans & Parallelism #368
Notifications
Due Date
No due date set.
Blocks
Depends on
#389 Legendary: Context Intelligence & Scaling (M5)
cleveragents/cleveragents-core
#183 feat(sandbox): add checkpoint and rollback hooks
cleveragents/cleveragents-core
#184 feat(subplan): execute and merge subplans
cleveragents/cleveragents-core
#186 feat(plan): add error recovery patterns and CLI hints
cleveragents/cleveragents-core
#187 test(e2e): add M4 correction + subplan suites
cleveragents/cleveragents-core
#197 feat(service): add subplan service and spawn workflow
cleveragents/cleveragents-core
#198 feat(actor): add plan_subplan tool and decision emission
cleveragents/cleveragents-core
#199 feat(plan): add multi-project subplan support
cleveragents/cleveragents-core
#307 feat(core): add v3 lifecycle models, automation levels, subplan support, and security hardening
cleveragents/cleveragents-core
#308 Traceability: Updated E1.domain commit message to match git log entry (no history rewrite required).
cleveragents/cleveragents-core
#309 Stage E1: Subplan Model
cleveragents/cleveragents-core
#310 test(domain): add subplan model suites
cleveragents/cleveragents-core
#822 bug(plan): checkpoint rollback is simulated — does not execute real git reset
cleveragents/cleveragents-core
#823 bug(plan): subplan spawn creates metadata but does not orchestrate real child plan execution
cleveragents/cleveragents-core
#1207 feat(actors): wire LLM strategize/execute actors to subplan spawning infrastructure
cleveragents/cleveragents-core
#2061 UAT: `SubplanService.spawn()` does not inherit automation profile from parent plan to child plans
cleveragents/cleveragents-core
#2073 Bug: `SubplanService.spawn()` copies parent `definition_of_done` to child plans instead of using spawn entry goal
cleveragents/cleveragents-core
#2074 UAT: `ExecutionMode.DEPENDENCY_ORDERED` is not defined in the specification — undocumented third execution mode added to implementation
cleveragents/cleveragents-core
#2145 TDD: `NamespacedName.validate_namespace()` and `validate_name()` in `plan.py` allow names starting with digits — spec requires names to start with a letter
cleveragents/cleveragents-core
#2147 UAT: `NamespacedName.validate_namespace()` and `validate_name()` in `plan.py` allow names starting with digits — spec requires names to start with a letter
cleveragents/cleveragents-core
#2380 bug(plan): `Plan.can_revert_to()` incorrectly rejects `STRATEGIZE → STRATEGIZE` reversion — errored Strategize plans cannot be restarted
cleveragents/cleveragents-core
#2392 UAT: `PlanLifecycleService.use_action()` stores action invariants as `InvariantSource.ACTION` instead of promoting them to `InvariantSource.PLAN` — runtime sees four-tier chain instead of spec-required three-tier
cleveragents/cleveragents-core
#2454 UAT: `agents plan rollback` `changes_reverted` field is a flat list of path strings instead of spec-required `{file, action}` objects
cleveragents/cleveragents-core
#2864 UAT: `Plan.reversion_count`, `last_completed_step`, and `last_checkpoint_id` are not persisted to the database — plan resume and reversion limits fail after restart
cleveragents/cleveragents-core
#2870 UAT: `Plan.subplan_statuses` and `Plan.subplan_config` are not persisted to the database — subplan orchestration state is lost on restart
cleveragents/cleveragents-core
#3144 UAT: `agents plan rollback` JSON output format does not match spec — multiple field name mismatches and missing fields
cleveragents/cleveragents-core
#3171 UAT: `SubplanService.validate_spawn` incorrectly rejects spawning more subplans than `max_parallel` — should only limit concurrency
cleveragents/cleveragents-core
#3218 bug(checkpoint): `agents plan rollback` does not reset plan processing state to `execute/queued` after sandbox rollback
cleveragents/cleveragents-core
#3270 UAT: `SubplanExecutionService` silently swallows `MergeConflictError` — merge conflicts from parallel subplan results are never surfaced to the user
cleveragents/cleveragents-core
#3274 refactor(agents): extract _create_initial_state and _get_config helpers to eliminate duplicate invocation setup in PlanGenerationGraph and AutoDebugAgent
cleveragents/cleveragents-core
#3326 UAT: `agents plan rollback` does not discard decisions or invalidate child plans after checkpoint — only filesystem is reverted
cleveragents/cleveragents-core
#3327 TDD: UAT: `agents plan rollback` does not discard decisions or invalidate child plans after checkpoint — only filesystem is reverted
cleveragents/cleveragents-core
#3438 UAT: `system/create_checkpoint` built-in tool missing — actors cannot manually create checkpoints
cleveragents/cleveragents-core
#3439 UAT: Automatic checkpoint triggers not implemented — only pre/post execute checkpoints created, not per-tool-write or event-based
cleveragents/cleveragents-core
#3443 UAT: `agents plan rollback` confirmation prompt missing checkpoint label, creation time, and side effects count
cleveragents/cleveragents-core
#3445 UAT: `agents plan rollback` Rich output format doesn't match spec — missing panels, checkpoint label, side effects, and actor state
cleveragents/cleveragents-core
#3561 UAT: `PlanExecutor` has no subplan spawning integration — child plans are never spawned during Execute phase
cleveragents/cleveragents-core
#3563 UAT: `SkeletonCompressor` is stored but never invoked in `ContextAssembler.assemble()` — context inheritance to child plans is broken
cleveragents/cleveragents-core
#3567 bug(subplan): `SubplanService.validate_spawn` incorrectly rejects spawn requests where total entries exceed `max_parallel` — `max_parallel` is a concurrency cap, not a total spawn cap
cleveragents/cleveragents-core
#3725 BUG: [concurrency] Potential for Race Conditions in `_tell_streaming`
cleveragents/cleveragents-core
#3749 UAT: SubplanService.spawn() generates duplicate child plan names when spawning multiple subplans in rapid succession
cleveragents/cleveragents-core
#3754 UAT: Forbidden # type: ignore comments present in decomposition_service.py and decomposition_clustering.py
cleveragents/cleveragents-core
#3819 UAT: `RuntimeExecuteActor.execute()` records stub invocations instead of dispatching real tool calls based on decision content
cleveragents/cleveragents-core
#3935 UAT: `ReactiveEventBus` documented as single-threaded but used as a Singleton in multi-threaded context — race condition risk
cleveragents/cleveragents-core
#3943 UAT: `SubplanExecutionService._execute_with_timeout` creates a new `ThreadPoolExecutor` per subplan call and leaks threads on timeout
cleveragents/cleveragents-core
#3956 UAT: `SubplanService.spawn()` does not inherit `automation_profile` from parent plan — child plans execute without automation behavior context
cleveragents/cleveragents-core
#3959 UAT: `SubplanService.spawn()` does not inherit `execution_environment` and `execution_env_priority` from parent plan — child plans may run in wrong environment
cleveragents/cleveragents-core
#4001 UAT: `SubplanFailureHandler.should_retry()` silently ignores `retry_failed=True` for unknown error types — unknown errors are never retried
cleveragents/cleveragents-core
#4005 UAT: `SubplanMergeService` only supports file-content merging — spec requires resource-type-aware merge strategies (databases, APIs, etc.)
cleveragents/cleveragents-core
#4010 UAT: `SubplanExecutionService._record_attempt()` always sets `was_retried=True` — final failed attempt incorrectly reports a subsequent retry occurred
cleveragents/cleveragents-core
#4027 UAT: `ServiceRetryWiring` and `ErrorRecoveryService` are implemented but not wired into the DI container — retry policies and error recovery are never applied at runtime
cleveragents/cleveragents-core
#4030 UAT: `retry_auto_debug` decorator and `RetryContext` context manager are dead code — defined but never used in production code
cleveragents/cleveragents-core
#4032 UAT: `ErrorPatternService` (Layer 4 Predictive Error Prevention) is not wired into the DI container — predictive guidance is never injected before plan execution
cleveragents/cleveragents-core
#4036 UAT: `PlanExecutor._run_execute_with_stub()` overwrites `plan.error_details` on failure — erases structured error recovery metadata written by `ErrorRecoveryService`
cleveragents/cleveragents-core
Reference: cleveragents/cleveragents-core#368
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Background
Covers subplan model, service, execution, merge, checkpoint/rollback hooks, error recovery, and multi-project subplan support.
Expected Behavior
Subplans are modeled, created via service, executed in parallel, and merged back into parent plans. Checkpoint/rollback hooks enable safe recovery, error recovery handles failures gracefully, and multi-project support allows subplans across project boundaries.
Child Issues
Definition of Done
This Epic is complete when all child issues are closed and merged. Subplans execute and merge correctly.
New child issue tracked: #1271 — BUG-HUNT: [boundary] Off-by-one error in subplan retry logic
An off-by-one bug has been discovered in
SubplanFailureHandler.should_retry(plan.py:1258). The conditionstatus.attempt_number > config.max_retriesshould be>=, causing subplans to be retried one extra time beyondmax_retries. This child issue has been added to this Epic for tracking.freemo referenced this issue2026-04-04 21:14:30 +00:00
freemo referenced this issue2026-04-05 16:50:16 +00:00