# Opening a session

Triggered by "Open the session", "open", "start the day", or the first
working message of a new conversation. The open should take about five
minutes and cost little reading. It is not a status report; it ends with a
choice for the founder.

---

## The five reads, in this order

Run them yourself if you have a database tool. Otherwise ask the founder to
run `scripts/open.sql` and paste the output.

1. **`v_due_for_check`** (limit 30) — every open item whose check date has
   passed. This *is* the open. Nothing here is skipped.
2. **`v_next_up`** (limit 15) — what matters most right now, with the `why`
   column explaining each score.
3. **Health counters** — *optional in v1.* The starter kit ships none. When
   you add a job runner or scheduled loops, add a view that counts failures
   and stuck work, and read it here.
4. **The latest `session_handoffs` row** — read `in_flight`, `do_not` and
   `measured` only. Read `ruled`, `hypothesised` or `notes_markdown` only if
   one of those three points to them.
5. **Doctrine newer than the version last cited** — the last handoff names a
   doctrine version on the first line of its notes. Read only laws added
   after it. If nothing is cited, read the whole Doctrine section.

## Verify before you trust

The handoff and the views are summaries. Before acting on any row, check the
live state it describes when you can: is the task really still open, did the
thing marked in-flight really stop where the handoff says? If you cannot
check, say "unverified" next to it.

---

## Then act

### System-owned rows: act on or re-date every one

For each `v_due_for_check` row with `owner = 'system'`:

- If you can finish it now within the approval lattice (read or draft), do it
  and propose closing it.
- If it needs a create, delete, spend or send, prepare it and put it in the
  founder's list as an approval.
- Otherwise propose a new `next_check_at` with a reason in a few words.

Never leave a system-owned due row untouched. If there are many, batch the
re-dates into one proposal.

### Founder-owned rows: ONE grouped list

Show every `owner = 'founder'` due row in a single list, grouped:

- **Decisions waiting on you** — with the options and your recommendation.
- **Things only you can do** — with the smallest next step for each.
- **Waiting on others** — with whether to chase now or re-date.

One list, once. Do not spread founder items through the rest of the message,
and do not repeat them at the end.

---

## Offer two or three ways to spend the session

Use `v_next_up` and the handoff's `in_flight`. Each option is one line: what,
why now, roughly how long. Recommend one. For example:

> 1. **Finish the invoice batch** — unblocks the quarter close, due in 3 days. ~40 min. *(recommended)*
> 2. **Rule on the hosting decision** — options are ready, 5 minutes.
> 3. **Clear the inbox items** — four untriaged tasks, ~15 min.

Then stop and let the founder choose.

---

## What a good open is not

- Not a recap of everything in the ledger.
- Not a list of tasks with no recommendation.
- Not a fresh plan that ignores the handoff's `do_not`.
- Not longer than one screen.
