How do I use the session journal?
Table of Contents
Question
How do I record what I am working on so that after a restart I know where I left off, and so that other Claude instances can detect overlap before picking up a new story?
Answer
Each worktree has a .journal.org file in its root directory — machine-local,
gitignored, never committed. Use compass task start to clock on whenever
you pick up a task (new or existing). The journal then answers two questions:
compass journal where ("where was I?") and compass fleet ("what is every
worktree doing?").
Clocking on to a task
# New task or resuming an existing task — all three cases: ./projects/ores.compass/compass.sh task start <task-slug>
This switches to the task's branch, flips the state from BACKLOG to STARTED
if needed, and appends a timestamped entry to .journal.org. It is the
required first step in both Start work on a new story and
Work a task through to merged PR.
Restart recovery
# What was I working on? (last entry in this worktree) ./projects/ores.compass/compass.sh journal where
Then clock back on:
./projects/ores.compass/compass.sh task start <slug-from-where-output>
Viewing the session history
Newest first by default (git log semantics); -n N clips to the N
most recent entries and --chronological restores oldest-first for
reading history as a narrative:
./projects/ores.compass/compass.sh journal log -n 5 ./projects/ores.compass/compass.sh journal log --chronological
Overlap detection before picking up a story
./projects/ores.compass/compass.sh fleet
Shows every worktree's current story, task, branch, and PR. Check this before starting new work to avoid touching the same area as another environment.
Updating the journal manually
For cases not covered by compass task start (e.g. recording a PR number
or a DONE state):
./projects/ores.compass/compass.sh journal update \ --story <UUID> --task <UUID> \ --branch <branch> --state DONE --pr <N>
Entry format
#+begin_example
2026-06-02 09:34 — Clarify versioning strategy
- Task
- Create milestones infrastructure
- State
- STARTED
- Branch
- feature/clarify-versioning-strategy
- PR
- none
#+end_example
| Field | Description |
|---|---|
| Heading timestamp | ISO date + time of clock-on |
| Story link | org-roam [[id:UUID][Title]] of the parent story |
Task :: |
org-roam [[id:UUID][Title]] of the specific task |
State :: |
STARTED, DONE, BLOCKED, etc. |
Branch :: |
Current git branch |
PR :: |
GitHub PR number or none |
Conventions
- Clock on with
compass task startat the start of every task pickup, including after restarts. Do not rely on creation commands to do it. - One entry per task pickup, not per commit.
- Org-roam links are preferred — entries are navigable from Emacs and stable when titles change.
- The file grows indefinitely; do not prune it.
.journal.orgis never committed to git.
See also
- How do I know what I was working on? — the restart recovery recipe.
- Start work on a new story — full new-story runbook.
- Work a task through to merged PR — full task-to-merge runbook.
- Compass session journal — the story that implemented this feature.