Learning outcomes
States, not steps
The previous lesson looked at the artefacts as documents. This one looks at them in time: a change is a small object with a life cycle, and every transition has a condition attached.
The condition on each arrow is the useful part. "We are working on it" is not a state; specified is, because there is a document you can point at. That property is what lets a milestone review be a five-minute conversation rather than an interrogation.
Note the two arrows going backwards. A change may return to proposed when its reason stops holding, and it may be withdrawn entirely. Both are normal, and both are better outcomes than a change that is quietly abandoned in place.
What archiving actually does
Archiving is the only transition that changes something outside the change itself, and it is the point of the whole loop.
Three consequences worth stating plainly:
-
The target state grows; it does not accumulate history. After archiving,
specs/says only what is true. Why it became true is in the archive. -
The archive is dated evidence. "This change is archived, on this date, with these tasks ticked" is a fact. "We worked on booking" is not.
-
Nothing is written twice. The requirement moved; it was not copied. A fact that exists in two places is a fact that will soon exist in two versions.
An unarchived change that is finished is the commonest form of invisible work in student projects. The work happened, the code is there, and the target state still describes a system that does not exist.
A change that turns out to be wrong
It will happen, and how a team handles it is more diagnostic than how it handles success. Three cases, three different answers:
| Situation | What to do |
|---|---|
The reason no longer holds — the client changed their mind, the problem went away |
Withdraw it. Move it to the archive marked as withdrawn, with one sentence on why. It is not a failure; it is a decision, and undocumented decisions are the expensive kind. |
The requirement was wrong, but something is needed here |
Back to proposed. Rewrite the spec delta, then re-plan. Do not patch tasks onto a spec that no longer says the right thing. |
The implementation was wrong, the requirement stands |
Stay in in progress. This is an ordinary bug, not a life-cycle event. |
What never helps: leaving it open. A change that nobody has touched for six weeks is not "in progress" — it is a decision that has not been written down. At the milestone review it will be counted as nothing either way, so writing it down costs nothing and buys clarity.
Splitting a change
A change is one intention, reviewable in one sitting, archivable as a whole. When it is not, it has to be split — and the line matters.
| Good split lines | Bad split lines |
|---|---|
by capability — booking, then attendance |
by layer — "the backend change", then "the frontend change" |
by scenario — the happy path, then the refusals |
by person — "Marco’s part" and "Lisa’s part" |
by risk — the decided part now, the open question later |
by time — "week one" and "week two" |
The right-hand column all share one defect: neither half is archivable alone. A backend-only change leaves the target state describing behaviour no user can reach; a change cut by person leaves the record describing the team rather than the system.
The practical signal that a change is too large: the task list is thirty items and the first ten have nothing to do with the last ten. Splitting is cheap; unpicking a half-finished change is not.
Reading a project from its folders
This is the skill the milestone review depends on, and it takes about two minutes.
| What you see | What it means |
|---|---|
|
nothing has been finished; possibly a lot has been done |
twelve changes open, none archived |
no change was ever cut to a reviewable size |
|
changes are being archived without folding their delta in — the process is being performed, not used |
one change open, several archived, tasks ticked with dates |
the healthy picture |
changes archived in a single burst last week |
the record was reconstructed afterwards; it is a story, not evidence |
The last row is worth dwelling on, because it is the one students are tempted into. A record written in June, dated June, describing work from November, tells the reader exactly one thing: that the process was not used. The dates are the evidence, and they cannot be back-filled honestly.
Decisions
-
Every piece of work runs through a change, including documentation work.
-
A change is archived as soon as it is done, not collected for the end of term. An unarchived finished change counts as unfinished.
-
A change whose reason no longer holds is withdrawn in writing, with one sentence of justification.
-
Changes are split by capability, scenario or risk — never by layer, person or week.
-
No change stays open without activity for longer than one milestone period. Either it moves or it is withdrawn.
-
The state of a change is what its artefacts show, not what somebody says in a meeting.
Pitfalls
-
Finishing work and not archiving it. The target state then describes a system that does not exist, and the work is invisible at the review.
-
Leaving a dead change open because withdrawing feels like admitting failure. It is the opposite: withdrawing is the documented decision.
-
Splitting by layer, so that neither half can be archived alone.
-
Reconstructing the record at the end of term. The dates give it away, and it turns an assessment of the work into a question about honesty.
-
Editing
specs/directly instead of through a change. The target state then has an origin nobody can trace. -
Treating "in progress" as a place where changes live. It is a state with an exit condition.
Terminology
| Deutsch | English |
|---|---|
Lebenszyklus |
life cycle |
Zustand, Zustandsübergang |
state, transition |
archivieren |
to archive |
zurückziehen |
to withdraw |
Zielzustand |
target state |
Nachweis, Beleg |
evidence |
Schnitt, Aufteilung |
split, cut |
Further reading
-
Module
sdd-openspec-artifacts— the same objects as documents -
Module
openspec-hands-on— the commands that move a change between states -
Module
bridge-progress-and-milestones— what the archive is worth at a review