Migrate all SPEC.md files to the new upstream sdd.md template - #1609
Conversation
…hub, dashboard-rpc Upstream sdd.md redefined the SPEC.md template: `## TLDR` is gone, flows live under `## Flows` (with an optional `## Flows — TL;DR` summary), why/history clauses move to `## Rationales`, and `## User Stories` / `## Glossary` are new optional sections. This is the first slice of the tree-wide migration: - Root SPEC.md and packages/the-framework/SPEC.md restructured: user stories (traceable to FEATURES-SPEC.md), flows, rationales extracted from history clauses, and a glossary for the product vocabulary (driver, location, gate, ticket, queue entry, empty agent, preset). - .github specs: stale footer variant replaced with the canonical footer; workflow specs restructured. - dashboard-rpc specs: TLDR renamed/merged into Flows, rationales extracted. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
TLDR sections become Flows (byte-identical where already compliant), history and why clauses move to Rationales reworded in present tense, User Stories added on src/SPEC.md and auto-pm.SPEC.md (traced to FEATURES-SPEC.md), and driver/SPEC.md gets a Glossary owning the coined term "driver". One grounded correction: the Claude Code usage question is answered by the agent, not the driver. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…resets
TLDR sections become Flows; history framings ("used to be three rules",
"any more", incident stories) are reworded as present-tense rationales;
self-references made self-contained. Behavior bullets stay byte-identical.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…s (A-D), website, chrome extension TLDR sections become Flows with behavior bullets byte-identical; history clauses reworded as present-tense rationales; User Stories added on the extension and website directory specs (visitor/user-facing flows). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…nfig TLDR sections become Flows; history framings reworded as present-tense rationales; why-clauses collected under Rationales; User Stories added on cli.SPEC.md (traced to FEATURES-SPEC.md). One grounded correction: each driver, not each agent, declares its CLI surface. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…, prompts TLDR sections become Flows; why-clauses and de-historied framings collected under Rationales; multi-sentence preambles reduced to the single mandated description sentence. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…hooks) TLDR sections become Flows with behavior bullets byte-identical; design-why clauses move to Rationales; history framings reworded present-tense. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
TLDR sections become Flows with behavior bullets byte-identical; retired-UI history clauses dropped or reworded as present-tense rationales. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
… queue, worktrees TLDR sections become Flows; why-clauses and de-historied framings collected under Rationales; User Stories added on tickets.SPEC.md and todo-loop.SPEC.md (traced to FEATURES-SPEC.md); worktrees.SPEC.md split into 8 flow facts and 8 rationales. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…s (P-Z) TLDR sections become Flows; history clauses grounded against the components and reworded present-tense; fuzzy phrases replaced with the actual behavior; User Stories added on the components directory spec. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…ads (G-Z) TLDR sections become Flows with bullets unchanged; the two history passages (overview backlog, RPC framework) reworded as present-tense rationales grounded in the code. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…s (D-P) TLDR sections become Flows with bullets byte-identical; design-reason bullets move to Rationales; history framings reworded or dropped after grounding against the components; stale "agent" vocabulary corrected to "driver". Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
… prompt-editor, design The dashboard root spec gains User Stories (traced to FEATURES-SPEC.md) and a Flows — TL;DR over its ten flows; TLDR sections elsewhere become Flows; tooling history reworded as present-tense rationales; implementation terms replaced with plain words. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…ads (A-G), bridge The directory spec gains User Stories (traced to FEATURES-SPEC.md) and a Flows — TL;DR over its nine flows; TLDR sections elsewhere become Flows; history sentences reworded as present-tense rationales; a dead PR-resolution mechanism trimmed from the handoff flow. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
|
Spec-vs-code contradictions found while grounding the migration. Per the migration rules these were preserved verbatim (migrated in form, not silently rewritten to match the code) — each needs a human call: fix the spec, fix the code, or ticket it. Website copy bug (the one that matters most):
Specs describing code paths that no longer exist:
Specs overstating or misplacing behavior:
Generated by Claude Code |
… new template Resolves the four dual-edited specs (worktrees, driver/cloud, cloud-scratch-refs, dashboard App) by taking main's content in the migrated structure, and migrates the nine spec files #1603/#1604 added in the old format: TLDR sections become Flows, why-clauses move to Rationales. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
|
The new structure is much better to read, especially pulling the why out into Rationales. Nice work. 😍 |
|
🤖 agent comment Reviewed the migration. Structure is clean, and the rewrites are more accurate than what they replaced. Two small findings, neither blocking. Structure, checked across all 559 spec files: no Rewrites spot-checked against the code — both got more precise, not looser:
1. A deleted feature got promoted into user storiesThe watch relay was removed in #1536 (
One stale claim is now four. It also misses this PR's own rule that each user story is traceable to The general risk is worth naming: any stale flow that earned a user story was amplified the same way. The 13-finding list caught this feature once ( 2. Two specs promise different things about cloud sessionsRoot Both are one-line fixes. Finding 1 is swept up anyway by the relay-orphan cleanup queued behind this PR: |
The shared watch link was removed in #1536; the migration's derived user stories on the dashboard and components specs promoted that stale flow into a headline promise, and the root spec overpromised "steering" cloud agents. The stories go, the root story now says follow-and-answer, and the stale flow sentences stay preserved for the queued relay-orphan cleanup. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
|
Both findings verified and addressed in 1 — watch-relay amplification: confirmed against the code (no watch-link row in 2 — root spec's "steers": reworded to what the code delivers — "follows them from the same dashboard, and answers the questions they park on" — matching On the general risk: agreed, and worth restating crisply — the 13-finding list is per-file, so a feature with several spec homes can be stale in more places than the list names. The follow-up cleanup should walk features (starting from the removed watch relay), not files. Generated by Claude Code |
Upstream sdd.md redefined the SPEC.md template (commit
f54547c):## TLDRis no longer a legal section, flows live under## Flowswith an optional## Flows — TL;DRsummary, why/history clauses belong in## Rationales, and## User Stories/## Glossaryare new optional sections. This PR migrates the whole tree — all 558 SPEC.md files checked, 231 changed (+967/−451) — and applies the new writing style (product-manager reader, zero ambiguity, self-contained sentences, no history framing in flows). Only*.SPEC.mdfiles are touched.What the migration does:
## TLDRis gone everywhere (212 files): where the bullets described behavior they became## Flows(byte-identical where already compliant); where a real flows section existed they were merged; history/why clauses were extracted into## Rationales, reworded in present tense.## User Storiesadded only where a file's flows directly realize something a user does, each story traceable toFEATURES-SPEC.md: root,packages/the-framework,src,cli,auto-pm,tickets,todo-loop, the dashboard root and components directory, the daemon's dashboard directory, the chrome extension, the website, and the Actions agent workflow. Leaf plumbing and single UI components get none.## Flows — TL;DRonly where a Flows section is long enough to earn a summary:packages/the-framework,dashboard,src/dashboard.## Glossarywhere a spec owns coined vocabulary:packages/the-framework/SPEC.md(driver, location, attended/unattended, gate, ticket, queue entry, empty agent, preset) anddriver/SPEC.md(driver).SPEC.mdrestructured per the new Hierarchy rules: product story, how the top-level subsystems relate, product-level user stories..githubspecs carried a stale## Before writing SPEC.md filesvariant.Verification: a compliance linter ran over all 558 files — allowed sections only, template order, one-sentence preamble, byte-exact footer,
## Flows — TL;DRonly above a## Flows, no## TLDRremaining. Every substantive rewrite was grounded against the sibling source file by the migrating agent.Spec-vs-code contradictions discovered during grounding were preserved verbatim, not silently "fixed" — see the follow-up comment below for the full list (13 findings, including one live website copy bug: "keeps humans under control").
🤖 Generated with Claude Code
https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma