Merge pull request 'Playbooks 01 and 02: one record per question an effort answers; design choices live in the design' (#522) from docs/one-record-per-question into main
This commit was merged in pull request #522.
This commit is contained in:
@@ -14,7 +14,9 @@ there and never push.
|
|||||||
(`knowledge-base.get` with `reasoning`, and `links`), and `knowledge-base.ask` for the area in plain words: a
|
(`knowledge-base.get` with `reasoning`, and `links`), and `knowledge-base.ask` for the area in plain words: a
|
||||||
record you did not expect may already decide a point. Read each design whole before changing it, hq's glossary
|
record you did not expect may already decide a point. Read each design whole before changing it, hq's glossary
|
||||||
(`00-META/glossary.md`) and playbook 02's steps for amending a to-be design. A clause the records do not
|
(`00-META/glossary.md`) and playbook 02's steps for amending a to-be design. A clause the records do not
|
||||||
decide is not written into a design as if they did: say it to the caller as an open point.
|
decide is not written into a design as if they did. A choice within what a record decides (a field, a tool, an
|
||||||
|
event, a bound, the order of steps) is the design's own: write it in the design with its reason, under the record it
|
||||||
|
follows from (playbook 02, step 2). Only a question outside every record's question is an open point for the caller.
|
||||||
**It reads the mesh and writes nothing there.** It calls only verbs that read (`knowledge-base.get`, `ask`, `links`,
|
**It reads the mesh and writes nothing there.** It calls only verbs that read (`knowledge-base.get`, `ask`, `links`,
|
||||||
`holds`; `issue-tracker.list`, `get`); never `knowledge-base.reserve` or `propose`, nor any `issue-tracker` verb that
|
`holds`; `issue-tracker.list`, `get`); never `knowledge-base.reserve` or `propose`, nor any `issue-tracker` verb that
|
||||||
writes (`open`, `move`, `note`, `link`). What a record or an issue must carry goes to the caller in its report.
|
writes (`open`, `move`, `note`, `link`). What a record or an issue must carry goes to the caller in its report.
|
||||||
@@ -31,5 +33,5 @@ names, never node names, addresses or paths. A new word goes into the glossary w
|
|||||||
what it refuses. Commit in the imperative, about why.
|
what it refuses. Commit in the imperative, about why.
|
||||||
|
|
||||||
Report to the caller in under 30 lines: the branch and its head, each file changed with the findings it now
|
Report to the caller in under 30 lines: the branch and its head, each file changed with the findings it now
|
||||||
carries, what the tests said, and every point you left open because no record decides it, with your
|
carries, what the tests said, the design's own choices you wrote, one line each, and every question you left open because it falls outside
|
||||||
recommendation. Glossary words only; a guess is said as one.
|
every record's question, with your recommendation. Glossary words only; a guess is said as one.
|
||||||
|
|||||||
@@ -32,7 +32,8 @@ written into this repository.
|
|||||||
|
|
||||||
## Amending an existing design
|
## Amending an existing design
|
||||||
|
|
||||||
A design changes only through a decision. Propose the record first; if it reverses an earlier one,
|
A design changes only through a decision; a choice within what a decision decides (a field, a tool, an event, a
|
||||||
|
bound) is the design's own, written in it with its reason. Propose the record first; if it reverses an earlier one,
|
||||||
it `supersedes` it (or `changes` the clauses it replaces) — **never edit the earlier record's text**;
|
it `supersedes` it (or `changes` the clauses it replaces) — **never edit the earlier record's text**;
|
||||||
a correction of fact is a progressive insight (`propose` the accepted record with `insight`). Then edit
|
a correction of fact is a progressive insight (`propose` the accepted record with `insight`). Then edit
|
||||||
the design, add `"ADR NNNN"` to its `decisions:`, and set `updated:`.
|
the design, add `"ADR NNNN"` to its `decisions:`, and set `updated:`.
|
||||||
|
|||||||
@@ -83,8 +83,9 @@ An idea arrives in one of two forms, and the first step differs:
|
|||||||
decisions in those words. Asked when the idea is set up, too: an option that lands a concept in the wrong
|
decisions in those words. Asked when the idea is set up, too: an option that lands a concept in the wrong
|
||||||
domain is offered with that cost named, like one that breaks a rule.
|
domain is offered with that cost named, like one that breaks a rule.
|
||||||
7. **Settle the direction with the operator.** When the questions are answered, write the section **Direction**:
|
7. **Settle the direction with the operator.** When the questions are answered, write the section **Direction**:
|
||||||
the proposed decisions in a few lines each, the options rejected and why, and the build's acceptance
|
the question the effort answers, the options weighed and the one proposed (a second only for a second
|
||||||
tests: what the build must prove before it is done, carried by its milestones (playbook
|
question of its own; playbook [02](02-graduation.md), step 2), the design choices that follow from it in a
|
||||||
|
line each, and the build's acceptance tests: what the build must prove before it is done, carried by its milestones (playbook
|
||||||
[04](04-build-handoff.md)). Nothing else is left open: each question closes by a test, by a decision the
|
[04](04-build-handoff.md)). Nothing else is left open: each question closes by a test, by a decision the
|
||||||
effort records with its reason (a small design limit is the lead's), or by the operator. Ask the
|
effort records with its reason (a small design limit is the lead's), or by the operator. Ask the
|
||||||
operator to confirm or change the direction, one point at a time. Then review it by architectural domain (below) and
|
operator to confirm or change the direction, one point at a time. Then review it by architectural domain (below) and
|
||||||
|
|||||||
@@ -21,8 +21,17 @@ about an hour, and said to the operator if it runs past.
|
|||||||
[`mission.md`](../mission.md), [`context.md`](../context.md) and
|
[`mission.md`](../mission.md), [`context.md`](../context.md) and
|
||||||
[`effect.md`](../effect.md). If it conflicts, either the effort is wrong or GENESIS is —
|
[`effect.md`](../effect.md). If it conflicts, either the effort is wrong or GENESIS is —
|
||||||
say which, in writing, before proceeding.
|
say which, in writing, before proceeding.
|
||||||
2. **Record the decisions** (below, *Writing a decision record*): one record per choice that could be
|
2. **Record the decisions** (below, *Writing a decision record*): one record per question the effort
|
||||||
reversed on its own, not one record for the whole effort.
|
answers, holding that question, the options weighed and the one chosen. Most efforts answer one question
|
||||||
|
and graduate into one record; a second record is written only for a second question of its own, such as
|
||||||
|
how the change can be checked or delivered at all (the operator, 2026-11-06: an effort graduated into
|
||||||
|
eleven records where it answered two questions). The choices made while working out the design that
|
||||||
|
follows (a field, a tool, an event, a bound, the order of steps) are the design's: written in the design
|
||||||
|
with their reasons, under the record they follow from, never as records of their own. A clause of an
|
||||||
|
earlier record the decision changes is a `changes` link from the record, with one line saying in what.
|
||||||
|
How it is checked: the lead names, in the graduation's report to the operator, the question each record
|
||||||
|
answers; an effort graduating into more than two records is said to the operator with why, before the
|
||||||
|
records are proposed.
|
||||||
- **Write them together, not one after another.** Reserve every number first, then propose each record
|
- **Write them together, not one after another.** Reserve every number first, then propose each record
|
||||||
as soon as it is written, without waiting for the review of the one before; the reviews run side by
|
as soon as it is written, without waiting for the review of the one before; the reviews run side by
|
||||||
side, and the operator's asks for the records that need them arrive together. A record that
|
side, and the operator's asks for the records that need them arrive together. A record that
|
||||||
@@ -139,7 +148,8 @@ by a progressive insight.
|
|||||||
|
|
||||||
## Amending an existing design
|
## Amending an existing design
|
||||||
|
|
||||||
A design changes only through a decision.
|
A design changes only through a decision. A choice within what a decision decides (a field, a tool, an event,
|
||||||
|
a bound) is the design's own, written in it with its reason; it needs no record of its own.
|
||||||
|
|
||||||
1. Write the decision record (above). If it reverses an earlier one, it `supersedes` it.
|
1. Write the decision record (above). If it reverses an earlier one, it `supersedes` it.
|
||||||
2. Edit the to-be design document, add the record to its `decisions:` as `"ADR NNNN"`, and set `updated:`
|
2. Edit the to-be design document, add the record to its `decisions:` as `"ADR NNNN"`, and set `updated:`
|
||||||
|
|||||||
@@ -424,7 +424,7 @@ const P = [
|
|||||||
{n:"02",name:"Graduation & design change",kind:"idea",c:"--dec",
|
{n:"02",name:"Graduation & design change",kind:"idea",c:"--dec",
|
||||||
trig:"A research effort concludes, or an existing design must change.",
|
trig:"A research effort concludes, or an existing design must change.",
|
||||||
who:"The lead, on the larger model; the decision is recorded before the design moves.",
|
who:"The lead, on the larger model; the decision is recorded before the design moves.",
|
||||||
steps:["Check the conclusion against mission, context and effect.","Reserve a number per decision.","Propose one record per choice that can be reversed on its own.","Pre-check, then propose siblings together.","On changes: revise whole; after three rounds fix findings yourself.","A finding that would change what was decided: ask the operator.","needs-operator: wait for the operator's Approve.","Amend the design, or create a to-be design with status designed.","Add the decisions, updated:, and the effort's glossary words.","Review the design by architectural domain before it is merged.","Hand the design to the breakdown (04).","Close the effort: graduated with became links, or abandoned.","When it ships: write the as-is, set the to-be implemented."],
|
steps:["Check the conclusion against mission, context and effect.","Reserve a number per question the effort answers.","Propose one record per question: its options and the one chosen; design choices go in the design.","Pre-check, then propose siblings together.","On changes: revise whole; after three rounds fix findings yourself.","A finding that would change what was decided: ask the operator.","needs-operator: wait for the operator's Approve.","Amend the design, or create a to-be design with status designed.","Add the decisions, updated:, and the effort's glossary words.","Review the design by architectural domain before it is merged.","Hand the design to the breakdown (04).","Close the effort: graduated with became links, or abandoned.","When it ships: write the as-is, set the to-be implemented."],
|
||||||
prod:"Decision records; a to-be design with frontmatter; glossary entries; later the as-is.",
|
prod:"Decision records; a to-be design with frontmatter; glossary entries; later the as-is.",
|
||||||
next:"04",bounds:"One sitting of about an hour",
|
next:"04",bounds:"One sitting of about an hour",
|
||||||
prev:["A decision rewritten silently","A deferral nothing tracks","A design amended without a decision"],
|
prev:["A decision rewritten silently","A deferral nothing tracks","A design amended without a decision"],
|
||||||
|
|||||||
Reference in New Issue
Block a user