Leave work where the next session finds it
A worktree keeps work records: the commands the engine ran, the rounds handed to an agent, and how each one ended. It is what the next session reads to take over.
The record
One worktree can hold several workplaces, each keeping its entries in order. A workplace is a named stream of work; the current one receives new entries, and list marks it with ●.
oberth workplace list
oberth workplace new api-refactor
oberth workplace show --limit 20
Selectors match in order: exact name, full id, id prefix, name prefix; several matches return ambiguous rather than picking one. --worktree defaults to the current directory and resolves to the checkout root, so different spellings of one checkout are the same record.
What gets recorded
oberth startwrites the run into the current workplace. A detached run is closed by the daemon when it records that run's exit.oberth agent streamwrites one entry per round:turn.startedopens it, andturn.completedcloses it with the outcome the provider reported.oberth workplace recordwrites what the engine cannot see: an agent's own attempts, the client's interactive shell, a native agent. Reporting the same--idagain updates the entry, so a piece of work's start and end may arrive in any order.
How an entry ends
An entry is running, completed, failed or interrupted. An entry with no observed end stays running and is never treated as success. A run stopped by oberth or by the user is interrupted, whatever signal exit code it left behind. Each workplace keeps at most 500 entries and drops the oldest beyond that.
{"id":"…","workplace":"…","seq":1,"kind":"shell","source":"engine",
"input":"npm test","status":"completed","run_id":"…","pid":1234,
"log_path":"…","exit_code":0,"started_at":"…","ended_at":"…"}