Not installable yet

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.

close/done writes the blockseven fields, replaced whole
gapThe terminal closesthe conversation is gone
start/coldstart reads itan address, not recall
commitThe reading list is stated alouda read outside it is visible
workThe next action resumesdetail comes from the owning files
What crosses the gap between two sessions: a written address, not a memory of the discussion. Everything else the next session knows, it gets by reading the project's files.

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:

text
---
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/PROGRESS.mdthe pointer block
active_sectiondocs/orders
The plan the next session walks into.
modebuild
The one field the product acts on: the boundary check reads it before allowing a write.
next_actionadd the authorized CSV route -- approved columns only
What to do, not what happened.
blockersa non-manager can reach the export
Written by refusal. The close that wrote this pointer was refused, and it filled this field in itself.
readingdocs/orders/plan/orders.md, app/orders/export/route.ts
Stated aloud at start, so a read outside the list is visible as it happens.
updated2026-08-11
resume_noteHistorical 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.

The pointer as one object: seven named fields and the values one close left in them. Everything not in a field is not carried across the gap at all.
FieldWhat it carries
active_sectionThe piece of work in progress, and so the plan the next session walks into
modeprep or build — which kind of session this is
next_actionOne short sentence saying what to do, not what happened
blockersWhat is unresolved; empty when nothing is
readingThe declared set of files for the next session
updatedWhen the block was written
resume_noteOne 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.