replay-is-positional

Status: IN

Replay matching is positional — action N in the current run matches action N in the replay log; successful replayed actions are skipped with cached output.

Source: entries/2026/05/11/api-automation-context.md

Example

async with automation(
    recording_file="run.log",      # record this run
    replay_file="run.log",         # replay from previous
) as ftl:
    await ftl.file(path="/tmp/a", state="touch")  # action 0: skipped if cached
    await ftl.copy(src="app.py", dest="/opt/app/")  # action 1: skipped if cached
    await ftl.service(name="app", state="restarted")  # action 2: runs if new

JSON