EmbodiFlowDocs
Open console
Get startedDataWorkflows and algorithmsTraining and deploymentDeveloper reference
  • Workflows and algorithms

Workflows

  • How workflows work
  • Build your own workflow
  • Runs and logs

Algorithms

  • Algorithm catalog
  • Write a custom algorithm

Algorithm developer guide

  • Your first algorithm
    • Standardize
    • Check
    • Transform
    • Enrich
    • Segment
    • Curate
    • Export
  • Image algorithms
  • Use your algorithm in a workflow
  • Interface reference
  • SDK reference
  • Command line
  • MCP tools
  • Troubleshooting

© 2026 EmbodiFlow

llms.txtOpenAPI JSON
  1. Workflows and algorithms
  2. Algorithm developer guide
  3. Troubleshooting

Troubleshooting

What each algorithm and workflow error code means and what to do about it, in the same words the console uses.

When something goes wrong, EmbodiFlow tries to tell you exactly where. A problem in main.py is marked with its line and column; a problem in a workflow names the step and the field. Every error also has a code, and this page explains each one. The text below is generated from the same copy the console, the CLI and the MCP tools show, so it always matches what you see.

Beta. Custom algorithms and workflows are in the product and ready to try, but they haven't been through a full acceptance on real data yet. Expect some rough edges, and check results before you rely on them.

Reading a run

A step ends as succeeded, failed, not applicable or skipped. Only succeeded is green; not applicable and skipped steps are grey. A failed step shows <code>: <message>, with the traceback in the log.

A skipped step always says why: the condition was false, an upstream step failed, a stopping check stopped the recording, the step had no episodes, or it was a test run on a window, which saves no result.

Check results work the same way. A result is pass, warn, fail, error, not_evaluated or not_applicable, and only pass is green.

Error codes

ALGORITHM_CATEGORY_INVALID: Unknown algorithm category

Cause. The decorator or algorithm.yaml names a category that does not exist.

What to do. Use one of standardize, check, transform, enrich, segment, curate or export.

ALGORITHM_INTERFACE_CHANGED: The interface changed: save a major version

Cause. Ports, level, requires, declared features, checks or labels, or a param type changed. Workflows that use the current major version would break.

What to do. Save the proposed major version. Workflows keep using the old major version until you switch them.

ALGORITHM_MANIFEST_DRIFT: The code no longer matches the saved interface

Cause. The decorator in main.py describes a different interface from the one frozen when this version was saved, so the step did not start.

What to do. Save the algorithm again so the interface is extracted from the current code.

FEATURE_ROW_COUNT_MISMATCH: Per-frame values do not cover every frame

Cause. A per-frame feature has a different number of rows from the frames of the recording.

What to do. Write one row per frame. Use NaN or -1 for frames without a value.

FEATURE_TYPE_UNKNOWN: Unknown feature type

Cause. A feature, label or input requirement names a semantic type that is not in the registry.

What to do. Use a type from the registry, such as scalar, vector, pose.se3 or json.

EPISODES_INVALID: Episodes are not valid

Cause. An episode is empty, lies outside the recording, overlaps another episode or has an undeclared label.

What to do. Write non-overlapping ranges inside the recording and declare every label key.

EPISODES_INPUT_MISSING: No episode list from the previous step

Cause. The step that proposes episodes finished without storing an episode list, so this step has nothing to run on.

What to do. Run the whole workflow again without reusing earlier results, or check that the episode step succeeded.

SELECTION_INVALID: Curate decisions are not valid

Cause. A decision names an episode outside the source version, decides one episode twice, drops an episode without a reason or has a wrong summary.

What to do. Decide each episode of the source version at most once and give every dropped episode a reason.

CURATE_SELECTION_CONFLICT: Two curate steps decide the same thing

Cause. More than one curate step sets splits, or more than one sets task texts, so the new version would depend on their order.

What to do. Let one curate step decide splits and one decide task texts.

WORKFLOW_CONTENT_MISSING: The connection lacks what the input needs

Cause. The input requires a feature type that the connected output does not declare.

What to do. Connect an output that declares the required type, or add a step that produces it.

WORKFLOW_NO_STANDARDIZE: The workflow has no standardize step

Cause. The recording saved by a processing workflow must come from exactly one standardize step.

What to do. Add a standardize step (or uses: auto) and connect its recording towards the Output node.

WORKFLOW_EPISODES_MISMATCH: Per-episode values would attach to other episodes

Cause. An episode-level step reads episodes from a different producer than the episodes the Output node saves.

What to do. Connect the step and the Output node to the same episodes output.

WORKFLOW_PRIVACY_BARRIER: Pixels would be read before anonymization

Cause. A step or the Output node reads the recording on a path that does not pass through the anonymize step. Recordings that require privacy may be read only after it.

What to do. Connect the step to the output of the anonymize step instead.

WORKFLOW_STOPPED_BY_CHECK: Stopped by a check

Cause. A check set to stop on failure failed, so the remaining steps did not run and nothing was saved for this recording.

What to do. Open the check result to see why it failed. Fix the data or change the check to continue, then run the workflow again.

OUTPUT_ERROR: The algorithm wrote an invalid output

Cause. An output breaks its contract: a name that was not declared, a wrong shape or type, or a missing file.

What to do. Read the step message for the field that is wrong, fix the code and test it on a sample.

EXPORT_ARTIFACT_EMPTY: The export wrote no files

Cause. An export step must write at least one file. The platform packages the files into export.zip for download and training.

What to do. Write at least one file with the ArtifactWriter (out.path or out.add); an image writes under /embodiflow/output/<port>/. Test it on a sample.

EXPORT_PACKAGE_MISSING: The platform did not package the export

Cause. The export step wrote files, but no export.zip reached the platform. The platform builds it when the step ends, so its step image is out of date or failed.

What to do. Run the export again. If it fails the same way, ask the platform operator to update the flow-io image.

WORKFLOW_COMMIT_FAILED: The platform could not save the step outputs

Cause. The step finished and wrote its outputs, but the platform failed while recording them. The fault is on the platform side, not in the step or its input.

What to do. Run the workflow again. If it fails the same way, send the run ID to the platform operator.

OUTPUT_FILE_NOT_REGULAR: An output is a link, not a file

Cause. The step left a symbolic link or another entry that is not a regular file in its outputs. The platform never follows links, so nothing was saved.

What to do. Copy the file into the output folder instead of linking to it, then run the step again.

CURATE_NOTHING_KEPT: Every episode was dropped

Cause. The curate decisions drop every episode of the source version, so there is nothing to put in a new version. The step message counts each drop reason; quality: not_evaluated means some enabled checks did not run.

What to do. Loosen the curate settings so at least one episode stays, or finish the missing checks, then run the workflow again.

CURATE_SOURCE_VERSION_UNUSABLE: The source version cannot be curated

Cause. The source dataset version was redacted or has no data contract digest.

What to do. Run the curate workflow on a version that was not redacted, or create a new version first.

CURATE_TASK_CHANGE_UNSUPPORTED: Curate cannot change task texts yet

Cause. A curate step sets a task text for a kept episode, and a version keeps each episode task as frozen.

What to do. Remove the task decision from the curate step, or edit the episode task and create a new version.

CURATE_RUN_UNREADABLE: The curate run cannot be read

Cause. The run has no readable workflow snapshot or source version, or the team has no active storage.

What to do. Start the curate workflow again from the version page; contact support if it repeats.

ALGORITHM_FILE_INVALID: The algorithm does not meet the rules

Cause. The interface in main.py (or the algorithm.yaml of the image) breaks a rule. The message names the line or field.

What to do. Fix the line the message names. Decorator arguments and param defaults must be plain values, not computed ones.

ALGORITHM_GPU_UNSATISFIABLE: No GPU fits this algorithm

Cause. The algorithm asks for more GPU memory than any compute pool of this platform offers.

What to do. Ask for less GPU memory in resources, or ask your admin about a larger GPU class.

ALGORITHM_PARAM_INVALID: A parameter value does not fit

Cause. A value is not a declared parameter, has the wrong type, or is outside its limits.

What to do. Use the declared names, types and limits shown for each parameter, or omit the value to use its default.

ALGORITHM_SAMPLE_RUN_INPUT_INVALID: The sample does not fit this algorithm

Cause. The chosen input is not what the algorithm reads: a recording, an episode or a dataset version, or the window is not allowed.

What to do. Choose a recording for recording-level algorithms, an episode for episode-level ones and a dataset version for curate and export.

RECORDING_SCHEMA_NOT_READY: The recording has no processed result yet

Cause. The recording has not finished processing, so its cameras, columns and features are not known yet.

What to do. Wait for processing to finish, or choose another recording.

SAMPLE_PREVIEW_INVALID: The sample ran, but its preview is missing

Cause. The preview the run produced was too large or not valid, so it was dropped. The result of the run is unchanged.

What to do. Run the sample again on a shorter window. If it keeps happening, report it.

Next

  • Interface reference
  • Use your algorithm in a workflow
Previous

MCP tools