describe_interface rejects workflows with input-passthrough outputs ("output does not contain step selector")

Open
#2,898 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
68/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
python

Research direction

Start at the POST /workflows/describe_interface entry point and trace the describing_workflow_outputs context for outputs selecting $inputs. Check how inner_workflow propagates nested errors. Done means input-passthrough outputs resolve to their declared input kind, while inner_workflow exposes the inner error message and the provided reproduction succeeds.

Written by the indexing model from the issue text.

Description

Summary

POST /workflows/describe_interface throws WorkflowDefinitionError for any workflow whose outputs include a selector pointing at an input ($inputs.<name>) — a construct the execution engine runs fine and the workflow editor lets users build. The error context is describing_workflow_outputs.

Minimal repro (hosted serverless, engine 1.5.1 — reproduces on both roboflow.one and roboflow.com deployments)

{
  "version": "1.0",
  "inputs": [{ "type": "WorkflowImage", "name": "image" }],
  "steps": [{ "type": "roboflow_core/image_blur@v1", "name": "blur", "image": "$inputs.image", "blur_type": "gaussian", "kernel_size": 21 }],
  "outputs": [
    { "type": "JsonField", "name": "input_image", "coordinates_system": "own", "selector": "$inputs.image" },
    { "type": "JsonField", "name": "blurred", "coordinates_system": "own", "selector": "$steps.blur.image" }
  ]
}

Response (400):

{"message":"Workflow definition invalid - output does not contain step selector.","error_type":"WorkflowDefinitionError","context":"describing_workflow_outputs","inner_error_type":null,"inner_error_message":"None"}

Removing the input_image output makes the same spec describe successfully. The same workflow executes correctly (the passthrough output appears in run results), so this is specific to interface description, not compilation/execution.

Compounding: surfaces through inner_workflow as "step misconfigured"

When such a workflow is referenced by roboflow_core/inner_workflow@v1, describing the outer workflow fails with Workflow definition invalid - step \` misconfigured. See details in inner error.` — the inner error being this same rejection of the nested workflow's input-passthrough output. The detail is not surfaced in the response, which made this expensive to diagnose.

Impact

Any product surface that relies on describe_interface to enumerate output kinds silently mis-handles legal workflows containing input-passthrough outputs. Hit in production by a video-processing customer whose workflows (editor-built) include input_image ← $inputs.image; the platform now falls back to static spec analysis (roboflow/roboflow#14841, #14844), but describe gives richer answers and should work for legal specs.

Suggested fix

describing_workflow_outputs should resolve input-selecting outputs to the declared input's kind (e.g. WorkflowImage → image) instead of requiring a step selector; and inner_workflow compile errors should propagate inner_error_message.

Dominant language
Python
Stars
2.5k
Forks
340
Avg merge
2d 11h
Merged PRs (30d)
92

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from roboflow/inference

All issues in roboflow/inference

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.