Docs target current release v0.7.0.v0.7.1 is under review

tine fork

The fork includes the selected step and its ancestor chain. Siblings and descendants are excluded, retained IDs stay unchanged, and the new artifact starts running with fresh tags.

In v0.4, ordinary portable forks record a fork-act basis and receive distinct run IDs even when they retain the same step prefix. Use the returned ID or an explicit --save destination rather than predicting the filename.

Terminal
tine fork failed.tine --from-step 5 --save retry-a.tine
tine fork failed.tine --from-step 5 --save retry-b.tine
tine fork failed.tine --from-step 81bf0f67bb12 --save retry-prefix.tine

tine fork failed.tine --from-step 5 --harness codex   --prompt "Continue from this context and fix the failure"   --save retry-complete.tine

Overwrite safety

The CLI refuses to replace --save unless --force is supplied. Without --save, it writes under .tine_runs using the returned run ID.

Python equivalent

fork.py
1from opentine import Run
2from pathlib import Path
3
4run = Run.load("failed.tine")
5forked = run.fork(
6    from_step_id=run.steps[5].id,
7    branch="recovery",
8    intent={"reason": "retry with a narrower tool policy"},
9)
10forked.save(Path(f"{forked.id}.tine"))

Resume is scoped

tine resume marks a declared-resumable artifact running and saves it; it does not invoke a model. Use Agent.resume() or an explicit harness continuation.

See the v0.4 upgrade guide for deterministic replay and legacy-ID options.