Research efforts move from status.md to 00-overview.md with active / graduated / abandoned, matching papa-hq so the two repositories read the same way. Playbooks, skills, README and the ledger follow. Reverses yesterday's withdrawal of the symlink note in GENESIS. The note was right and the withdrawal was wrong: the intent is that the mesh creates no symlinks at all, so a founding document listing "symlinks, not copies" as a design principle does point the opposite way from where this is going, and that is a contradiction rather than a stale detail. ADR 0018 records the position, proposed. ADR 0011 stays as it is — it is the historical decision and the incident behind it is why anyone believes either record — and is superseded in intent, not edited. Its one editorial line, which called the wider reading false, is corrected to state what is actually true: centralising who may link narrowed the incident class without closing it, because a link the installer makes resolves exactly like one made by hand. The argument that kept linking was staleness. ADR 0004 removed it: every managed file is already derived and reconciled, so a copy is the natural form and a pointer into source is the shape the mesh's own model forbids everywhere else. What is not settled, and is marked open, is how staleness gets detected — which is the decision that makes or breaks it.
2.7 KiB
Playbook 02 — Graduation and design change
Trigger. A research effort concludes, or an existing design must change.
Who runs it. Anyone, with the decision recorded before the design moves.
Graduating research
-
Check it against GENESIS. An effort graduates only if its conclusion is traceable to
mission.md,context.mdandeffect.md. If it conflicts, either the effort is wrong or GENESIS is — say which, in writing, before proceeding. -
Record the decision. Write a record in
adr/taking the next free number. Format and rules are inadr/README.md. State evidence, not assertion, and record the options that were rejected — that is the half worth keeping. -
Write the design. Create the document under
02-DESIGN/01-to-be/with frontmatter:--- layer: to-be status: designed code: [] # owning code repo(s); set at build handoff, empty before updated: YYYY-MM-DD decisions: [adr/NNNN-....md] --- -
Close the effort. Set the effort's
00-overview.mdfrontmatter tostatus: graduatedandbecame:pointing at the design document and the decision record. -
Add a ledger line. Append the decision to
DECISIONS.mdunder today's heading, pointing at the record.
Amending an existing design
A design changes only through a decision.
- Write the decision record. If it reverses an earlier one, the earlier record's
status:becomessuperseded-by: adr/NNNN-....md— its text is never edited. - Edit the to-be design document and set
updated:to today. - If the amendment came from an issue, set that issue's
amended-design:to the document path. - Add the ledger line.
When something ships
Implementation state is a third axis, independent of both design and decision.
- Write or update the matching document under
02-DESIGN/00-as-is/so it describes what now runs — including anything that shipped differently from the intent. A design that shipped bent is an as-is fact, not a design amendment. - Set the to-be document's
status: implementedand itscode:to the owning repositories fromrepos.md. status: implementedmust be defensible from the owning repository's main branch, not from intent. If it cannot be checked, it isin-progress.
Do not
- Do not move a to-be document into
00-as-is/. Write the as-is document; both stand. - Do not edit an as-is document to describe an intention. That is what the to-be layer is for.
- Do not change a decision record's meaning. Supersede it.