opentine v0.30.0: edit with provenance, save with confidence
v0.30.0 brings the edited-step fork workflow into the current website documentation, includes v0.29's save optimization, and strengthens backward-compatibility tests with fixtures from published wheels.
Change a step without rewriting the past
Edited forks shipped in v0.28. Earlier steps remain recorded, the original is only read, and the selected step becomes an edited copy.
# Choose an input path that exists in step 3
tine fork failed.tine --from-step 3 \
--set "inputs.prompt=Use an iterative approach" --save edited.tine
Repeatable --set and a JSON --edit-file can target inputs, model metadata, or tool metadata. The edited step has its old outputs, error, cost, and usage cleared. It has not been executed: a live continuation still needs an explicit harness and prompt.
Edit provenance records changed-path old/new value digests and binds the edit into fork identity. It does not preserve the old success result under new inputs. Invalid paths, missing fields, no-op edits, and bad step indexes refuse without writing; edit flags are not supported with --ref repository forks.
Faster saves without a weaker scrubber
v0.29 memoizes redaction results for exact input bytes during one save. The cache is bounded at 64 MiB and discarded afterward; the full redaction scan still applies. Tests pin output bytes for secret-bearing runs and check scaling.
The reference synthetic 6000-step v4 save went from 38.8 seconds to 19.1 seconds with byte-identical output. That is a specific benchmark, not a universal promise of a two-times speedup. Real performance depends on payloads, hardware, and storage.
Compatibility backed by published wheels
v0.30 adds golden fixture sets generated by 13 published wheels, from v0.18.1 through v0.28.0. The v0.26-and-newer sets are the first v4 artifacts and repositories in the backward-compatibility suite. These fixtures now gate builds.
Test coverage does not reverse the reader boundary: v4 data still requires opentine 0.26 or newer. Legacy data remains readable, reads do not rewrite it, and migration remains a deliberate write operation.
python -m pip install --upgrade "opentine==0.30.0"
# Preview only: bare migrate writes a sibling file
tine migrate old.tine --dry-run
Final files and repositories still default to v4. Autosave drafts and warned fallback cases can remain v2. Read the upgrade guide before changing automation or exchanging artifacts with older clients.
Published and source-only remain separate
v0.31 timestamp work on main is not in this published package. The source preview describes local-root RFC 3161 checks without presenting them as installed commands.
See edited-step fork documentation, release status, and the tagged changelog. The release is available on GitHub and PyPI.