Skip to content

refactor(scheduler): route DynSchedulerExecutor through DynExecutor erasure path - #6223

Merged
bug-ops merged 1 commit into
mainfrom
feat/issue-6000/scheduler-executor-shadow-impl
Jul 13, 2026
Merged

refactor(scheduler): route DynSchedulerExecutor through DynExecutor erasure path#6223
bug-ops merged 1 commit into
mainfrom
feat/issue-6000/scheduler-executor-shadow-impl

Conversation

@bug-ops

@bug-ops bug-ops commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Summary

Scope was deliberately kept to DynSchedulerExecutor only. Arc<ShellExecutor> (the #5985/#5998 fix) already forwards all 13 methods correctly and was left untouched to avoid unrelated scope creep.

Closes #6000

Test plan

  • cargo +nightly fmt --check
  • cargo clippy --profile ci --workspace --all-targets --features "desktop,ide,server,chat,pdf,scheduler,testing" -- -D warnings
  • cargo nextest run --config-file .github/nextest.toml --workspace --features "desktop,ide,server,chat,pdf,scheduler" --lib --bins — 13443 passed, 35 skipped
  • RUSTFLAGS="-D warnings" RUSTDOCFLAGS="--deny rustdoc::broken_intra_doc_links" cargo doc --no-deps --workspace --features "desktop,ide,server,chat,pdf,scheduler"
  • Verified zero remaining references to DynSchedulerExecutor workspace-wide
  • New test dispatches a real list_tasks call through the erasure path and asserts on response content

…rasure path

Delete the hand-maintained Arc<SchedulerExecutor> ToolExecutor wrapper,
which forwarded only 9 of the trait's 13 methods and was structurally
identical to the Arc<ShellExecutor> anti-pattern that caused #5985. The
ACP scheduler tool executor now flows through the existing
zeph_tools::DynExecutor/ErasedToolExecutor erasure path, which forwards
all methods by construction instead of requiring manual per-method
overrides that can silently drift out of parity.

Closes #6000
@github-actions github-actions Bot added refactor Code refactoring without functional changes documentation Improvements or additions to documentation size/M Medium PR (51-200 lines) and removed refactor Code refactoring without functional changes labels Jul 13, 2026
@bug-ops
bug-ops enabled auto-merge (squash) July 13, 2026 16:19
@bug-ops
bug-ops merged commit 66ed39b into main Jul 13, 2026
43 checks passed
@bug-ops
bug-ops deleted the feat/issue-6000/scheduler-executor-shadow-impl branch July 13, 2026 16:26
bug-ops added a commit that referenced this pull request Jul 13, 2026
Removes the hand-maintained impl ToolExecutor for Arc<ShellExecutor> in
favor of the existing DynExecutor/ErasedToolExecutor adapter, mirroring
the DynSchedulerExecutor migration in #6223. Removing the wrapper exposed
a masked gap: ShellExecutor's ToolExecutor impl never overrode
execute_confirmed, silently falling back to the no-bypass trait default
for any caller reaching it through a generic/erased path. Adds the
missing override so the fix applies uniformly across all dispatch paths.

Closes #6224
bug-ops added a commit that referenced this pull request Jul 13, 2026
Removes the hand-maintained impl ToolExecutor for Arc<ShellExecutor> in
favor of the existing DynExecutor/ErasedToolExecutor adapter, mirroring
the DynSchedulerExecutor migration in #6223. Removing the wrapper exposed
a masked gap: ShellExecutor's ToolExecutor impl never overrode
execute_confirmed, silently falling back to the no-bypass trait default
for any caller reaching it through a generic/erased path. Adds the
missing override so the fix applies uniformly across all dispatch paths.

Closes #6224
bug-ops added a commit that referenced this pull request Jul 13, 2026
Removes the hand-maintained impl ToolExecutor for Arc<ShellExecutor> in
favor of the existing DynExecutor/ErasedToolExecutor adapter, mirroring
the DynSchedulerExecutor migration in #6223. Removing the wrapper exposed
a masked gap: ShellExecutor's ToolExecutor impl never overrode
execute_confirmed, silently falling back to the no-bypass trait default
for any caller reaching it through a generic/erased path. Adds the
missing override so the fix applies uniformly across all dispatch paths.

Closes #6224
bug-ops added a commit that referenced this pull request Jul 13, 2026
…th (#6230)

Removes the hand-maintained impl ToolExecutor for Arc<ShellExecutor> in
favor of the existing DynExecutor/ErasedToolExecutor adapter, mirroring
the DynSchedulerExecutor migration in #6223. Removing the wrapper exposed
a masked gap: ShellExecutor's ToolExecutor impl never overrode
execute_confirmed, silently falling back to the no-bypass trait default
for any caller reaching it through a generic/erased path. Adds the
missing override so the fix applies uniformly across all dispatch paths.

Closes #6224
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/M Medium PR (51-200 lines)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DynSchedulerExecutor is a structurally identical Arc<T>-shadow-impl footgun, currently parity-correct by luck

1 participant