microsoft / microsoft/amplifier

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

Open
#338 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
3.1k
Forks
261
Avg merge
3h 28m
Merged PRs (30d)
13

Description

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.

Contributor guide

No contributing guide indexed for this repository

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.

Research direction

Start in the amplifier-bundle-recipes recipe engine's step-state handling and reproduce a failed or empty-output sub-session in a multi-step recipe. Inspect the session state.json and resume behavior, including the reported session-path placeholder. Done means failed or empty-output steps are retryable and resume does not skip them or pass empty output downstream.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.