Skip to content

SPEC structure: the 24 files #1570 missed, a section sdd.md forbids, and three worked examples - #1572

Merged
brillout merged 1 commit into
mainfrom
claude/sdd-spec-structure
Aug 18, 2026
Merged

SPEC structure: the 24 files #1570 missed, a section sdd.md forbids, and three worked examples#1572
brillout merged 1 commit into
mainfrom
claude/sdd-spec-structure

Conversation

@brillout

Copy link
Copy Markdown
Member

Finding 7 from the #1536 review, kept separate from the code fixes in #1571. Independent of that PR — no overlapping files.

The 24 files #1570 missed

#1570 renamed the footer to ## Before modifying/creating SPEC.md files in every *.SPEC.md. It matched that pattern, so it skipped the 24 directory-level SPEC.md files — including the root SPEC.md and every package and subsystem one. They still said "Before writing SPEC.md files" and "Read" rather than "Always read and respect".

Worth naming why that wording matters, since I am the evidence: "before writing" is what I read as authoring a new file, which is how I edited six SPECs in 10f280c without opening the spec at all. The files most likely to be read first were the ones still carrying it.

A section sdd.md forbids

event-stream.SPEC.md had a ## Notes section. sdd.md lists the allowed sections and says never to invent others. What it held: the history of a package that was deleted, and a note that a type parameter is required — one belongs in git, the other in the code. Removed.

After both, every one of the 543 SPEC files carries the required section, uses only sections sdd.md lists, and orders them as the spec does.

The part that cannot be done in bulk — and a decision to make

sdd.md defines ## TLDR as "a summary of the content below", and since brillout/sdd@d6f417f says ## Flows describes what the code does with no context and no history, which belongs in ## Rationales.

180 SPEC files here have a TLDR and nothing below it — one bullet list carrying flows, rationale and history together, summarising nothing. (333 files are a single sentence, which the spec explicitly allows; 21 have Rationales, 7 have Flows.) That means the new Flows rule has nothing to bite on, and the altitude defect I introduced in my own six SPECs was structurally invited.

Three files are restructured here as worked examples — framework-gitignore, config, and store/agent-store, the biggest of them. Same content, sorted: what it does under Flows, why it is that way under Rationales, and a TLDR that is now actually a summary.

The other 177 are left for your call rather than a script. Splitting a bullet into what-happens and why is a judgement per sentence; done mechanically across 177 files it would produce exactly the prose the spec exists to prevent, in your voice rather than mine. The three here are what the answer looks like — if it is the right answer, the rest is a known and finite job, and I would rather do it with a yes than assume one.

Verification

Docs only — no source, no test, no build input changed. A conformance check over all 543 files reports no violations: required section present everywhere, no section sdd.md does not list, and TLDR → Flows → Rationales in that order wherever they appear.


Generated by Claude Code

Three things, in increasing order of how much judgement they took.

#1570 renamed the footer in every `*.SPEC.md` and missed the 24 `SPEC.md` files —
the directory-level ones, including the root. They still said "Before writing",
which is the wording that let me read the rule as "authoring a new file" and edit
six SPECs without opening the spec at all. They now say what the others say.

`event-stream.SPEC.md` carried a `## Notes` section, which sdd.md does not list
and says never to invent. What it held was the history of a deleted package and a
type-parameter detail — one belongs in git, the other in the code.

The third is the part that cannot be done in bulk. sdd.md defines `## TLDR` as a
summary of the content below it, and (since brillout/sdd@d6f417f) says `## Flows`
describes what the code does with no context and no history, which goes in
`## Rationales`. 180 SPEC files here have a TLDR and nothing below it: one bullet
list carrying flows, rationale and history together, summarising nothing.

Three are restructured here as worked examples — the gitignore, the repo config,
and the agent store, which is the biggest of them. Same content, sorted: what it
does under Flows, why it is that way under Rationales, and a TLDR that is now
actually a summary.

The other 177 are left for a decision rather than a script. Splitting a bullet
into what-happens and why is a judgement per sentence; done mechanically across
177 files it would produce exactly the prose the spec exists to prevent, in
someone else's voice. The three here are what the answer looks like — if it is
the right answer, the rest is a known, finite job.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PGg6YdQthErYV63HRVPzrw
@brillout
brillout merged commit efd4535 into main Aug 18, 2026
2 checks passed
@brillout
brillout deleted the claude/sdd-spec-structure branch August 18, 2026 11:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants