---
description: Turn the away plan into runnable stream briefs and commands, then stop
---

You are the **finalising session** for the away plan. Rian is away. Your job is to turn
`.logs/planning/streams/AWAY-PLAN.md` into runnable streams and then stop. You do not build
features, you do not run a collection, you do not deploy, and you do not start any stream.

Run `pwd` first; it must be `/srv/apps/dutyfreeprofessor`, or stop and say so.

If `git log --oneline -5` does not show a commit prefixed `Away:`, merge the branch that carries the
plan first: `git merge claude/stream-ideas-parallel-57686d`. It fast-forwards.

Then read, in this order and nothing more to start: `.logs/planning/streams/OVERNIGHT-RULES.md`
(binding), `.logs/planning/streams/AWAY-PLAN.md` in full (**section 1 is your instruction**),
`.logs/planning/streams/KICKOFFS.md`, `agents.md`, `brief.md`, build plan
`.logs/planning/build-plan-2026-09.md` sections 2, 4, 7, 8, 9 and 10, then
`python3 main/scripts/items.py list` and the top three entries of `.logs/handoff.md`.

Work section 1's nine steps in order. The shape to copy for every brief you write is
`.logs/planning/streams/M-merging.md`, and for every command `.claude/commands/stream-m.md`; they
are the newest and the standard. Delegate mechanical drafting to a cheaper model and read the
result yourself, but **never delegate a task list, an Owns column, or a decision**.

Three things that are easy to get wrong, and cost the most:

1. **Never resolve one of rian's decides.** Only he answers a decide. The plan's section 3 calls
   are assumptions a brief proceeds under, written into that brief in its own words with what gets
   redone if he chooses otherwise. Two new decide items get added with `--assumption` set: opening
   hours, and the lazy chunks.
2. **Prove the wave-one lanes cannot collide** before you finish, by printing the three Owns columns
   and showing no path appears in two of them. A collision found later, with nobody watching, is
   the expensive failure this step exists to prevent.
3. **Register task ids through `main/scripts/plan-set.py`**, never by editing `import/progress.json`
   by hand. A merge conflict was committed into the running list once already and nothing noticed.

## You are done when all of these are true

1. Every lane in the plan's section 4 marked "to write" or "tasks to add" has its brief at
   `.logs/planning/streams/<X>.md` and, where the table names one, its command at
   `.claude/commands/stream-<x>.md`.
2. The R2 brief carries the three consolidation tasks the plan's section 4 describes, and the
   staging-refresh question about Adam's comments is written into it as a task, not a note.
3. Every task id named in section 4 exists in `import/progress.json` with a status, set through
   `plan-set.py`.
4. The running list carries the two new decide items with their assumptions, and one `do` item for
   rian to review the decisions taken while he was away, linking the plan file.
5. The three wave-one Owns columns are disjoint, and your handoff says so with the evidence.
6. `main/check.sh` prints "checks passed", the work is committed with the prefix `Away:`, a handoff
   entry of at most 25 lines is at the top of `.logs/handoff.md`, and `/checkpoint` has been run.
7. The paste block from the plan's section 5 is printed as your last output, filled in.

Then **stop**. Starting a stream is rian's, not yours.

## The goal line (paste this after the first turn ends)

```
/goal The away plan is finalised: every lane in .logs/planning/streams/AWAY-PLAN.md section 4 marked "to write" or "tasks to add" now has its brief in .logs/planning/streams/ and its command in .claude/commands/; the R2 brief carries the three consolidation tasks and the staging-refresh task; every task id in section 4 exists in import/progress.json set through plan-set.py; the running list carries the two new decide items with assumptions plus a do item for rian; the three wave-one Owns columns have been shown to be disjoint; main/check.sh printed "checks passed"; the work is committed with the prefix "Away:"; a handoff entry is at the top of .logs/handoff.md and /checkpoint has been run; and no stream has been started. Or stop after 60 turns.
```
