Re-voice SPEC.md files to the user-story axis of the current sdd.md - #1613
Conversation
…he user-story axis Upstream sdd.md now demands flows explained from the user-story perspective for a technical-PM reader. These three serve as the calibration exemplars: User Stories name what the user does and gets, flows open from the user's action before the mechanism, coined terms are glossed at first use, and the git mechanics that carry constraints move fully into Rationales. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…he user-story axis User Stories added where behavior is user-visible (control, daemon, config layers, data branch, Discord, events, install, layout, handoff-level, cloud-work); flows open from the user's action before the mechanism; coined terms glossed inline; two-read sentences split. Pure plumbing keeps its bird's-view framing with the surfaced effect named. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
User Stories on the drivers the user picks (Claude Code, Codex, Actions);
flows anchored on what the dashboard shows and what the user's subscription
pays; the Actions spec's shell-safety and auth claims sharpened to the
code-accurate mechanisms; coined terms ("seam", "barrel") replaced or
glossed; dense bullets split.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…er-story axis User Stories on the persistence guarantees the user relies on (history that survives git clean, work that survives removal, one-row continuations) and on prompt transparency; snapshot mechanics flipped observable-first; coined terms glossed; the agent-store test spec's one-sentence monster split into line 1 plus five bullets. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
Every RPC spec now opens from the click or look it serves, with User Stories naming what the user does; dense bullets split; "backlog" disambiguated; null-prototype and relay behaviors stated observable-first; the recently corrected control-file vs direct-write split preserved byte-identical. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
… the user-story axis User Stories on the guarantees the user relies on (never starved by quota, no double-worked tickets, exact prompt readable, refusal-with-fix before spend); flows opened from the user's side; jargon replaced with the named ladder or glossed; preflight's "once, by the dashboard" corrected to the code-accurate pre-spawn framing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…ser-story axis User Stories on the agent lifecycle (watch, answer, decline, chat, resume, exact system prompt) and CI watch (merge on green anywhere, fix agent on red); "tick" and "holder" jargon replaced; monster bullets split; effects stated first. Four stale quota/budget claims found against the code are preserved and flagged for the follow-up, per the pass's rules. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
Twelve user stories in plain sentences, each traceable to FEATURES-SPEC.md; the Flows — TL;DR rebuilt one sentence per flow (14 for 14); every flow paragraph opens from the user's side; glossary grows agent, composer, routine, handoff, and quota week; the control file glossed inline. Twelve stale claims found against the code (mostly #1582 data-branch drift) are preserved and flagged for the follow-up round. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
The Actions runner spec opens from the user running an agent on a GitHub-hosted runner, states the push guarantees the workflow carries, and names the framework as the one actor; the transcript-artifact claim is sharpened to the branch/artifact split the yml itself makes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…er-story axis Extension flows open from the user's pick and name the dashboard-side effect; decoy rules stated observable-first; the options page gains its own two stories (a surface no parent story covers); cryptic parentheticals unpacked; the site's CTA sentence split. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
The src directory spec's flows open from the user's side with its jargon glossed; agent-messages, agent-view, browser, and browser-stream gain the stories they embody (chat mid-run, take over Chrome at a login wall, armed handoff at a glance); plumbing keeps system framing with effects named. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…ry axis Every read model gains the stories of what the user sees (the online dot, the overview widgets, the bind choice and its token), flows open from that surface, guards and null-prototype behavior stated observable-first, and coined terms glossed inline. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
…he user-story axis Handoff, activity, bridge, and file-read specs gain the stories of what the user sees (auto draft PR, question cards, hover diffs, docs rail); flows open from those surfaces; foreign coinages glossed; the bridge degradation claim scoped to the routes that actually degrade. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
The dashboard root's stories become single-claim sentences; App gains its stories; lib hooks name the surfaces they feed (banner, pill, transcript cards, Stop button); coined terms replaced with plain words; dense quota and filter bullets split one idea per sentence. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
Component flows open from what the user sees or does; the AI queue, Human Queue, publish ladder, and browser bridge glossed at use; monster bullets split; "you" re-voiced to "the user"; pills/chips vocabulary unified. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
Flows open from the user's click or glance; coined vocabulary (gate, launcher, worktree, pushed views, the rail) replaced with each spec's plain words or glossed at use; "you" re-voiced to the user; dense sentences split one idea each; two whole-story components gain their User Stories. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma
|
Spec-vs-code findings from the style pass's grounding. Per the pass's rules every claim below is preserved in this PR (re-voiced in form, never silently corrected) — each needs a call: fix the spec, fix the code, or ticket it. Grouped by kind: Likely code bug:
Flagship spec (
Quota/budget drift (the E1 removal):
Stale UI claims:
Daemon/RPC mismatches:
Coverage gaps:
Minor wording:
Happy to run the fix round once this PR lands, same shape as #1611. Generated by Claude Code |
|
I love the user stories, it's a really nice context anchoring. |
|
@suleimansh Let me know if you want further improvements (e.g. I can let Claude make another pass of improvements). One thing that didn't work is |
Three specs this branch touches were rewritten by #1613. The additions are kept, re-said in the new voice: - prompts/SPEC.md — the pull-request description joins the non-blocking signal list inside Rom's restructured sentence, not the old one. - agent-handoff.SPEC.md — the description flow leads with what the reader gets ("describes the work in the agent's own words") rather than with what the framework does, and the capability gains a User Story beside the others. - turn-gate.SPEC.md merged cleanly.
The #1609 migration made the tree structurally compliant with upstream sdd.md but kept the corpus's system-mechanics narration. Upstream's current revision is explicit about the axis this PR fixes: "explain everything from the perspective of user stories", for a technical product manager reader — proficient in engineering, but who has never read this codebase. All 221 specs with content sections were re-voiced (one-liners are exempt by the template): 193 files changed, +986/−407, in 16 commits.
What the pass changes:
tf-data, the shared branch where agent records are archived)"); owned vocabulary lives in that spec's Glossary — the flagship spec's glossary grows agent, composer, routine, handoff, and quota week.Calibration:
SPEC.md(root),src/worktrees.SPEC.md, andsrc/driver/cloud.SPEC.mdwere re-voiced by hand first and served as exemplars for the fifteen batch agents.Verification: the structural spec linter is green over all 557 SPEC.md files (allowed sections, template order, one-sentence preamble, byte-exact footer); the branch touches no code files.
The grounding surfaced ~30 spec-vs-code findings — including one likely code bug (the keyed-watcher warm-up flood) and twelve stale claims in the flagship spec alone (mostly #1582 data-branch drift) — all preserved verbatim in this PR and listed in the follow-up comment below, ready for a fix round like #1611 once this lands.
🤖 Generated with Claude Code
https://claude.ai/code/session_011XvEviGLEJZsp1h6iWzgma