From 55db019d055ccc89c1ebc892dc7aa90a0c0faf94 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 11 Aug 2026 22:39:19 +0000 Subject: [PATCH] Align output filter internals with dotnet Split workflow output eligibility from tag lookup so the in-process runner mirrors the .NET OutputFilter shape more closely while preserving existing filtering behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- workflow/inproc/context.go | 4 ++-- workflow/inproc/outputfilter.go | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/workflow/inproc/context.go b/workflow/inproc/context.go index 9c1fab60..7e58ba22 100644 --- a/workflow/inproc/context.go +++ b/workflow/inproc/context.go @@ -616,10 +616,10 @@ func (proc *runnerContext) yieldOutput(ctx context.Context, executorID string, o return fmt.Errorf("executor %q cannot output object of type %s; expected one of %v", executorID, reflect.TypeOf(output), expectedTypes) } - tags, ok := proc.outputFilter.tryGetTags(executorID) - if !ok { + if !proc.outputFilter.canOutput(executorID, output) { return nil } + tags, _ := proc.outputFilter.tryGetTags(executorID) return proc.addEvent(ctx, workflow.OutputEvent{ ExecutorID: executorID, Output: output, diff --git a/workflow/inproc/outputfilter.go b/workflow/inproc/outputfilter.go index 82d33cdf..7f8110b3 100644 --- a/workflow/inproc/outputfilter.go +++ b/workflow/inproc/outputfilter.go @@ -19,6 +19,14 @@ func newOutputFilter(wf *workflow.Workflow) *outputFilter { return &outputFilter{tagsByExecutor: wf.OutputExecutors()} } +func (f *outputFilter) canOutput(executorID string, _ any) bool { + if f == nil { + return false + } + _, ok := f.tagsByExecutor[executorID] + return ok +} + func (f *outputFilter) tryGetTags(executorID string) ([]workflow.OutputTag, bool) { if f == nil { return nil, false