Skip to content

Python: wait on partial inputs when a step also has a no-input function - #14732

Open
KVR Vishnu (VISHNU0906) wants to merge 1 commit into
microsoft:mainfrom
VISHNU0906:fix/14729-process-partial-input-with-ready-fn
Open

KVR Vishnu (VISHNU0906) wants to merge 1 commit into
microsoft:mainfrom
VISHNU0906:fix/14729-process-partial-input-with-ready-fn

Conversation

@VISHNU0906

Copy link
Copy Markdown

Motivation and Context

A process step that has both add(a, b) and a no-input reset() raises ProcessTargetFunctionNameMismatchException when a message fills only part of add. The same wiring without reset() waits correctly. Caught in #14729 by PRABHU KIRAN VANDRANKI (@VANDRANKI) (thanks again for the repro and the clear root-cause write-up).

Fixes #14729

Description

In LocalStep.handle_message and the matching StepActor.handle_message, only inspect the function the message targets. If that function still has missing inputs, log and wait. A sibling that needs no input (or only step context) is always ready and must not count as "became invocable because of this message."

Adds local-step coverage for no-input and step-context-only siblings, a control that still runs a no-input function when it is the target, a Dapr step-actor case, and an end-to-end ProcessBuilder fan-in with a relay (the issue shape).

Contribution Checklist

A message that fills only part of a targeted function should wait, even if
another function on the same step needs no input (or only step context) and
is already ready. Check missing inputs on the targeted function alone in both
the local and Dapr process runtimes.

Fixes microsoft#14729

Signed-off-by: KVR Vishnu <46535652+VISHNU0906@users.noreply.github.com>
@VISHNU0906
KVR Vishnu (VISHNU0906) requested a review from a team as a code owner November 6, 2026 23:34
Copilot AI balanced review requested due to automatic review settings November 6, 2026 23:34
@semantic-kernel-automation semantic-kernel-automation Bot added the python Pull requests for the Python Semantic Kernel label Nov 6, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues are recorded for the target-specific function readiness change.

No open issues 🎉

What changed in this PR

Fixes #14729 by making Python process steps check readiness only for the function targeted by a message. This lets partial inputs wait for completion without a no-input sibling causing a function-name mismatch.

Changes:

  • Apply target-specific readiness checks in both local and Dapr runtimes.
  • Add regression coverage for no-input and context-only siblings, plus direct invocation of a no-input function.
  • Add an end-to-end relay fan-in test matching the reported issue.
File Description
python/​tests/​unit/​processes/​local_runtime/​test_local_step.py Tests partial-input waiting and targeted no-input invocation.
python/​tests/​unit/​processes/​local_runtime/​test_local_process.py Adds an end-to-end relay fan-in regression test.
python/​tests/​unit/​processes/​dapr_runtime/​test_step_actor.py Tests partial-input waiting in the Dapr actor.
python/​semantic_kernel/​processes/​local_runtime/​local_step.py Checks only the targeted function’s missing inputs.
python/​semantic_kernel/​processes/​dapr_runtime/​actors/​step_actor.py Applies the same readiness logic to Dapr steps.

Review effort: Balanced

This branch was previously deployed

1 inactive deployment
github-app-auth — 45976a66 Deployed Nov 6, 2026 by VISHNU0906 via add_label #29613
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

python Pull requests for the Python Semantic Kernel

Projects

None yet

2 participants