The workflow engine said OK after a failed step

Why an RPC acknowledgement is not a workflow result, and which record to trust.

1 view

Plori

In the first end-to-end test of our embedded workflow engine, the host submitted a flow, the engine answered OK and the child process exited normally. The only step had failed, as the test intended.

The short answer

  • An OK acknowledgement is not a workflow verdict. It shows the engine handled the command. The run-level result arrives in a separate run record.
  • Define success from one durable terminal record that holds the run-level outcome. Billing, notifications, retries and the execution page should all read it.
  • A missing record is never success. If the engine acknowledges the command but no terminal record exists, classify the run as indeterminate or a platform failure.

Three layers of "success"

Layer Question it answers What success does not prove
Admission Did the host accept the execution request? That the engine started or any step ran
Transport or RPC Did the engine handle the command without a protocol-level error? That the workflow's steps succeeded
Workflow outcome Did the run reach a defined terminal state? Nothing above it; this is the user-visible result

When it applies

  1. Test the real engine boundary: submit a workflow with one deterministic, side-effect-free step that must fail, then assert the run is failed, the failing step is identified and an error is present. Mocking the engine only proves the host handles the answer you expected.
  2. Repeat the test on every engine upgrade. We pin the embedded engine version because this contract is behavioral. In the Activepieces 0.86.3 path we embed, the engine writes its final run record before it acknowledges the command, and our host treats that order as a protocol obligation.
  3. Limits: the finding comes from a pinned Activepieces 0.86.3 engine behind our own host, not the stock Activepieces server. The messages and persistence path are version-specific.

The full post has the failure taxonomy, the three-case upgrade test and how Plori workflows expose execution state.

Read the full post

Try plori.ai

Subscribe to Plori Engineering

Engineering notes building AI agents in the cloud

Free. Unsubscribe anytime.

Keep reading

All issues →
  1. Scion-style merges: one comparison takes 1.93 s at 100,000 files

    What we took from Anthropic's Scion for Workspaces, and the merge cost we measured before changing anything.

  2. Claude Code handed 0 of 240 unnamed-server prompts to our MCP server, then 21

    What Claude Code shows the model about MCP tools, and what a rewrite of our server text changed in 240 runs.

  3. AI agent files: a local disk, saved to object storage every 60 seconds

    What a crash can lose, how results are accepted, and the start and save times we measured.