Skip to content

Recipe engine records a failed step as completed with empty output, corrupting resume #338

Description

@danshapiro

Environment

  • amplifier 2026.07.13-51194ef
  • core 1.6.0
  • Linux (WSL2)

Component

amplifier-bundle-recipes / recipe engine

Problem

During a long multi-step recipe run, a step's agent sub-session died mid-turn. In one instance, the provider raised NotFoundError; in another, the model emitted a thinking-only response and the session ended with empty output. The engine recorded the step in the session's state.json as COMPLETED with empty output rather than failed.

Impact

  • operation=resume skips the step
  • Downstream steps receive an empty string for its declared output
  • The run continues silently corrupted
  • Workaround: hand-editing the recipe session's state.json (remove the phantom completed step, rewind current_step_index), then resuming
  • This is required after every such failure

Expected Behavior

A step whose sub-session errors — or returns empty output when the step declares an output — should be recorded as failed/retryable and re-run on resume, never completed.

Related Observation

Recipe session state was stored under a literal unexpanded placeholder directory with a doubled segment: ~/.amplifier/projects/{project}/recipe-sessions/<project-slug>/recipe-sessions/<session-id>/ — worth checking while in this area.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions