What changed in each release, for someone deciding whether to upgrade. Not a commit log — a reader here already has the plugin installed and wants to know what will be different afterwards. The writing rules are in
templates/CHANGELOG.mdat the repo root.
0.2.0 — 2026-08-20
Nothing to do to upgrade. A ledger written before this release keeps working unchanged, and
picks up the new section at its next /programme:handoff.
Added
## The arc, above## Current positionin the ledger — the programme's goal, its own terminal condition as a command and expected output, and a table with a row per phase and astatusofdone·current·planned. Every other section is phase-scoped: the position is rewritten wholesale at each handoff and archived when a phase closes, so a goal recorded there did not outlive the phase that recorded it. This is the one section a handoff does not rewrite and archiving does not move./programme:handoffasks one question against it — whether the next phase still sits where the map says, and whether any later phase's work is cheaper taken now. That question is the point of the section: it is what makes work in front of you refusable when a later phase will delete it.- The
SessionStarthook injects the arc alongside the current position, so it reaches a session with no command run — including after a compaction, which is when the ledger is most needed and least present. /programme:initinterviews for it — seven questions now, not five. The two new ones are the programme's terminal condition, kept distinct from the phase's, and the phase list.- Closing a phase flips its row to
done; closing a programme is refused while any row is stillcurrentorplanned. - A ledger with no arc adopts one at its next handoff, so programmes that predate this release are not left behind — they are precisely the ones whose arc has never been written down.
Changed
/programme:resumereads the arc first and reports every phase stillplanned. The arc frames the phase rather than trailing it./programme:statusreports progress from the arc'sstatuscolumn. It previously read what had closed by counting Archive index rows, which was wrong: that table also gains a row whenever a position is moved out purely for length, and again when a programme closes.- A programme-level terminal condition now has a home.
/programme:statusused to ask for it "if the ledger states one" — there was no place to state it, so a met phase condition could read as a finished programme.
Fixed
- A ledger section no longer swallows the one after it when the following heading begins with the
same text. A ledger carrying both
## Archiveand## Archive indexwould have had the first run to the end of the file, taking every later section with it. /programme:initno longer contradicts itself about which angle-bracketed spans it fills: its file-copying step said they were filled later by someone else, while its interview step filled two of them.
0.1.0 — 2026-08-14
Added
- First marketplace release. A durable ledger at
docs/programmes/<slug>/ledger.mdwith its templates, four commands —/programme:init,/programme:resume,/programme:handoff,/programme:status— an always-loadedCLAUDE.mdpointer carrying the write cadence, and aStopguard that fires once per session when code moved and the ledger did not.