Set down the decision record shape and land the records for the container, the table, the tokens and the prose - #103
Merged
Conversation
Eight records landed before anything said what a record is. The next one written against no template is written against whichever of the eight its author happened to open, and the shape drifts one record at a time until a reader has to work out the convention from the corpus rather than read it. The directory that exists to be readable a year later is the last place that can afford that. Adds the index and the template. The index states the numbering and why a landed number is fixed, the file naming and why the slug names the question rather than the answer, the required sections, and the supersede rule that keeps a landed record from being edited into a different past. The template carries the four headings so a new record starts from something already right instead of from a description of it. The index measures its own directory rather than asserting conformance: three of the records answer two of the four questions under headings of their own, and the command that finds them is in the file. Nothing reads these headings and no check refuses a record that omits one, so the shape is a convention a reader holds and the three named records are what a convention is worth on its own. Refs #1 Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
Four questions the rest of the plan walks into, each of which gets answered silently by the first change that needs an answer if nothing writes it down first. What a Dockerfile is for, which of the site and the profile table is derived from the other, which repository holds the design tokens, and where the words on a plugin page come from. 0002 makes the container the build environment and not the serving one, leaves the static host as the origin, and names the three things the container may not become: it does not serve, it does not publish, and it holds no credential. 0004 makes the roster the source and the profile table a rendering of it. The check reads across the repository boundary, reports the difference and writes nothing, because prose edited by hand is an input format that breaks on the first reflowed cell and a job that repaired another tree would need a credential reaching it. 0007 puts the machine-readable token file with the machine-readable data, with a pinned copy consumed here the way the roster is, and takes the numbers a client has to meet along with it for the same reason. The page and the stylesheet are both generated from that copy so the single definition is checkable rather than intended. 0010 puts per-plugin prose in this tree, keyed by roster identifier, with the roster keeping its one sentence and gaining no prose field. A row without prose and prose without a row are both refused, because the two failures have opposite causes and only one of them is visible. Every measurement quoted was re-run at this commit against the published references rather than copied from the issue that asked for it. Refs #3, refs #5, refs #65, refs #79 Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The decision directory gets its shape, and four of the questions the rest of the
plan walks into get answers written down before the code that would assume them.
decisions/README.md,decisions/0000-template.mddecisions/0002-what-docker-is-for.mddecisions/0004-one-table-two-places.mddecisions/0007-where-the-design-tokens-live.mddecisions/0010-where-the-plugin-page-prose-comes-from.mdCloses #1, closes #3, closes #5, closes #65, closes #79.
The evidence
Every measurement quoted in a record was re-run at this commit against the
published references rather than copied from the issue that asked for it. All of
them reproduce.
All four run 2026-08-09.
The index makes a claim about its own directory and carries the command that
decides it, run at this commit:
The four records added here carry all four headings, which is why they are not
in that output. Nothing reads these headings and no check refuses a record that
omits one, so the index says so in place rather than presenting the shape as
enforced.
The means
Markdown files in the tree. A record has to be readable by somebody who was not
there, diffable, and reachable from the work that assumes it without a tool to
render it. Nothing here needs a runtime and nothing is added that the tree does
not already carry. The template is a file rather than a section of the index for
the same reason: copying something already right beats reading a description and
approximating it.
Scope
Only
decisions/:Size
Over the 400-line guidance at 416 added lines:
The property that holds across every changed byte is that each file stands
alone: one record answering one question, plus the index and the template that
describe the directory those records sit in. No file is read by any other, so
the diff is six independent reads rather than one long one. Splitting it into
five landings would have moved the mainline under each of the others for no
reading benefit.
Review
There is no second reader for this change. That is stated rather than worked
around, and the evidence above stands in place of one: the commands are in the
records, they were run at this commit, and a reader can re-run every one of
them.