fix(cli): wire SubplanExecutionService in _get_plan_executor() to enable child plan execution #11246

Merged
CoreRasurae merged 1 commit from fix/wire-subplan-execution-service into master 2026-05-19 19:28:09 +00:00
Member

Wire subplan_service from the DI container into _get_plan_executor() so PlanExecutor can spawn child plans during the Execute phase. When SubplanService is available but SubplanExecutionService is not explicitly injected, _execute_subplans() now lazily creates a SubplanExecutionService on-the-fly using the parent plan's subplan_config and the new _execute_child_plan callback.

Changes

  • _get_plan_executor(): retrieve subplan_service from container, pass to PlanExecutor constructor
  • _execute_subplans(): lazily build SubplanExecutionService when only SubplanService is wired (Forgejo #10268)
  • _execute_child_plan(): new PlanExecutor method that runs a child plan's strategize + execute phases, registered as executor_fn callback
  • BDD tests: added plan_execution_hierarchical.feature with 2 scenarios verifying lazy creation and child plan execution

Closes #10268

Wire subplan_service from the DI container into _get_plan_executor() so PlanExecutor can spawn child plans during the Execute phase. When SubplanService is available but SubplanExecutionService is not explicitly injected, _execute_subplans() now lazily creates a SubplanExecutionService on-the-fly using the parent plan's subplan_config and the new _execute_child_plan callback. ## Changes - **_get_plan_executor()**: retrieve subplan_service from container, pass to PlanExecutor constructor - **_execute_subplans()**: lazily build SubplanExecutionService when only SubplanService is wired (Forgejo #10268) - **_execute_child_plan()**: new PlanExecutor method that runs a child plan's strategize + execute phases, registered as executor_fn callback - **BDD tests**: added plan_execution_hierarchical.feature with 2 scenarios verifying lazy creation and child plan execution Closes #10268
CoreRasurae added this to the v3.5.0 milestone 2026-05-18 13:30:35 +00:00
fix(cli): wire SubplanExecutionService in _get_plan_executor() to enable child plan execution
Some checks failed
CI / push-validation (pull_request) Successful in 41s
CI / helm (pull_request) Successful in 46s
CI / build (pull_request) Successful in 1m14s
CI / lint (pull_request) Failing after 1m43s
CI / typecheck (pull_request) Successful in 1m56s
CI / quality (pull_request) Successful in 1m55s
CI / security (pull_request) Successful in 2m1s
CI / integration_tests (pull_request) Successful in 6m15s
CI / unit_tests (pull_request) Successful in 8m21s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 3s
ad186d146a
Wire subplan_service from the DI container into _get_plan_executor() so
PlanExecutor can spawn child plans during the Execute phase.  When
SubplanService is available but SubplanExecutionService is not explicitly
injected, _execute_subplans() now lazily creates a SubplanExecutionService
on-the-fly using the parent plan's subplan_config and the new
_execute_child_plan callback.

- _get_plan_executor(): retrieve subplan_service from container, pass to
  PlanExecutor constructor
- _execute_subplans(): lazily build SubplanExecutionService when only
  SubplanService is wired (Forgejo #10268)
- _execute_child_plan(): new PlanExecutor method that runs a child plan's
  strategize + execute phases, registered as executor_fn callback

ISSUES CLOSED: #10268
CoreRasurae force-pushed fix/wire-subplan-execution-service from ad186d146a
Some checks failed
CI / push-validation (pull_request) Successful in 41s
CI / helm (pull_request) Successful in 46s
CI / build (pull_request) Successful in 1m14s
CI / lint (pull_request) Failing after 1m43s
CI / typecheck (pull_request) Successful in 1m56s
CI / quality (pull_request) Successful in 1m55s
CI / security (pull_request) Successful in 2m1s
CI / integration_tests (pull_request) Successful in 6m15s
CI / unit_tests (pull_request) Successful in 8m21s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 3s
to 46590a943c
All checks were successful
CI / push-validation (pull_request) Successful in 55s
CI / helm (pull_request) Successful in 1m20s
CI / build (pull_request) Successful in 1m49s
CI / lint (pull_request) Successful in 2m12s
CI / security (pull_request) Successful in 1m49s
CI / quality (pull_request) Successful in 1m52s
CI / typecheck (pull_request) Successful in 1m11s
CI / integration_tests (pull_request) Successful in 4m14s
CI / unit_tests (pull_request) Successful in 4m43s
CI / docker (pull_request) Successful in 1m31s
CI / coverage (pull_request) Successful in 11m54s
CI / status-check (pull_request) Successful in 3s
2026-05-18 14:29:59 +00:00
Compare
hamza.khyari requested changes 2026-05-18 17:01:36 +00:00
Dismissed
hamza.khyari left a comment

Review Summary

Thank you for this PR — the intent is correct and the wiring approach is sound. However there are 6 blocking issues that must be resolved before this can be approved. The most critical are the TDD workflow violations and the broken BDD test structure.


🔴 Blocking Issues

1. TDD bug-fix workflow not followed — missing @tdd_issue_10268 tags

This is a Type/Bug fix. The mandatory TDD workflow requires:

  1. A companion Type/Testing issue created before any code was written.
  2. A tdd/mN-<name> branch with a Behave scenario tagged @tdd_issue + @tdd_issue_10268 + @tdd_expected_fail merged into master first.
  3. This fix PR then removes @tdd_expected_fail and the CI gate verifies the tag is absent and the @tdd_issue_10268 test exists.

The feature file added (plan_execution_hierarchical.feature) carries tags @mock_only @subplan @plan_executor @issue_10268 — none of the three required TDD tags are present. CI will block on the missing @tdd_issue_10268 regression guard.

Please clarify: was the TDD issue-capture test merged separately? If so, point to that commit. If not, the full TDD workflow must be executed before this PR can proceed.


2. Branch name does not follow convention

Current branch: fix/wire-subplan-execution-service

Required convention for bug fixes: bugfix/mN-<name> where N is the milestone number. Milestone v3.5.0 → N = 5. Branch should be:

bugfix/m5-wire-subplan-execution-service

The prefix fix/ is not a valid branch type in this project (feature/, bugfix/, tdd/ are the three allowed prefixes).


3. Forgejo dependency direction missing

The PR body says Closes #10268 but the Forgejo dependency link has not been set. The PR must appear under "depends on" on issue #10268, meaning on this PR you must add issue #10268 under "blocks".

  • Correct: PR → blocks → issue #10268
  • Wrong / missing: no link set

Without this link the dependency tracking is broken and the PR cannot be auto-closed against the issue on merge.


4. BDD test is structurally broken — Then step re-executes the plan inside the patch

In features/steps/plan_execution_hierarchical_steps.py (the Then step for lazy creation):

@then("SubplanExecutionService.execute_all should have been called via lazy creation")
def step_then_execute_all_called_via_lazy(context: Context) -> None:
    with patch.object(SubplanExecutionService, "execute_all") as mock_execute_all:
        ...
        context.executor.run_execute(plan_id=_PLAN_ID)  # ← re-executes inside Then
        mock_execute_all.assert_called_once()

The When step has already called run_execute. This Then step calls it again inside the patch.object context. The patch was never active during the When execution — the assert_called_once() passes trivially because it tests a second execution triggered entirely within the Then step. This test does not verify what it claims.

The correct pattern is: patch before the When step triggers execution (e.g. in a Given or fixture), then assert in Then without re-running.


5. @when step definition is missing

The feature file declares:

When I call run_execute on the parent plan

But the steps file contains only @given and @then decorators — there is no @when step defined for this sentence. Behave will report undefined step and the scenario will fail to run entirely.


6. CHANGELOG not updated

No entry has been added to CHANGELOG.md for this commit. Per project contribution rules, one changelog entry per commit is required. Please add an entry under ## [Unreleased].


🟠 Code Quality Issues (blocking merge, should be fixed in this PR)

7. Lazy SubplanExecutionService creation permanently mutates instance state

# plan_executor.py — _execute_subplans()
self._subplan_execution_service = SubplanExecutionService(
    config=config,
    executor_fn=self._execute_child_plan,
)

The service is created from the first plan's subplan_config and stored on self. If PlanExecutor is reused across multiple plan executions (which DI-wired instances typically are), subsequent plans will silently reuse the stale service built from the first plan's config. This is a state leak. Consider creating the service locally (not assigning to self) or guarding with the plan ID.

8. No recursion guard in _execute_child_plan

_strategize_result = self.run_strategize(subplan_id)
execute_result = self.run_execute(subplan_id)  # ← recurses into _execute_subplans

run_execute_execute_subplans_execute_child_planrun_execute (child). If a child plan has its own subplans, this recurses unboundedly. A misconfigured plan graph could cause a stack overflow. A depth counter or a seen-plan-IDs set should be added.

9. Strategize result is not checked before proceeding to execute

_strategize_result = self.run_strategize(subplan_id)  # result completely ignored
execute_result = self.run_execute(subplan_id)

If run_strategize completes without raising but leaves the plan in a non-executable state (failed strategy, missing decisions, etc.), run_execute proceeds regardless. Only exceptions are caught — a silent strategy failure will produce success=True with an empty changeset.

10. Inline imports inside methods violate project import rules

# Inside _execute_subplans():
from cleveragents.application.services.subplan_execution_service import SubplanExecutionService

# Inside _execute_child_plan():
from cleveragents.application.services.subplan_execution_service import SubplanExecutionOutput

Project rules require all imports at the top of the file. The only permitted exception is if TYPE_CHECKING: for type-hint-only imports. If these are runtime-circular, restructure to avoid the cycle rather than using inline imports.


🟡 Metadata Issues

11. Issue #10268 has Priority/High — should be Priority/Critical

All Type/Bug issues must carry Priority/Critical without exception. Issue #10268 currently has Priority/High. Please update the issue label.

12. Milestone v3.5.0 appears to be past

Other open PRs in the repository (e.g. #11032) are targeting v3.7.0. Please confirm whether v3.5.0 is still active or whether this PR should be re-targeted to the current milestone.


What Is Correct

  • Commit message format is valid Conventional Changelog (fix(cli): ...) with ISSUES CLOSED: #10268 in the footer.
  • The core wiring logic in plan.py (+2 lines) is correct and minimal.
  • _execute_child_plan has appropriate exception handling that returns a structured failure rather than propagating unchecked.
  • PR description is detailed and explains the motivation clearly.

Summary of Blockers

# Severity Issue
1 🔴 TDD workflow not followed — @tdd_issue_10268 tags missing
2 🔴 Branch name fix/... is not valid — must be bugfix/m5-...
3 🔴 Forgejo dependency link not set (PR must block issue #10268)
4 🔴 Then step re-executes the plan inside the patch — test is broken
5 🔴 @when step definition missing — scenario fails immediately
6 🔴 CHANGELOG not updated
7 🟠 Lazy SubplanExecutionService creation leaks state across plan executions
8 🟠 No recursion guard in _execute_child_plan
9 🟠 Strategize result not checked before proceeding to execute
10 🟠 Inline imports inside methods violate project import rules
11 🟡 Issue #10268 Priority/High should be Priority/Critical
12 🟡 Milestone v3.5.0 may be past — confirm or retarget

Please address all 🔴 and 🟠 items and re-request review.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

## Review Summary Thank you for this PR — the intent is correct and the wiring approach is sound. However there are **6 blocking issues** that must be resolved before this can be approved. The most critical are the TDD workflow violations and the broken BDD test structure. --- ## 🔴 Blocking Issues ### 1. TDD bug-fix workflow not followed — missing `@tdd_issue_10268` tags This is a `Type/Bug` fix. The mandatory TDD workflow requires: 1. A companion `Type/Testing` issue created before any code was written. 2. A `tdd/mN-<name>` branch with a Behave scenario tagged `@tdd_issue + @tdd_issue_10268 + @tdd_expected_fail` merged into master first. 3. This fix PR then removes `@tdd_expected_fail` and the CI gate verifies the tag is absent and the `@tdd_issue_10268` test exists. The feature file added (`plan_execution_hierarchical.feature`) carries tags `@mock_only @subplan @plan_executor @issue_10268` — none of the three required TDD tags are present. CI will block on the missing `@tdd_issue_10268` regression guard. Please clarify: was the TDD issue-capture test merged separately? If so, point to that commit. If not, the full TDD workflow must be executed before this PR can proceed. --- ### 2. Branch name does not follow convention Current branch: `fix/wire-subplan-execution-service` Required convention for bug fixes: `bugfix/mN-<name>` where N is the milestone number. Milestone `v3.5.0` → N = 5. Branch should be: ``` bugfix/m5-wire-subplan-execution-service ``` The prefix `fix/` is not a valid branch type in this project (`feature/`, `bugfix/`, `tdd/` are the three allowed prefixes). --- ### 3. Forgejo dependency direction missing The PR body says `Closes #10268` but the Forgejo dependency link has not been set. The PR must appear under **"depends on"** on issue #10268, meaning on *this PR* you must add issue #10268 under **"blocks"**. - ✅ Correct: PR → blocks → issue #10268 - ❌ Wrong / missing: no link set Without this link the dependency tracking is broken and the PR cannot be auto-closed against the issue on merge. --- ### 4. BDD test is structurally broken — `Then` step re-executes the plan inside the patch In `features/steps/plan_execution_hierarchical_steps.py` (the `Then` step for lazy creation): ```python @then("SubplanExecutionService.execute_all should have been called via lazy creation") def step_then_execute_all_called_via_lazy(context: Context) -> None: with patch.object(SubplanExecutionService, "execute_all") as mock_execute_all: ... context.executor.run_execute(plan_id=_PLAN_ID) # ← re-executes inside Then mock_execute_all.assert_called_once() ``` The `When` step has already called `run_execute`. This `Then` step calls it **again** inside the `patch.object` context. The patch was never active during the `When` execution — the `assert_called_once()` passes trivially because it tests a second execution triggered entirely within the `Then` step. **This test does not verify what it claims.** The correct pattern is: patch before the `When` step triggers execution (e.g. in a `Given` or fixture), then assert in `Then` without re-running. --- ### 5. `@when` step definition is missing The feature file declares: ```gherkin When I call run_execute on the parent plan ``` But the steps file contains only `@given` and `@then` decorators — there is no `@when` step defined for this sentence. Behave will report `undefined step` and the scenario will fail to run entirely. --- ### 6. CHANGELOG not updated No entry has been added to `CHANGELOG.md` for this commit. Per project contribution rules, one changelog entry per commit is required. Please add an entry under `## [Unreleased]`. --- ## 🟠 Code Quality Issues (blocking merge, should be fixed in this PR) ### 7. Lazy `SubplanExecutionService` creation permanently mutates instance state ```python # plan_executor.py — _execute_subplans() self._subplan_execution_service = SubplanExecutionService( config=config, executor_fn=self._execute_child_plan, ) ``` The service is created from the **first plan's** `subplan_config` and stored on `self`. If `PlanExecutor` is reused across multiple plan executions (which DI-wired instances typically are), subsequent plans will silently reuse the stale service built from the first plan's config. This is a state leak. Consider creating the service locally (not assigning to `self`) or guarding with the plan ID. ### 8. No recursion guard in `_execute_child_plan` ```python _strategize_result = self.run_strategize(subplan_id) execute_result = self.run_execute(subplan_id) # ← recurses into _execute_subplans ``` `run_execute` → `_execute_subplans` → `_execute_child_plan` → `run_execute` (child). If a child plan has its own subplans, this recurses unboundedly. A misconfigured plan graph could cause a stack overflow. A depth counter or a seen-plan-IDs set should be added. ### 9. Strategize result is not checked before proceeding to execute ```python _strategize_result = self.run_strategize(subplan_id) # result completely ignored execute_result = self.run_execute(subplan_id) ``` If `run_strategize` completes without raising but leaves the plan in a non-executable state (failed strategy, missing decisions, etc.), `run_execute` proceeds regardless. Only exceptions are caught — a silent strategy failure will produce `success=True` with an empty changeset. ### 10. Inline imports inside methods violate project import rules ```python # Inside _execute_subplans(): from cleveragents.application.services.subplan_execution_service import SubplanExecutionService # Inside _execute_child_plan(): from cleveragents.application.services.subplan_execution_service import SubplanExecutionOutput ``` Project rules require all imports at the top of the file. The only permitted exception is `if TYPE_CHECKING:` for type-hint-only imports. If these are runtime-circular, restructure to avoid the cycle rather than using inline imports. --- ## 🟡 Metadata Issues ### 11. Issue #10268 has `Priority/High` — should be `Priority/Critical` All `Type/Bug` issues must carry `Priority/Critical` without exception. Issue #10268 currently has `Priority/High`. Please update the issue label. ### 12. Milestone `v3.5.0` appears to be past Other open PRs in the repository (e.g. #11032) are targeting `v3.7.0`. Please confirm whether `v3.5.0` is still active or whether this PR should be re-targeted to the current milestone. --- ## ✅ What Is Correct - Commit message format is valid Conventional Changelog (`fix(cli): ...`) with `ISSUES CLOSED: #10268` in the footer. - The core wiring logic in `plan.py` (+2 lines) is correct and minimal. - `_execute_child_plan` has appropriate exception handling that returns a structured failure rather than propagating unchecked. - PR description is detailed and explains the motivation clearly. --- ## Summary of Blockers | # | Severity | Issue | |---|----------|-------| | 1 | 🔴 | TDD workflow not followed — `@tdd_issue_10268` tags missing | | 2 | 🔴 | Branch name `fix/...` is not valid — must be `bugfix/m5-...` | | 3 | 🔴 | Forgejo dependency link not set (PR must block issue #10268) | | 4 | 🔴 | `Then` step re-executes the plan inside the patch — test is broken | | 5 | 🔴 | `@when` step definition missing — scenario fails immediately | | 6 | 🔴 | CHANGELOG not updated | | 7 | 🟠 | Lazy `SubplanExecutionService` creation leaks state across plan executions | | 8 | 🟠 | No recursion guard in `_execute_child_plan` | | 9 | 🟠 | Strategize result not checked before proceeding to execute | | 10 | 🟠 | Inline imports inside methods violate project import rules | | 11 | 🟡 | Issue #10268 `Priority/High` should be `Priority/Critical` | | 12 | 🟡 | Milestone `v3.5.0` may be past — confirm or retarget | Please address all 🔴 and 🟠 items and re-request review. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
CoreRasurae force-pushed fix/wire-subplan-execution-service from 46590a943c
All checks were successful
CI / push-validation (pull_request) Successful in 55s
CI / helm (pull_request) Successful in 1m20s
CI / build (pull_request) Successful in 1m49s
CI / lint (pull_request) Successful in 2m12s
CI / security (pull_request) Successful in 1m49s
CI / quality (pull_request) Successful in 1m52s
CI / typecheck (pull_request) Successful in 1m11s
CI / integration_tests (pull_request) Successful in 4m14s
CI / unit_tests (pull_request) Successful in 4m43s
CI / docker (pull_request) Successful in 1m31s
CI / coverage (pull_request) Successful in 11m54s
CI / status-check (pull_request) Successful in 3s
to bb1f88de83
All checks were successful
CI / push-validation (pull_request) Successful in 44s
CI / helm (pull_request) Successful in 48s
CI / build (pull_request) Successful in 1m17s
CI / lint (pull_request) Successful in 1m45s
CI / quality (pull_request) Successful in 2m10s
CI / security (pull_request) Successful in 2m14s
CI / typecheck (pull_request) Successful in 2m15s
CI / integration_tests (pull_request) Successful in 4m30s
CI / unit_tests (pull_request) Successful in 7m20s
CI / docker (pull_request) Successful in 1m35s
CI / coverage (pull_request) Successful in 12m32s
CI / status-check (pull_request) Successful in 3s
2026-05-18 18:05:48 +00:00
Compare
brent.edwards left a comment

Re-Review: PR #11246 — 4 Blocking Issues Remain

Thank you for addressing hamza.khyari's feedback. Significant progress was made — 8 of 12 items are now resolved. However, 4 blocking issues remain and must be addressed before this PR can be approved.


Resolved Items

# Status What was fixed
4 Fixed Then step now patches in Given step; Then only asserts — test structure is now correct
6 Fixed CHANGELOG.md and docs/CHANGELOG.md both updated with proper entries
8 Fixed _running_plan_ids set used as recursion guard in _execute_child_plan
9 Fixed Strategize result validated (decision_root_id and decisions checked) before proceeding to execute
10 Fixed Inline imports moved to top-level in plan_executor.py
11 Fixed Issue #10268 now carries Priority/Critical label
12 Fixed Milestone v3.5.0 confirmed active
7 Partially _execute_child_plan itself does not mutate shared state

🔴 Remaining Blocking Issues

1. TDD workflow not followed — @tdd_issue_10268 tags still missing

The feature file carries tags @mock_only @subplan @plan_executor @issue_10268. The required TDD triple-tag system is NOT present: @tdd_issue, @tdd_issue_10268, and @tdd_expected_fail are all absent.

Per the project's TDD bug-fix workflow: a companion Type/Testing issue must be created, a tdd/m5- branch with a Behave scenario tagged @tdd_issue + @tdd_issue_10268 + @tdd_expected_fail must be merged into master BEFORE this fix PR, and then this PR removes @tdd_expected_fail while keeping @tdd_issue_10268 as the regression guard.

Action required: Either (a) confirm the TDD issue-capture branch was merged separately and point to that commit, or (b) execute the full TDD workflow.


2. Branch name is invalid — must use bugfix/m5- prefix

Current branch: fix/wire-subplan-execution-service

Per the branch naming rules, bug fixes must use the bugfix/mN- format where N is the milestone number. v3.5.0 → N=5.

Required: bugfix/m5-wire-subplan-execution-service

The fix/ prefix is not in the list of valid branch types (feature/, bugfix/, tdd/ are the three allowed prefixes).


3. @when step definition is missing — scenario will fail at runtime

The feature file declares: When I call run_execute on the parent plan

But features/steps/plan_execution_hierarchical_steps.py contains ONLY @given and @then decorators — there is no @when step defined. When Behave runs, it will report no step definition and the scenario will fail to execute.

Action required: Add a @when step definition, e.g.:

@when("I call run_execute on the parent plan")
def step_when_call_run_execute(context: Context) -> None:
context.executor.run_execute(context.plan.identity.plan_id)

Note: context.executor and context.plan are set up by the Given step, so the When step simply calls run_execute and the Then step asserts that execute_all was called.


4. Forgejo dependency direction — could not be independently verified

Issue #10268 shows pull_request: null in the API response. While the PR body says Closes #10268 (which creates a close-link), the specific Forgejo dependency link (PR blocks issue #10268) could not be confirmed.

Action required: Confirm the dependency is set — on the PR, issue #10268 should appear under depends on.


Summary

# Severity Issue Status
1 🔴 TDD @tdd_issue_10268 tags missing Unresolved
2 🔴 Branch name fix/... invalid — must be bugfix/m5-... Unresolved
3 🔴 @when step definition missing Unresolved
4 🔴 Forgejo dependency link direction unclear Unresolved (confirm)
5-12 BDD test structure, CHANGELOG, recursion guard, strategize validation, inline imports, priority, milestone, lazy service state Fixed

CI status: All 12 checks green


Please address items 1, 2, and 3 and re-request review. Item 4 needs only confirmation.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

## Re-Review: PR #11246 — 4 Blocking Issues Remain Thank you for addressing hamza.khyari's feedback. Significant progress was made — 8 of 12 items are now resolved. However, **4 blocking issues** remain and must be addressed before this PR can be approved. --- ## ✅ Resolved Items | # | Status | What was fixed | |---|--------|----------------| | 4 | ✅ Fixed | Then step now patches in Given step; Then only asserts — test structure is now correct | | 6 | ✅ Fixed | CHANGELOG.md and docs/CHANGELOG.md both updated with proper entries | | 8 | ✅ Fixed | _running_plan_ids set used as recursion guard in _execute_child_plan | | 9 | ✅ Fixed | Strategize result validated (decision_root_id and decisions checked) before proceeding to execute | | 10 | ✅ Fixed | Inline imports moved to top-level in plan_executor.py | | 11 | ✅ Fixed | Issue #10268 now carries Priority/Critical label | | 12 | ✅ Fixed | Milestone v3.5.0 confirmed active | | 7 | ✅ Partially | _execute_child_plan itself does not mutate shared state | --- ## 🔴 Remaining Blocking Issues ### 1. TDD workflow not followed — @tdd_issue_10268 tags still missing The feature file carries tags @mock_only @subplan @plan_executor @issue_10268. The required TDD triple-tag system is NOT present: @tdd_issue, @tdd_issue_10268, and @tdd_expected_fail are all absent. Per the project's TDD bug-fix workflow: a companion Type/Testing issue must be created, a tdd/m5-<name> branch with a Behave scenario tagged @tdd_issue + @tdd_issue_10268 + @tdd_expected_fail must be merged into master BEFORE this fix PR, and then this PR removes @tdd_expected_fail while keeping @tdd_issue_10268 as the regression guard. Action required: Either (a) confirm the TDD issue-capture branch was merged separately and point to that commit, or (b) execute the full TDD workflow. --- ### 2. Branch name is invalid — must use bugfix/m5- prefix Current branch: fix/wire-subplan-execution-service Per the branch naming rules, bug fixes must use the bugfix/mN-<name> format where N is the milestone number. v3.5.0 → N=5. Required: bugfix/m5-wire-subplan-execution-service The fix/ prefix is not in the list of valid branch types (feature/, bugfix/, tdd/ are the three allowed prefixes). --- ### 3. @when step definition is missing — scenario will fail at runtime The feature file declares: When I call run_execute on the parent plan But features/steps/plan_execution_hierarchical_steps.py contains ONLY @given and @then decorators — there is no @when step defined. When Behave runs, it will report no step definition and the scenario will fail to execute. Action required: Add a @when step definition, e.g.: @when("I call run_execute on the parent plan") def step_when_call_run_execute(context: Context) -> None: context.executor.run_execute(context.plan.identity.plan_id) Note: context.executor and context.plan are set up by the Given step, so the When step simply calls run_execute and the Then step asserts that execute_all was called. --- ### 4. Forgejo dependency direction — could not be independently verified Issue #10268 shows pull_request: null in the API response. While the PR body says Closes #10268 (which creates a close-link), the specific Forgejo dependency link (PR blocks issue #10268) could not be confirmed. Action required: Confirm the dependency is set — on the PR, issue #10268 should appear under depends on. --- ## Summary | # | Severity | Issue | Status | |---|----------|-------|--------| | 1 | 🔴 | TDD @tdd_issue_10268 tags missing | Unresolved | | 2 | 🔴 | Branch name fix/... invalid — must be bugfix/m5-... | Unresolved | | 3 | 🔴 | @when step definition missing | Unresolved | | 4 | 🔴 | Forgejo dependency link direction unclear | Unresolved (confirm) | | 5-12 | ✅ | BDD test structure, CHANGELOG, recursion guard, strategize validation, inline imports, priority, milestone, lazy service state | Fixed | CI status: All 12 checks green --- Please address items 1, 2, and 3 and re-request review. Item 4 needs only confirmation. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Member

Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

--- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Author
Member

Review Feedback Response — PR #11246

This comment addresses feedback from both @hamza.khyari (initial review) and @brent.edwards (re-review).


Addressed Issues

# Reviewer Issue What was done
4 hamza.khyari BDD Then step re-executed plan inside patch Patch moved to Given step via patch.object(…).start(); Then step now only asserts assert_called() and stops the patcher
6 hamza.khyari CHANGELOG not updated Entry added to both CHANGELOG.md and docs/CHANGELOG.md under ## [Unreleased]
7 hamza.khyari Lazy SubplanExecutionService leaks state across plans _execute_subplans() now uses a local exec_svc variable instead of storing on self._subplan_execution_service
8 hamza.khyari No recursion guard in _execute_child_plan Added _running_plan_ids: set[str] instance attribute; re-entrant subplan IDs are rejected with a structured error
9 hamza.khyari Strategize result not checked before execute _execute_child_plan now validates strategize_result.decision_root_id and strategize_result.decisions before calling run_execute
10 hamza.khyari Inline imports violate project import rules SubplanExecutionService, SubplanExecutionOutput, and SubplanExecutionResult moved from inline TYPE_CHECKING block to top-level runtime imports
11 hamza.khyari Issue #10268 Priority/High → Priority/Critical Label updated on Forgejo
1 (TDD) brent.edwards @tdd_issue_10268 tag missing Added @tdd_issue @tdd_issue_10268 tags to features/plan_execution_hierarchical.feature (without @tdd_expected_fail — this is the fix PR)

⬇️ Not Addressed — With Justification

1. Branch name (fix/… vs bugfix/m5-…)

hamza.khyari #2, brent.edwards #2Skipped.

The issue Metadata (issue #10268) explicitly states:

- **Branch**: `fix/wire-subplan-execution-service`

Per CONTRIBUTING.md: "The branch MUST match the Branch field in the issue's ## Metadata section verbatim." The current branch name matches the prescribed Metadata exactly. Renaming would contradict the Metadata, which is the authoritative source for branch naming.

2. @when step definition missing

hamza.khyari #5, brent.edwards #3Not applicable.

The step When I call run_execute on the parent plan already exists in features/steps/plan_executor_subplan_spawning_steps.py:402. Behave discovers step definitions across all .py files under features/steps/. Both feature files (plan_execution_hierarchical.feature and plan_executor_subplan_spawning.feature) share this step. All 702 feature suites pass (nox -s unit_tests — 0 failures, 0 errors). Adding a duplicate definition would be redundant.

hamza.khyari #3, brent.edwards #4Already correct.

Verified via Forgejo API: GET /repos/…/issues/10268/dependencies returns PR #11246. This means PR → blocks → issue #10268 — the correct direction. No action needed.

4. Milestone v3.5.0

hamza.khyari #12Confirmed active.

Milestone v3.5.0 is still open with 1,127 open issues and 331 closed issues. It is the current active milestone for this work.


Quality Gate Verification

All checks pass on the amended commit (bb1f88de):

  • nox -s lint — All checks passed
  • nox -s typecheck — 0 errors, 3 pre-existing warnings
  • nox -s unit_tests — 702 features passed, 15,819 scenarios passed, 0 failed
  • nox -s coverage_report — ≥ 97% threshold maintained
## Review Feedback Response — PR #11246 This comment addresses feedback from both @hamza.khyari (initial review) and @brent.edwards (re-review). --- ## ✅ Addressed Issues | # | Reviewer | Issue | What was done | |---|----------|-------|---------------| | 4 | hamza.khyari | BDD `Then` step re-executed plan inside `patch` | Patch moved to `Given` step via `patch.object(…).start()`; `Then` step now only asserts `assert_called()` and stops the patcher | | 6 | hamza.khyari | CHANGELOG not updated | Entry added to both `CHANGELOG.md` and `docs/CHANGELOG.md` under `## [Unreleased]` | | 7 | hamza.khyari | Lazy `SubplanExecutionService` leaks state across plans | `_execute_subplans()` now uses a local `exec_svc` variable instead of storing on `self._subplan_execution_service` | | 8 | hamza.khyari | No recursion guard in `_execute_child_plan` | Added `_running_plan_ids: set[str]` instance attribute; re-entrant subplan IDs are rejected with a structured error | | 9 | hamza.khyari | Strategize result not checked before execute | `_execute_child_plan` now validates `strategize_result.decision_root_id` and `strategize_result.decisions` before calling `run_execute` | | 10 | hamza.khyari | Inline imports violate project import rules | `SubplanExecutionService`, `SubplanExecutionOutput`, and `SubplanExecutionResult` moved from inline `TYPE_CHECKING` block to top-level runtime imports | | 11 | hamza.khyari | Issue #10268 Priority/High → Priority/Critical | Label updated on Forgejo | | 1 (TDD) | brent.edwards | `@tdd_issue_10268` tag missing | Added `@tdd_issue @tdd_issue_10268` tags to `features/plan_execution_hierarchical.feature` (without `@tdd_expected_fail` — this is the fix PR) | --- ## ⬇️ Not Addressed — With Justification ### 1. Branch name (`fix/…` vs `bugfix/m5-…`) **hamza.khyari #2, brent.edwards #2** — *Skipped.* The issue Metadata (issue #10268) explicitly states: ``` - **Branch**: `fix/wire-subplan-execution-service` ``` Per CONTRIBUTING.md: *"The branch MUST match the Branch field in the issue's ## Metadata section verbatim."* The current branch name matches the prescribed Metadata exactly. Renaming would contradict the Metadata, which is the authoritative source for branch naming. ### 2. `@when` step definition missing **hamza.khyari #5, brent.edwards #3** — *Not applicable.* The step `When I call run_execute on the parent plan` **already exists** in `features/steps/plan_executor_subplan_spawning_steps.py:402`. Behave discovers step definitions across all `.py` files under `features/steps/`. Both feature files (`plan_execution_hierarchical.feature` and `plan_executor_subplan_spawning.feature`) share this step. All 702 feature suites pass (`nox -s unit_tests` — 0 failures, 0 errors). Adding a duplicate definition would be redundant. ### 3. Forgejo dependency link **hamza.khyari #3, brent.edwards #4** — *Already correct.* Verified via Forgejo API: `GET /repos/…/issues/10268/dependencies` returns PR #11246. This means **PR → blocks → issue #10268** — the correct direction. No action needed. ### 4. Milestone v3.5.0 **hamza.khyari #12** — *Confirmed active.* Milestone v3.5.0 is still open with 1,127 open issues and 331 closed issues. It is the current active milestone for this work. --- ## Quality Gate Verification All checks pass on the amended commit (`bb1f88de`): - ✅ `nox -s lint` — All checks passed - ✅ `nox -s typecheck` — 0 errors, 3 pre-existing warnings - ✅ `nox -s unit_tests` — 702 features passed, 15,819 scenarios passed, 0 failed - ✅ `nox -s coverage_report` — ≥ 97% threshold maintained
CoreRasurae force-pushed fix/wire-subplan-execution-service from bb1f88de83
All checks were successful
CI / push-validation (pull_request) Successful in 44s
CI / helm (pull_request) Successful in 48s
CI / build (pull_request) Successful in 1m17s
CI / lint (pull_request) Successful in 1m45s
CI / quality (pull_request) Successful in 2m10s
CI / security (pull_request) Successful in 2m14s
CI / typecheck (pull_request) Successful in 2m15s
CI / integration_tests (pull_request) Successful in 4m30s
CI / unit_tests (pull_request) Successful in 7m20s
CI / docker (pull_request) Successful in 1m35s
CI / coverage (pull_request) Successful in 12m32s
CI / status-check (pull_request) Successful in 3s
to 47183f8c08
All checks were successful
CI / helm (pull_request) Successful in 40s
CI / push-validation (pull_request) Successful in 25s
CI / build (pull_request) Successful in 1m9s
CI / lint (pull_request) Successful in 1m21s
CI / quality (pull_request) Successful in 1m35s
CI / typecheck (pull_request) Successful in 1m45s
CI / security (pull_request) Successful in 2m6s
CI / integration_tests (pull_request) Successful in 3m35s
CI / unit_tests (pull_request) Successful in 5m19s
CI / docker (pull_request) Successful in 1m32s
CI / coverage (pull_request) Successful in 10m48s
CI / status-check (pull_request) Successful in 3s
2026-05-19 10:52:13 +00:00
Compare
hamza.khyari requested changes 2026-05-19 11:18:43 +00:00
Dismissed
hamza.khyari left a comment

Re-Review Summary (Round 2)

Strong progress — 10 of 12 previous findings are resolved. One code quality item and two metadata items remain.


Resolved from Previous Review

# Issue Verdict
1 TDD @tdd_issue_10268 tags @tdd_issue @tdd_issue_10268 added to feature file (no @tdd_expected_fail — correct for fix PR)
3 Forgejo dependency direction Confirmed correct — issue #10268 depends on PR #11246
4 Then step re-executed plan inside patch Patch moved to Given via patcher.start(); Then only asserts and stops patcher
5 @when step definition missing Confirmed exists at plan_executor_subplan_spawning_steps.py:402
6 CHANGELOG not updated Entry added to both CHANGELOG.md and docs/CHANGELOG.md
7 Lazy SubplanExecutionService state leak Now uses local exec_svc variable — self._subplan_execution_service not mutated
8 No recursion guard self._running_plan_ids: set[str] guard added with correct finally: discard()
9 Strategize result not checked decision_root_id and decisions validated before run_execute is called
10 Inline imports inside methods SubplanExecutionService, SubplanExecutionOutput, SubplanExecutionResult moved to top-level runtime imports
11 Priority/High on issue #10268 Updated to Priority/Critical
12 Milestone v3.5.0 Confirmed active (1,127 open issues)

🟠 Code Quality

1. getattr fallbacks signal uncertain contract with run_execute

In _execute_child_plan():

files=getattr(execute_result, "changeset", {}),
files_changed=getattr(execute_result, "tool_calls_count", 0),

These were present in the original submission and remain unchanged. Using getattr with silent fallback defaults rather than direct attribute access implies the return type of run_execute is not well-understood at this call site. If the result shape ever changes, this will silently produce empty/zero values with no error or warning. The return type of run_execute should be typed explicitly and accessed directly.


🟡 Metadata

2. Branch name — accepted conditionally

Author cites issue #10268 ## Metadata section which prescribes Branch: fix/wire-subplan-execution-service. Per CONTRIBUTING.md, the Metadata value takes precedence verbatim over the general bugfix/mN- convention. This justification is accepted on the condition that the issue Metadata does prescribe exactly that string.

3. Issue #10268 still in State/Verified

The issue should have been moved to State/In Review when this PR was submitted. It is currently still showing State/Verified. Please update the label.


Summary

# Severity Issue Status
1 🟠 getattr fallbacks in _execute_child_plan — uncertain run_execute contract Unresolved
2 🟡 Branch name fix/ — accepted if issue Metadata prescribes it verbatim Conditionally accepted
3 🟡 Issue #10268 still State/Verified — should be State/In Review Unresolved
4–12 (prev) All other findings from round 1 Resolved

Implementation logic is correct and well-structured. Please address item 1 and the metadata items, then re-request review.

## Re-Review Summary (Round 2) Strong progress — **10 of 12 previous findings are resolved**. One code quality item and two metadata items remain. --- ## ✅ Resolved from Previous Review | # | Issue | Verdict | |---|-------|---------| | 1 | TDD `@tdd_issue_10268` tags | ✅ `@tdd_issue @tdd_issue_10268` added to feature file (no `@tdd_expected_fail` — correct for fix PR) | | 3 | Forgejo dependency direction | ✅ Confirmed correct — issue #10268 depends on PR #11246 | | 4 | `Then` step re-executed plan inside patch | ✅ Patch moved to `Given` via `patcher.start()`; `Then` only asserts and stops patcher | | 5 | `@when` step definition missing | ✅ Confirmed exists at `plan_executor_subplan_spawning_steps.py:402` | | 6 | CHANGELOG not updated | ✅ Entry added to both `CHANGELOG.md` and `docs/CHANGELOG.md` | | 7 | Lazy `SubplanExecutionService` state leak | ✅ Now uses local `exec_svc` variable — `self._subplan_execution_service` not mutated | | 8 | No recursion guard | ✅ `self._running_plan_ids: set[str]` guard added with correct `finally: discard()` | | 9 | Strategize result not checked | ✅ `decision_root_id` and `decisions` validated before `run_execute` is called | | 10 | Inline imports inside methods | ✅ `SubplanExecutionService`, `SubplanExecutionOutput`, `SubplanExecutionResult` moved to top-level runtime imports | | 11 | `Priority/High` on issue #10268 | ✅ Updated to `Priority/Critical` | | 12 | Milestone `v3.5.0` | ✅ Confirmed active (1,127 open issues) | --- ## 🟠 Code Quality ### 1. `getattr` fallbacks signal uncertain contract with `run_execute` In `_execute_child_plan()`: ```python files=getattr(execute_result, "changeset", {}), files_changed=getattr(execute_result, "tool_calls_count", 0), ``` These were present in the original submission and remain unchanged. Using `getattr` with silent fallback defaults rather than direct attribute access implies the return type of `run_execute` is not well-understood at this call site. If the result shape ever changes, this will silently produce empty/zero values with no error or warning. The return type of `run_execute` should be typed explicitly and accessed directly. --- ## 🟡 Metadata ### 2. Branch name — accepted conditionally Author cites issue #10268 `## Metadata` section which prescribes `Branch: fix/wire-subplan-execution-service`. Per CONTRIBUTING.md, the Metadata value takes precedence verbatim over the general `bugfix/mN-` convention. This justification is accepted on the condition that the issue Metadata does prescribe exactly that string. ### 3. Issue #10268 still in `State/Verified` The issue should have been moved to `State/In Review` when this PR was submitted. It is currently still showing `State/Verified`. Please update the label. --- ## Summary | # | Severity | Issue | Status | |---|----------|-------|--------| | 1 | 🟠 | `getattr` fallbacks in `_execute_child_plan` — uncertain `run_execute` contract | Unresolved | | 2 | 🟡 | Branch name `fix/` — accepted if issue Metadata prescribes it verbatim | Conditionally accepted | | 3 | 🟡 | Issue #10268 still `State/Verified` — should be `State/In Review` | Unresolved | | 4–12 (prev) | ✅ | All other findings from round 1 | Resolved | Implementation logic is correct and well-structured. Please address item 1 and the metadata items, then re-request review.
CoreRasurae force-pushed fix/wire-subplan-execution-service from 47183f8c08
All checks were successful
CI / helm (pull_request) Successful in 40s
CI / push-validation (pull_request) Successful in 25s
CI / build (pull_request) Successful in 1m9s
CI / lint (pull_request) Successful in 1m21s
CI / quality (pull_request) Successful in 1m35s
CI / typecheck (pull_request) Successful in 1m45s
CI / security (pull_request) Successful in 2m6s
CI / integration_tests (pull_request) Successful in 3m35s
CI / unit_tests (pull_request) Successful in 5m19s
CI / docker (pull_request) Successful in 1m32s
CI / coverage (pull_request) Successful in 10m48s
CI / status-check (pull_request) Successful in 3s
to 7ec69bbbd8
Some checks failed
CI / push-validation (pull_request) Successful in 49s
CI / helm (pull_request) Successful in 51s
CI / build (pull_request) Successful in 1m13s
CI / quality (pull_request) Successful in 1m31s
CI / lint (pull_request) Successful in 1m38s
CI / typecheck (pull_request) Successful in 1m40s
CI / security (pull_request) Successful in 2m12s
CI / integration_tests (pull_request) Successful in 4m32s
CI / unit_tests (pull_request) Successful in 6m39s
CI / docker (pull_request) Successful in 1m56s
CI / coverage (pull_request) Failing after 9m59s
CI / status-check (pull_request) Failing after 2s
2026-05-19 12:24:48 +00:00
Compare
CoreRasurae force-pushed fix/wire-subplan-execution-service from 7ec69bbbd8
Some checks failed
CI / push-validation (pull_request) Successful in 49s
CI / helm (pull_request) Successful in 51s
CI / build (pull_request) Successful in 1m13s
CI / quality (pull_request) Successful in 1m31s
CI / lint (pull_request) Successful in 1m38s
CI / typecheck (pull_request) Successful in 1m40s
CI / security (pull_request) Successful in 2m12s
CI / integration_tests (pull_request) Successful in 4m32s
CI / unit_tests (pull_request) Successful in 6m39s
CI / docker (pull_request) Successful in 1m56s
CI / coverage (pull_request) Failing after 9m59s
CI / status-check (pull_request) Failing after 2s
to 6042ef74da
Some checks failed
CI / helm (pull_request) Successful in 31s
CI / build (pull_request) Successful in 56s
CI / push-validation (pull_request) Successful in 18s
CI / quality (pull_request) Successful in 1m44s
CI / security (pull_request) Successful in 2m14s
CI / unit_tests (pull_request) Has started running
CI / integration_tests (pull_request) Has started running
CI / lint (pull_request) Failing after 59s
CI / typecheck (pull_request) Successful in 1m17s
CI / coverage (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
CI / status-check (pull_request) Has been cancelled
2026-05-19 15:55:45 +00:00
Compare
CoreRasurae force-pushed fix/wire-subplan-execution-service from 6042ef74da
Some checks failed
CI / helm (pull_request) Successful in 31s
CI / build (pull_request) Successful in 56s
CI / push-validation (pull_request) Successful in 18s
CI / quality (pull_request) Successful in 1m44s
CI / security (pull_request) Successful in 2m14s
CI / unit_tests (pull_request) Has started running
CI / integration_tests (pull_request) Has started running
CI / lint (pull_request) Failing after 59s
CI / typecheck (pull_request) Successful in 1m17s
CI / coverage (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
CI / status-check (pull_request) Has been cancelled
to 89eb89cf36
Some checks failed
CI / lint (pull_request) Successful in 1m1s
CI / typecheck (pull_request) Successful in 1m18s
CI / quality (pull_request) Successful in 1m28s
CI / security (pull_request) Successful in 1m37s
CI / build (pull_request) Successful in 56s
CI / helm (pull_request) Successful in 25s
CI / integration_tests (pull_request) Successful in 6m47s
CI / push-validation (pull_request) Successful in 20s
CI / unit_tests (pull_request) Successful in 6m16s
CI / coverage (pull_request) Has started running
CI / docker (pull_request) Successful in 1m47s
CI / status-check (pull_request) Has been cancelled
2026-05-19 16:27:13 +00:00
Compare
CoreRasurae force-pushed fix/wire-subplan-execution-service from 89eb89cf36
Some checks failed
CI / lint (pull_request) Successful in 1m1s
CI / typecheck (pull_request) Successful in 1m18s
CI / quality (pull_request) Successful in 1m28s
CI / security (pull_request) Successful in 1m37s
CI / build (pull_request) Successful in 56s
CI / helm (pull_request) Successful in 25s
CI / integration_tests (pull_request) Successful in 6m47s
CI / push-validation (pull_request) Successful in 20s
CI / unit_tests (pull_request) Successful in 6m16s
CI / coverage (pull_request) Has started running
CI / docker (pull_request) Successful in 1m47s
CI / status-check (pull_request) Has been cancelled
to 6df1cc057d
Some checks failed
CI / lint (pull_request) Successful in 54s
CI / typecheck (pull_request) Successful in 1m11s
CI / quality (pull_request) Successful in 1m0s
CI / security (pull_request) Successful in 1m21s
CI / integration_tests (pull_request) Successful in 6m18s
CI / build (pull_request) Successful in 45s
CI / helm (pull_request) Successful in 29s
CI / unit_tests (pull_request) Failing after 8m56s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 20s
CI / status-check (pull_request) Failing after 7s
2026-05-19 17:09:46 +00:00
Compare
CoreRasurae force-pushed fix/wire-subplan-execution-service from 6df1cc057d
Some checks failed
CI / lint (pull_request) Successful in 54s
CI / typecheck (pull_request) Successful in 1m11s
CI / quality (pull_request) Successful in 1m0s
CI / security (pull_request) Successful in 1m21s
CI / integration_tests (pull_request) Successful in 6m18s
CI / build (pull_request) Successful in 45s
CI / helm (pull_request) Successful in 29s
CI / unit_tests (pull_request) Failing after 8m56s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 20s
CI / status-check (pull_request) Failing after 7s
to 8548644819
Some checks failed
CI / push-validation (pull_request) Successful in 1m1s
CI / helm (pull_request) Successful in 1m12s
CI / lint (pull_request) Successful in 2m22s
CI / build (pull_request) Successful in 2m17s
CI / typecheck (pull_request) Successful in 3m2s
CI / security (pull_request) Successful in 3m1s
CI / quality (pull_request) Successful in 57s
CI / integration_tests (pull_request) Successful in 5m0s
CI / unit_tests (pull_request) Successful in 6m8s
CI / docker (pull_request) Successful in 1m30s
CI / coverage (pull_request) Successful in 11m51s
CI / status-check (pull_request) Successful in 6s
CI / push-validation (push) Successful in 31s
CI / helm (push) Successful in 37s
CI / build (push) Successful in 1m7s
CI / lint (push) Successful in 1m28s
CI / quality (push) Successful in 1m30s
CI / typecheck (push) Successful in 1m44s
CI / security (push) Successful in 1m49s
CI / benchmark-regression (push) Failing after 40s
CI / e2e_tests (push) Successful in 54s
CI / integration_tests (push) Successful in 3m33s
CI / unit_tests (push) Successful in 5m21s
CI / docker (push) Successful in 1m29s
CI / coverage (push) Successful in 11m6s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Successful in 1h39m32s
2026-05-19 18:28:47 +00:00
Compare
CoreRasurae scheduled this pull request to auto merge when all checks succeed 2026-05-19 18:29:00 +00:00
CoreRasurae deleted branch fix/wire-subplan-execution-service 2026-05-19 19:28:10 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
cleveragents/cleveragents-core!11246
No description provided.