Coldstart has not been released. The behavior on this page runs in the development build; there is no release you can install today.
The export session closed, you shut the terminal, and tomorrow the agent knows nothing. The pointer
is what survives: a block of seven fields at the top of docs/PROGRESS.md, written by /done and
read by /coldstart.
That block is the entire handoff. Everything else a new session knows, it gets by reading the project's files. Naming that boundary plainly is more useful than pretending the gap between two sessions can be closed.
The ordinary alternative
You paste a summary into the new session. That works for a short solo task, and for one it is the cheaper option.
It stops working quietly. The summary is written from a memory of a discussion while the project keeps moving in files, so the two drift apart fast. The summary says "finish CSV export" and omits the authorization repair, the approved field list, and the fact that historical IDs were queued. Nothing announces the omission.
The pointer replaces recall with a read. It is machine-written at every close, so keeping it accurate is not a discipline anyone maintains by hand, and it is deliberately too small to hold a narrative. It separates the small address from the authored facts, which makes their absence visible — it does not reconstruct anything that was never filed.
The seven fields
This is the pointer /done left at the end of the export session — the close from the previous page,
the one the red authorization check refused — exactly as it sits at the top of docs/PROGRESS.md:
---
active_section: docs/orders
mode: build
next_action: add the authorized CSV route -- approved columns only
blockers: ["a non-manager can reach the export"]
reading: [docs/orders/plan/orders.md, app/orders/export/route.ts]
updated: 2026-08-11
resume_note: "Historical order IDs are queued, not dropped."
---Seven lines. That is the whole of what one session hands the next — seven being a count of what exists at the revision reviewed here, not a shape a released version has to keep.
docs/ordersbuildadd the authorized CSV route -- approved columns onlya non-manager can reach the exportdocs/orders/plan/orders.md, app/orders/export/route.ts2026-08-11Historical order IDs are queued, not dropped.Not on the card: the reasoning, the rejected alternatives, and anything said but never filed. The pointer is an address, not a memory.
| Field | What it carries |
|---|---|
active_section | The piece of work in progress, and so the plan the next session walks into |
mode | prep or build — which kind of session this is |
next_action | One short sentence saying what to do, not what happened |
blockers | What is unresolved; empty when nothing is |
reading | The declared set of files for the next session |
updated | When the block was written |
resume_note | One optional line of context |
Three of them do more than describe.
mode is the one field the product acts on. /prep sets it to prep before it writes
anything, and the boundary check reads it when deciding whether a write is allowed. The other six
fields describe the work; this one changes what the session is allowed to do.
blockers is written by refusal. A refused close fills it in itself, naming what is red, so a
blocked project says so at the top of the file rather than in somebody's memory.
reading is a commitment made out loud. /coldstart states the list before it opens a single
file, so a read outside the list is visible as it happens.
updated is the only way to tell a current pointer from one that has been sitting through other
people's work, and resume_note carries forward untouched until something replaces it.
Why it is rewritten whole
The pointer is never appended to. Every close replaces the whole block, and a file found carrying more than one pointer block is refused rather than merged.
Appending is exactly the failure this prevents. A pointer that accumulates has to be read carefully to work out which parts are still true, and a resume file needing careful reading is not doing its job.
The block is size-banded too. Growing past its band produces a warning that says to trim reading
or resume_note. That is what keeps the hottest file in the project from slowly turning into prose.
When to use it, and when not
Read it at the start of every session; /coldstart does this for you and states what it found.
Read it yourself when you want to know where a project stands without opening a session at all — it
is a plain block at the top of a plain file, and /orientate prints it without starting work.
Do not hand-edit it to get past a refusal. The supported path is to fix what the refusal named and
re-run /done, because a hand-edited pointer is a pointer nothing verified.
Do not use it as a project log. It holds the current address; the session records beneath it hold the history. Anything that needs to survive as a decision rather than as a position belongs in the project's durable record.
Limits
A pointer can be stale. It is written at one session's close and reflects what that session believed when it ended. A concurrent session, a manual edit, or a close that recorded an optimistic next action all produce a block that reads confidently and points somewhere the project has left.
It is an address, not memory. It narrows the route back to the evidence; it does not carry the reasoning, the rejected alternatives, or the thing you said out loud and never wrote down. If it was not written to a file, no field here brings it back.
Its accuracy depends on the close that wrote it. A close that skipped the check walk still produces a well-formed pointer, and a well-formed pointer describing unverified work is the most misleading state this method can produce.
Next
That completes one unit of work. The next section is what the pointer leads to — what a fresh session can still find, and how it knows the answer is current: memory.