# The nightly playbook

> The phases the Dreamer runs, in order, per workspace.

One run works a single workspace through a fixed sequence of phases. The
Dreamer takes the workspace's [lease](/docs/dreamer), runs the phases scoped to
it, then releases. Here's the shape of a run, at a readable altitude.

## The phases

- **0 · Open.** Take the lease, read the watermark, and gather the entries
  captured since the last clean run.
- **1 · Consolidate.** Cluster the new entries by entity and topic, and upsert a
  page for each. Every fact written into a page **cites** the entry it came
  from, with a verbatim quote. Unfiled entries get routed to a project where one
  clearly fits; recurring tags get promoted to their own pages.
- **2 · Cross-link.** Draw `relates` and `part_of` edges between pages that
  belong together.
- **2.5 · Personal cross-link.** On a personal run only, weave private,
  one-way `relates` edges from a personal page to a related page in a shared
  space. Only you ever see these.
- **3 · Contradictions.** Where two pages conflict, open a `contradicts`
  proposal for you to resolve — it never picks a winner on its own.
- **4 · Merge duplicates.** Where two pages are the same thing, propose a merge.
  On your approval, the survivor inherits the loser's projects and tags, and the
  loser is archived (never deleted).
- **5 · Lint.** Tidy up: mark long-unused pages stale, fold duplicate tags,
  normalize drifted labels, and dismiss any structurally broken edges.
- **6 · Close.** Write a short run record, release the lease, and advance the
  watermark — but only if the run was clean.

## What you see afterward

Each run appends a row to the run log, which the dashboard renders as
**"what changed last night"** — pages created and updated, links drawn, and
anything surfaced for your review. See [Dashboard overview](/docs/dashboard).

## Scheduling it

The Dreamer runs from your own agent. Point a scheduled task — a Claude Code
schedule, a cron job, anything that can launch your agent — at a simple
instruction:

> Run the OceanDB dreamer: read the dreamer playbook and execute the phases,
> per workspace, against my OceanDB MCP.

Nightly is the natural cadence. Because every run is idempotent, an extra run
never hurts.

For the one-command install and a ready cron line, see
[Run the Dreamer](/docs/run-the-dreamer).
