What would
you try?

If the next change came with
a clearer way back.

Fearlessness is a core TOVIO idea: spend your attention on the work, with supported local operations you can inspect and reverse.

Follow the way back
Make room for a change of mind.
Try another approach.tovio commit --amend
See what changed.tovio explain undo
Take the operation back.tovio undo

Illustrative local workflow.
Recovery depends on supported, retained history.

A TOVIO core concept: FearlessnessThe thinking behind it

Less rehearsing
the rescue.
More trying
the idea.

Every tool has a defining emotion, set by its worst moments. Git's is fear — fear of rebase, of force-push, of lost commits, of "your branch and origin have diverged," of filter-repo.

You learn, over years, a set of defensive habits: branch before you experiment, back up before you rebase, never force-push to shared branches, copy the SHA somewhere safe first.

Git has powerful recovery tools. TOVIO’s ambition is to make the next step easier to recognize: what happened, what stayed intact, and what you can do now.

Start with a change of approach

Rethink it.

The first approach doesn’t have to be the final one.

You commit a refactor. Then you see a cleaner design. The question should be whether it’s better—not whether you’ll recognize your work afterward.

With Git
Amend and rebase can replace commits with new hashes. Git can recover earlier recorded states, but you need to recognize the right state and choose the appropriate recovery command.Git reference
With TOVIO
The snapshot changes; a stable Change ID follows the work through supported rewrites. A supported local amend or rebase also has a retained operation you can inspect and reverse.How change identity works

Rewrite identity has explicit rules. Not every input ID survives a squash.

The work is still yours.
First approachSnapshot A
Revised approachSnapshot B
Change IDchg:9fk2m1Same before. Same after.

Illustrative amend. Commit hashes identify the snapshots; the Change ID follows the work.

Work through it.

A disagreement can be a decision waiting to happen.

You and a teammate change the same setting for different reasons. Both decisions deserve to be seen. Independent work shouldn’t have to disappear while you decide.

With Git
A conflicting merge stops before the merge commit. Git retains the base and both sides in the index while you resolve and stage the result, or abort the merge.Git reference
With TOVIO
The disagreement becomes a first-class conflict object: common base, your side, their side. It stays inspectable in repository history while independent work continues. You record the resolution deliberately.How conflicts stay inspectable

Stored inputs don’t prove correct code. Supported landing paths refuse unresolved conflicts.

Nothing to guess away.
Common baseTIMEOUT = 30
Your decision60
Their decision90
One stored conflictBase + both sides preserved.

Illustrative content conflict. Independent work can continue; unresolved conflicts still block supported landing paths.

Take it back.

A routine mistake can stay routine.

You delete the experiment lane, then realize you still need it. You were on another lane, and the deletion is the latest retained local operation. Here’s the next move.

With Git
Git’s reflog records local reference moves, and commands such as reset offer recovery paths for earlier recorded states. An in-progress rebase has an abort path. The right route depends on what changed and what remains retained.Git reference
With TOVIO
Inspect the next reversal with tovio explain undo. Then tovio undo restores this deleted lane and its prior target. Redo can replay the deletion while the required history remains retained and new work hasn’t invalidated it.The complete undo and redo guide

This illustrates local lane-pointer recovery, not permanent object removal or remote rollback.

The next move is visible.
experiment
Recorded target

Lane deleted. The retained local operation records its prior target.

Lane restored to its prior target. Inspect the result before continuing.

tovio undo

Interactive illustration only. No commands run. Assumes the deletion is the latest supported local entry and its required history is retained.

A way back
you can name.

For the deleted-lane example, you ran tovio lane -d experiment from another lane. The deletion is the latest supported local entry and the required history is retained.

  1. Inspect the next reversal.

    tovio explain undo

    Read the retained local log and see what the next undo would restore. Check that it is the operation you intend to reverse.

  2. Take the operation back.

    tovio undo

    Reverse the latest supported retained local entry. In the deleted-lane example, the lane and its previous target return.

  3. Keep the decision yours.

    tovio redo

    Replay the undone entry while its history remains retained. Starting new work after undo can invalidate the redo path.

Illustrative guide; no commands execute on this page. This restores a lane pointer, not permanently removed payloads. Read the undo and redo guide

Before “what now?”
Ask “why?”

tovio explain makes a decision inspectable. It replays supported decision logic read-only and shows the comparisons, checks, and findings behind the verdict.

Inspect the reasoning. Keep the repository as it is.

What would I get back?

tovio explain undo

Inspect the local operation log, its undo/redo position, and the state the next supported undo would restore. Understand the reversal before choosing it.

What would happen if I landed this?

tovio explain merge feature --into main

Inspect the prospective land: the inputs it compares, per-file merge decisions, conflicts, and checks that can gate the operation. Preview the decision without landing the change.

Where did my change go?

tovio explain change <change-id>

Follow a Change ID through supported amend, rebase, squash, and absorb paths. See its history instead of trying to recognize the work from a new commit hash alone.

Why does this lane point here?

tovio explain sync main

Inspect ref-merge candidates and the comparison that selected the lane pointer. This explains the reference decision; it does not perform a network sync.

Command examples, not live results. Use your own lane names and replace <change-id> or <commit> with a real repository value. Explain does not perform the land, sync, or undo; a later operation evaluates its current inputs.

Six more lenses for the moments you want to understand

lanesHow did these lanes branch and rejoin?

See parallel lane progress, branch points, and joins in a multi-lane timeline.

tovio explain lanes

depsWhy is materializing this commit blocked?

Inspect dependency and materialization checks for an incoming commit.

tovio explain deps <commit>

rerereWhy didn’t the saved resolution replay?

Inspect whether a recorded resolution matches the current conflicts, and why it does or does not apply.

tovio explain rerere

dagHow do these points in history relate?

Compare ancestors, common bases, and ahead/behind relationships.

tovio explain dag feature main

semanticWhat changed beyond the lines?

Inspect extracted symbol changes and semantic landing checks. This is context for review, not a proof of correct behavior.

tovio explain semantic

pluginWhich plugins can affect this operation?

Inspect lifecycle bindings, event filters, and advisory versus enforcing modes.

tovio explain plugin

One trace.
Three ways to use it.

Get the answer at your terminal, bring the structured data into tooling, or share the explanation in a review.

Terminal

Read it while you work.

tovio explain lanes

A verdict and plain-language summary, followed by the trace and suggested next steps.

JSON

Use it in your tooling.

tovio explain lanes --format json

A structured explanation document for scripts and integrations.

HTML

Review the reasoning together.

tovio explain lanes --format html

A self-contained page with the diagram, trace, checks, and a command to reproduce the explanation.

When a decision surprises you, you can investigate it before deciding what to do next.

Explore all ten Explain lenses

And when the team
moves ahead?

The worry before a push is often about someone else’s work. Both histories deserve an explicit place in what happens next.

Git protects the remote history.

A normal branch push rejects a non-fast-forward update. Fetch and integrate the other work, then push again. Force-pushing a rewrite can replace history a teammate relies on, so the choice needs care.

Git’s push rules

TOVIO represents the divergence.

In supported sync profiles, divergent lane tips reconcile on the lane. Both become parents of a merge commit, or a commit carrying conflict objects when contents disagree.

Authorization and integrity checks still apply. Sync is not an undoable local operation, and undo cannot recall what a peer received.

The on-lane reconciliation model

The tool should
help you exhale.

Confidence is also a matter of language. A useful response names the result, says what was preserved, and gives you a next move.

A local reversalundo with `tovio undo`

An escape hatch, where the operation supports one.

Continuity through a rewritesame Change IDs

A reminder of what stayed with the work.

Permission to reconsiderRedo with: `tovio redo`

The next step, when the redo path remains available.

Short excerpts from the documented CLI examples. The intended voice is a calm, competent colleague.

Confidence comes
with clear edges.

What local recovery covers

Supported retained operations include commits, amends, rebases, lane creates and deletes, conflict resolutions, and lands with their rewrite cascade. Inspect the log before choosing a reversal.

Supported entries and targeting

What still needs a plan

Undo does not reverse sync, external service actions, expired history, or authenticated permanent removal. It cannot recall data already received by a peer or erase retained plaintext.

Keep backups. Review and test the result. Authorization, retention and protected-lane rules remain part of the workflow.

Sources for the Git comparisons

These comparisons describe documented behavior, not a claim that Git cannot recover work. Rebase can be aborted while in progress; reflogs record local reference moves; merge conflicts retain base and side versions in the index.

Git rebaseGit reflogGit resetGit mergeGit push

Try the idea.
Know your
next move.

Bring a familiar project. Make a change, inspect the history, and evaluate a supported recovery. See whether the workflow gives you more room to think.

Plan your first experiment Read the Fearlessness concept

Public downloads are not available yet. Hands-on evaluation requires authorized access.