What happened
2026-09-16, base dev@74509f4021259ce431ebeb5692c522390f12a923.
Taking a conversation back is two gestures wearing one name. The rewind surface (esc esc,
/rewind) is taught well: the cut line, the dim preview, the foot that counts what goes.
What it never says is that only the conversation goes. The files a dropped turn wrote stay
written, and the one verb that can put them back (workspace_restore) is named nowhere in
the surface. A person who rewinds to take back a wrong direction meets a conversation that
forgot the work and a workspace that did not.
The manual is honest about it. internal/manual/chat/sessions-and-rewind.md:
A rewind is an edit of the conversation, not of your workspace. Nothing on disk comes
back.
No file is reverted. A file the dropped turn wrote or edited stays exactly as it was
left.
And the door out is real but invisible:
Rewind will not undo work on disk for you. In a folder furrow is watching,
workspace_restore is the separate verb that does
and in a folder nobody attached to furrow the manual's whole truth is: "undo it yourself".
So the file half of restore exists (furrow's restore points cover .env, a dev database,
an untracked file, a dependency that changed: things git never sees), but a person finds it
only by reading the manual. The rewind page already knows exactly which paths are in play:
the per-turn tally counts them (4 tool calls · 2 files, where "files counts the
distinct paths that turn's write and edit calls named"). The information needed to make
the offer is already on the page. The offer is not made.
What a person meets
- Before the cut: the foot counts turns, never files. "Everything below the pick is let
go" is about the transcript; nothing says the turns' files stay changed.
- After the cut: no door. Nothing on the page or in the command row names
workspace_restore, and nothing distinguishes a folder furrow watches from one nobody
does.
- Without furrow: there is no verb at all, and the moment teaches nothing. "Undo it
yourself" is the whole truth, delivered only as prose on a page the person is not
reading at that moment.
The ask
Keep the manual's law (a rewind edits the conversation, workspace_restore moves bytes,
never the same gesture) and join the two at the surface:
- Name the files before the cut. When the pick drops turns that named paths, the foot
counts them, e.g. ⟲ drops 2 turns · 3 files stay changed. The tally arithmetic
already exists on the rows.
- Offer the second half after the cut. A rewind that dropped file-writing turns offers
to restore exactly those files through the workspace's own restore points, as its own
explicit step, named as the different verb it is: one that moves bytes and leaves the
conversation alone.
- Say when there is nothing to offer. No furrow on the folder: the offer says
attaching is one command, instead of silence.
Why this shape
The deliberate separation stays verbatim: a rewind edits the conversation,
workspace_restore moves bytes, never the same gesture. What changes is that the join
between them stops living only in the manual. With the offer in place, "take the
conversation back and put the files back" is one visible story, which is what a person
means when they say undo, and what makes restore usable for picking earlier work back up.
Acceptance
- e2e: through the real binary: a conversation where a turn wrote two files, rewind to
before it. Before the cut the foot names 2 files stay changed; after the cut the
surface offers restoring exactly those paths.
- e2e: with a furrow-watched folder, taking the offer restores those paths from the
workspace's own restore points and says what came back; the conversation is not touched
again and no second rewind is implied.
- e2e: control, no furrow attached: the offer reads as "no restore points here,
attaching furrow is one command", never a silent nothing.
- unit: the foot's file tally counts distinct paths across the dropped turns only; a
dropped turn that only read adds nothing.
- manual:
internal/manual/chat/sessions-and-rewind.md's "What rewind does NOT undo"
gains the sentence about the offer; the never-the-same-gesture law stays verbatim.
Drafted with CodeAF · reviewed and owned by the author
What happened
2026-09-16, base
dev@74509f4021259ce431ebeb5692c522390f12a923.Taking a conversation back is two gestures wearing one name. The rewind surface (
esc esc,/rewind) is taught well: the cut line, the dim preview, the foot that counts what goes.What it never says is that only the conversation goes. The files a dropped turn wrote stay
written, and the one verb that can put them back (
workspace_restore) is named nowhere inthe surface. A person who rewinds to take back a wrong direction meets a conversation that
forgot the work and a workspace that did not.
The manual is honest about it.
internal/manual/chat/sessions-and-rewind.md:And the door out is real but invisible:
and in a folder nobody attached to furrow the manual's whole truth is: "undo it yourself".
So the file half of restore exists (furrow's restore points cover
.env, a dev database,an untracked file, a dependency that changed: things git never sees), but a person finds it
only by reading the manual. The rewind page already knows exactly which paths are in play:
the per-turn tally counts them (
4 tool calls · 2 files, where "filescounts thedistinct paths that turn's
writeandeditcalls named"). The information needed to makethe offer is already on the page. The offer is not made.
What a person meets
go" is about the transcript; nothing says the turns' files stay changed.
workspace_restore, and nothing distinguishes a folder furrow watches from one nobodydoes.
yourself" is the whole truth, delivered only as prose on a page the person is not
reading at that moment.
The ask
Keep the manual's law (a rewind edits the conversation,
workspace_restoremoves bytes,never the same gesture) and join the two at the surface:
counts them, e.g.
⟲ drops 2 turns · 3 files stay changed. The tally arithmeticalready exists on the rows.
to restore exactly those files through the workspace's own restore points, as its own
explicit step, named as the different verb it is: one that moves bytes and leaves the
conversation alone.
attaching is one command, instead of silence.
Why this shape
The deliberate separation stays verbatim: a rewind edits the conversation,
workspace_restoremoves bytes, never the same gesture. What changes is that the joinbetween them stops living only in the manual. With the offer in place, "take the
conversation back and put the files back" is one visible story, which is what a person
means when they say undo, and what makes restore usable for picking earlier work back up.
Acceptance
before it. Before the cut the foot names
2 files stay changed; after the cut thesurface offers restoring exactly those paths.
workspace's own restore points and says what came back; the conversation is not touched
again and no second rewind is implied.
attaching furrow is one command", never a silent nothing.
dropped turn that only read adds nothing.
internal/manual/chat/sessions-and-rewind.md's "What rewind does NOT undo"gains the sentence about the offer; the never-the-same-gesture law stays verbatim.
Drafted with CodeAF · reviewed and owned by the author