OMP Workbook

Read the source. Follow the evidence.

The continuity ledger

Before choosing an operation, name the state you want to change.

“Reset my session” is too vague. It might mean stopping a response, dropping conversation context, starting a different identity, discarding provider-facing handles, or deleting local history. Those are different requests.

The seven boundaries

LayerWhat it meansWhat it is not
Live and model contextThe messages currently held by the agent, plus the transformations used to prepare model context.Every entry ever retained in the journal, or an exact captured HTTP request.
Durable journalThe saved JSONL conversation record, including messages and metadata. It can retain older and alternative paths.A directory snapshot or a complete record of every unfinished streaming token.
Persistent session identityThe identity in the session header, exposed by SessionManager.getSessionId().Necessarily the same value as a provider-facing session ID.
Provider-facing stateRequest identity, local transport/session handles, and possibly a separate prompt-cache key.A guarantee about remote retention, remote deletion, or cache behavior.
Cwd and project scopeThe active working directory, recorded header cwd, and any additional workspace roots. These can differ during fallback or failure.A copy of the project at the time the conversation began.
Workspace filesThe files that exist now in the project.Files restored merely because an old conversation was reopened.
Artifacts and outputsSession-adjacent artifacts and nested journals, generated HTML, temporary dump sidecars, and copied text.One automatically synchronized, automatically deleted privacy boundary.

The rendered transcript is another view of these layers. It may collapse older context or hide some content. A shorter display does not establish a shorter journal.

A journal’s entries have their own IDs and parent relationships. The active leaf selects a conversation path for context rebuilding. You do not need to learn the entire tree implementation here; you do need to remember that all stored entries and the active conversation path are not the same thing.

Milestone: Identify yesterday before opening anything

Need. Maya wants yesterday’s Lantern Board discussion.

Obstacle. Yesterday’s conversation says “Ready for pickup,” but today’s workspace file says “Packed and waiting.” Both statements can be present without OMP having lost anything.

Read the public fixtures first:

Terminal shell — read-only inspection, from extracted examples/:

The continuity ledger · source excerpt 1; read surrounding instructions
jq -s 'map(select(.type == "session") | {id, cwd, title})' return-desk/yesterday.jsonl
jq -s 'map(select(.type == "message" and .message.role == "user") | .message.content)' return-desk/yesterday.jsonl
cat return-desk/today.txt

Structured example output — derived from the public header, not a new terminal capture:

The continuity ledger · source excerpt 2; read surrounding instructions
[
  {
    "id": "11111111-1111-4111-8111-111111111111",
    "cwd": "/fictional/lantern-board",
    "title": "Lantern Board: yesterday's labels"
  }
]

The fixture’s user message is:

For our fictional Lantern Board, use the label Ready for pickup. We will revisit it tomorrow.

The workspace file identifies its current label as:

Current label: Packed and waiting

What changes? These inspection commands change neither the fixture nor an OMP session.

What stays separate? The full session identity, the header’s recorded cwd, the conversation text, and today’s file contents are four different observations. The short entry ID of a message is not the persistent session identity.

Recorded check. identity-journal-cwd-workspace reopened a real SessionManager journal and retained its identity, location, entries, and cwd while the fictional workspace bytes remained unchanged.

Failure and recovery. If jq cannot read or parse the fixture, fix the working directory or restore a clean downloaded copy. Do not substitute a personal journal. The /fictional/lantern-board path and fictional-offline-model label are fixture data, not a project or provider to configure.

Self-check. After resuming yesterday, which label should today.txt contain?

Answer: “Packed and waiting.” Resuming history does not reverse the file change represented by the fixture.

A path is not proof of persistence

The current manager can allocate a session ID and transcript path before materializing the file. New-session persistence is lazy until assistant output or another explicit persistence reason makes the file necessary.

That means:

  • An assigned filename does not prove that a resumable file exists.
  • An empty new conversation can still have model or thinking metadata in memory.
  • A session created with --no-session normally has no journal file, but a dump can still create a temporary sidecar.
  • Completed entries and in-flight streaming text have different durability boundaries.

The supplied SessionManager comments describe completed-entry writes reaching the operating system without fsync: software-crash durability is not a power-loss backup guarantee.

Source anchors: packages/coding-agent/src/session/session-manager.ts — SessionManager, getSessionId, getSessionFile, isSessionOnDisk, buildSessionContext; packages/coding-agent/src/session/session-context.ts — buildSessionContext; packages/coding-agent/src/session/session-entries.ts — SessionHeader, ResetBoundaryEntry.

Sessions, resets, and reviewable history · Source chapter: continuity/the-continuity-ledger. Original evidence remains scoped to its recorded snapshot.

Read this chapter as Markdown

Your lesson ticks

A self-reported reading checklist, not proof of real OMP behavior. Only these ticks are saved in this browser. Reading a milestone does not resume, fork, reset or export a session.

Chapters I have worked through
Start here 1
Sessions, resets, and reviewable history 19
Memory and reusable knowledge 14
Tangent work and live control 17
Tool permissions and approvals 15
Extensions inside those boundaries 23
Connections and next steps 8
0 of 97 checked

Checklist saving needs JavaScript and available browser storage.