Agentic SDLC — Planning & Requirements Map

Agentic SDLC — Planning & Requirements Map
PLANNING & REQUIREMENTSHow a vague idea becomes something an agent can build, and prove it built.Agentic SDLC · Workshop 1 + the Project Manager, Requirements Reviewer and Value Chain Expert agents↖ Agentic SDLC meta-map1 BRAIN DUMPthe quarryevery idea, out of your headthe book club:"we keep arguing about the next book"2 REQUIREMENTSthe blueprinttestable: REQ-001…the book club:REQ-003: one ranked ballot per member per open round3 REVIEWthe inspectora fresh agent breaks the specthe book club:⚠ tie-break unstated · ⚠ double vote?4 VALUEthe scalesKano · RICE · 2×2the book club:Voting = BASIC → Phase 15 ROADMAPthe railwayphases · deps · batchesthe book club:Batch 3, after accounts + rounds6 SPECthe logbookcontext + definition of donethe book club:spec delta + issue: 5 boxes = donegaps found → revisenew ideas found while building go back into the dump: it's iterative, not final▼ the six stages below, in this order (snake: top row → then bottom row right-to-left) ▼ STAGE 1 · GET IT ALL OUTBrain dumpmetaphor: the quarryDig everything out first, sort it second. An agent can only plan around ideas it has seen. 1Dump, don't organiseTalk. Let the agent ask you questions.Sort nothing yet.You know the summary of your project, not the details. Thedetails are what become requirements, and they only come outwhen you talk past the summary. Use voice input if you can.Tell the agent to ask follow-up questions and to capture theout-of-scope stuff too. Out-of-scope ideas are not waste:they become the backlog, and writing them down is what letsyou stop thinking about them.1 of 3YOU ARE HERE · Plan › Brain dump › Dump your headvote on booksreminders?discussionGoodreadshost roleAI picks?progress bar ▸ Worked example: the book club's raw dumpzoom inPROMPT (Workshop 1, step 1)I'm going to brain dump everything I want in my project. Don't organize it yet, just helpme get it all out. Ask me follow-up questions to pull out more ideas. I want to captureEVERYTHING, even stuff that's probably out of scope.WHAT CAME OUT (illustrative)we keep arguing about the next book / some kind of vote? / the host should be able to openand close voting / reminders before the meeting / a place to talk about chapters / importour shelves from Goodreads / maybe an AI that suggests books / a progress bar so peopleadmit they didn't finishAGENT FOLLOW-UPS THAT FOUND DETAILWho can vote, only members? · One book each, or ranked? · What happens on a tie? · Doesthe host vote?Notice: the tie question surfaced here, in the dump. It comes back in stage 3. 2Four shapes of one ideaFeature → user story → requirement →acceptance criteria. Each step is moretestable.A feature is a name ("voting"). A user story says who wantsit and why: "As a ___, I want ___, so that ___". The why iswhat helps an agent make good calls you didn't spell out. Arequirement is one precise, testable statement: "The systemshall…", numbered REQ-001, REQ-002. Acceptance criteria arethe checks that say it's done. You won't write most of theseyourself. Claude drafts them and you review them, so you needto recognise each shape.2 of 3YOU ARE HERE · Plan › Brain dump › Four shapes FEATUREa nameUSER STORYwho + whyREQUIREMENTtestable statementACCEPTANCEthe checks for donemoretestable ▸ Worked example: one idea, four shapeszoom inFEATUREVoting on the next bookUSER STORYAs a book club member, I want to vote on the next book, so that the pick reflects thegroup, not the loudest person.REQUIREMENTREQ-003: The system shall let each member cast one ranked ballot per round while the hosthas the round open.ACCEPTANCE CRITERIA✓ member votes in an open round → ballot saved, confirmation shown✓ round is closed → vote button disabled, "voting closed" shown✓ non-member tries to vote → refusedThe "so that" clause is why the agent won't build a host-only poll. 3Defer, don't forgetAgents unblock years of ideas at once.The roadmap is where they wait.When agents suddenly make building cheap, every idea you'veshelved comes back at once. Liz calls this "task diarrhea".The cure isn't to forget the ideas. Write them all down, thensend most of them to a later phase or the backlog. Start oneproject. Finish Phase 1 before you add features. The agentskeep working while you sleep, so you don't have to watchthem. If you have ADHD, give each agent role its own terminal(and a colour) so the terminal holds the context instead ofyour head.3 of 3YOU ARE HERE · Plan › Brain dump › Defer every idea, all at oncePHASE 1BACKLOGnow, one projectkept, not lost ▸ Signs you're in it, and the healthy patternzoom inSIGNS (Workshop 1)✗ haven't eaten in 6 hours ✗ skipped plans to code ✗ started 3 projects before finishing 1✗ can't stop thinking about "just one more feature" ✗ coding at 2am "because I'm almostdone"HEALTHY✓ start one project ✓ complete Phase 1 before adding features ✓ set work hours and stop✓ use the roadmap to DEFER ideas (not forget them) ✓ this capability isn't going awayBEFORE YOU STARTTell your people you're about to learn fast software development and might gethyperfocused. Decide your work hours in advance. Claude Code works on a phone, so youdon't have to sit at your computer. BENCH · TRY IT ON YOUR AGENT

Which shape is this?

"As a member, I want a reminder the day before we meet, so that I actually finish the book."

Pick one. Every answer explains itself — wrong ones teach the most.
▶ Now yours: take one line from your own brain dump and write it in all four shapes.
YOU ARE HERE · Plan › Brain dump › Bench STAGE 2 · MAKE IT TESTABLERequirementsmetaphor: the blueprintIf you can't say "yes, this is done" or "no, it isn't", you've written a feeling, not a requirement. 1Anatomy of a requirementFive parts: who, does what, when, withinwhat limits, and how we check it.Every solid requirement has five parts, though some can beimplicit. ACTOR: who or what acts ("the system", "an admin").ACTION: the specific behaviour. TRIGGER: when it happens.CONSTRAINT: the limits ("within 200ms", "with bcrypt").ACCEPTANCE: how we'll know it's done. Missing parts are wherean agent guesses. Leave out the method on "userauthentication" and the agent might build OAuth when youwanted email and password.1 of 3YOU ARE HERE · Plan › Requirements › Anatomy ACTORthe systemACTIONlocks the accountTRIGGERafter 5 failed loginsCONSTRAINTfor 15 minutesACCEPTANCEverified by E2E test ▸ Bad → better → best (Workshop 1)zoom inBADUser authentication — how? what triggers it? what security standard?BETTERThe system shall authenticate users via email/password. — no success/failure behaviourBESTREQ-001: The system shall authenticate users via email/password with bcrypt hashing (costfactor 12).- valid credentials → session token generated, redirected to dashboard- invalid credentials → error message shown, no redirect- password stored as bcrypt hash, never plaintext- after 5 failed attempts, account locked for 15 minutes- session tokens expire after 24 hoursVerified by: unit tests (token / 401), DB inspection (hashes), E2E lockout test 2You can't make it "good"Swap feelings for numbers: "fast" becomes"p95 under 200ms"."You will should yourself to death in software. There'sinfinity shoulds." You can make a thing redder, faster ormore polished, but you can't make it "good": that's afeeling, and an agent will read it however it likes. Turneach should into a measurable statement, or cut it. Watch thefour kinds as well: FUNCTIONAL (what it does), NON-FUNCTIONAL(how well: speed, uptime, privacy), INTERFACE (how it talksto other systems), DATA (what it stores and for how long).2 of 3YOU ARE HERE · Plan › Requirements › Not 'good' "should be fast"a feelingp95 < 200msa measurementhow to check it:200ms ▸ Measuring "p95 < 200ms" in plain wordszoom inRun 100 requests. Sort them by response time. Look at the 95th one.Under 200ms → done. Over → not done. Nobody has to decide whether it "feels fast".FOUR KINDS, ONE LINE EACH (Workshop 1)FUNCTIONAL The system shall export data to CSV format.NON-FUNCTIONAL The system shall handle 1000 concurrent users.INTERFACE The system shall integrate with Stripe for payment processing.DATA The system shall support up to 10MB file uploads per transaction.Beginners skip non-functional requirements most often, and they're the ones a reviewercatches. 3Edges & right sizeWrite the failure cases now, or the agentbuilds only the happy path.Agents build exactly what you describe. Describe only thehappy path and you get only the happy path, then you spendyour week on "what if the file is 50MB?". Put the failuremodes in the acceptance criteria. Size matters too. "Usermanagement" is too broad: create? delete? roles? "A bluebutton at (100,200) in Arial 14" is too narrow, becauseyou're doing the agent's job. Aim for the right size: onefocused piece of work that fits in a single reviewable pullrequest.3 of 3YOU ARE HERE · Plan › Requirements › Edges just righttoo broad: "user management"too narrow: pixel coordinates50MB file.exe fileupload failsno picture yet ▸ REQ-015 with its edge cases (Workshop 1)zoom inREQ-015: Profile Picture UploadThe system shall allow users to upload profile pictures.Acceptance Criteria:- Supported formats: JPEG, PNG, GIF- Max file size: 5MB- Automatic resize to 400x400px, maintain aspect ratio- If file too large → error message with size limit- If unsupported format → error message with supported formats- If upload fails → show error, preserve old picture- If no picture uploaded → show default avatarWithout the last five lines, the agent ships the happy path and you find the rest inproduction. BENCH · TRY IT ON YOUR AGENT

Which one could an agent prove it finished?

Four lines from a real first-draft requirements file. Pick the one that's already a good requirement.

Pick one. Every answer explains itself — wrong ones teach the most.
▶ Now yours: find the vaguest line in your requirements.md and give it a number someone could measure.
YOU ARE HERE · Plan › Requirements › Bench STAGE 3 · BREAK THE SPEC FIRSTAdversarial reviewmetaphor: the inspectorA second agent tries to break the spec before the code does. Bugs are cheapest to fix while they're still sentences. 1Writer ≠ reviewerThe agent that wrote the spec can't seeits own gaps. Use a fresh one.An agent that just wrote a document is primed by its ownreasoning. It reads what it meant, not what it wrote. So thereview is a separate agent with a fresh context, a rubric,and an adversarial brief: "find what would make an agentbuild the wrong thing". It returns gaps, you or the authorrevise, and you loop until nothing blocking is left. Thenit's ready for agents. The Requirements Reviewer agent inthis course does this job.1 of 3YOU ARE HERE · Plan › Review › Loop DRAFTrequirements.mdREVIEWERfresh context + rubricGAPSwhat would go wrongREADYfor agentsreviseno blockers ▸ What a review actually returnszoom inRequirements Reviewer (from the agent's own example)✓ Introduction: clear project purpose✓ User Stories: 3 stories covering login, registration, password reset⚠ Non-Functional Requirements: Missing- No password complexity requirements stated- No session timeout specified- No rate limiting defined⚠ Testing Requirements: Incomplete- No acceptance criteria for 'remember me' feature- Edge case not covered: what happens if email service is down?Every ⚠ is a decision the coding agent would otherwise have made silently. 2The 14-point rubricA checklist turns "looks fine" into"section 5 is empty".Ask a reviewer "is this good?" and you get compliments. Handit a rubric and you get a gap list. The Requirements Reviewerchecks 14 sections. Beginners usually leave the same onesempty: non-functional requirements, testing, deployment(including how to roll back), maintenance, and risks &assumptions. Two sections are optional for small projects.You don't need all 14 for a weekend app, but you shoulddecide on purpose which ones to skip.2 of 3YOU ARE HERE · Plan › Review › Rubric 1. Introduction2. System goals3. User stories4. Functional5. Non-functional6. Technical spec7. Design8. Testing9. Deployment10. Maintenance11. Milestones*12. Budget*13. Risks & assumptions14. Appendicesred = often left empty · * optional ▸ What the weak sections catch: book clubzoom in5 NON-FUNCTIONALIs the ballot secret? Can the host see who voted for what?8 TESTINGThere are no acceptance criteria for a tie. What does the result screen show?9 DEPLOYMENTIf a release breaks voting mid-round, how do we roll back, and do ballots survive?10 MAINTENANCEWho notices when the reminder emails stop sending?13 RISKS & ASSUMPTIONSWe assumed every member has an email address. One doesn't.None of these show up in a demo. All of them show up in week two. 3Stamps of rejectionFour anti-patterns to reject on sight,plus a naming trap.1. SOLUTION IN DISGUISE: "use React" isn't a need. 2. VAGUEQUALIFIER: "user-friendly" means nothing to an agent. 3.SEVERAL IN ONE: you can't track a requirement that's partlydone. 4. NO ACCEPTANCE CRITERIA: the agent marks it done andyou can't check. One more from Liz's experience: name theplanning agent a Project Manager, Business Analyst or ValueChain Expert, not a "Product Manager". In her experience thatname gives worse roadmaps, and she says she doesn't know why.3 of 3YOU ARE HERE · Plan › Review › Anti-patterns SOLUTION IN DISGUISEVAGUE QUALIFIERSEVERAL IN ONENO ACCEPTANCE ▸ Inspector's report on the book club's REQ-003zoom inREQ-003: The system shall let each member cast one ranked ballot per round while the hosthas the round open.FOUND⚠ Tie-break rule unstated. Two books with equal points: who wins?⚠ "Ranked" is undefined. Rank all candidates, or a top 3?⚠ Voting twice: does the second ballot replace the first or get rejected?⚠ The host never closes the round: does it stay open forever?⚠ Non-functional: is the ballot secret from the host?FIXED+ Members rank their top 3. Ties are broken by most first-choice votes, then by the host.+ A second ballot replaces the first while the round is open. The round closes itself atmeeting time. BENCH · TRY IT ON YOUR AGENT

Your review came back: "Looks great! 👍"

You asked an agent to review your requirements.md. That's the whole reply. What next?

Pick one. Every answer explains itself — wrong ones teach the most.
▶ Now yours: run the Requirements Reviewer on your requirements.md. Which section number came back weakest?
YOU ARE HERE · Plan › Review › Bench STAGE 4 · WEIGH ITValue & prioritymetaphor: the scalesEverything on the list should exist eventually. The scale decides what exists first. 1What job is it hired for?Jobs To Be Done + Kano: is it expected,better-is-better, or a delight?The Value Chain Expert agent starts by asking what job theuser is hiring this feature to do. Then it sorts the featurewith the Kano model. BASIC: users expect it, and they noticewhen it's missing. PERFORMANCE: more is better (faster,bigger). DELIGHTER: unexpected, and creates a wow. Basicscome first, because a delighter on top of a missing basicdoesn't delight anyone. Ask for this analysis by name, sincethe agent knows these frameworks.1 of 3YOU ARE HERE · Plan › Value › Kano BASICvote, see resultPERFORMANCEreminders,threadsDELIGHTERAI suggestionsmissing → angry more → happier present → wowbuild left to right ▸ The agent's own worked example: PDF exportzoom inValue Chain Expert, "Evaluate: Add export to PDF for reports"Job To Be Done: "When presenting to executives, users need professional-looking reportsthey can share offline"Kano Category: Basic Expectation (users expect export in reporting tools)VRIO: Valuable ✓ Rare ✗ (all competitors have it) → Competitive ParityRecommendation: table stakes, so lacking it hurts more than having it helps.BOOK CLUBJob: "When we can't agree, we need a fair pick so the meeting isn't an argument."Voting = BASIC (it's the whole app). Reminders = PERFORMANCE. AI suggestions = DELIGHTER. 2RICE: a number to argue with(Reach × Impact × Confidence) ÷ Effort.The score is less useful than theargument it forces.RICE turns "I feel like this matters" into four separateguesses you can challenge one at a time. REACH: how manypeople it touches. IMPACT: how much it helps each of them(0.25 to 3). CONFIDENCE: how sure you are (0–100%). EFFORT:how big it is, relative to everything else on the list. Thenumber won't be precise. Its use is that when two peopledisagree, you can see which of the four guesses they disagreeon.2 of 3YOU ARE HERE · Plan › Value › RICE RReach×IImpact×CConfidenceEEffort ▸ Two features, two scoreszoom inPDF EXPORTReach 1000 × Impact 0.25 × Confidence 0.9 ÷ Effort 0.5 = 450REAL-TIME COLLABORATIONReach 500 × Impact 2 × Confidence 0.7 ÷ Effort 3 = 233READ ITCollaboration helps each user far more (2 vs 0.25), but it's six times the effort and lesscertain.PDF export wins first because it's small and sure, not because it matters more.The agent's comparison still calls collaboration the competitive ADVANTAGE, so it goes inthe plan, later.Effort here is relative size. Compare items against each other; don't treat it as apromise. 3Value × complexity → phaseThe 2×2 that turns scores into a roadmap.The Business Value Analyst prompt from Workshop 1 scoresevery requirement 1–10 for value and 1–10 for complexity,then sorts it. High value and low complexity: Phase 1. Highvalue and high complexity: Phase 2, done carefully. Low valueand low complexity: Phase 3, if you get to it. Low value andhigh complexity: the backlog, maybe never. Don't front-loadthe hard things. Put a simple working version in Phase 1 andimprove it later, so you have working software early.3 of 3YOU ARE HERE · Plan › Value › Matrix value ↑complexity →PHASE 1do firstPHASE 2do carefullyPHASE 3if timeBACKLOGmaybe nevervoteresultsremindersthreadsGoodreadsAI picks ▸ The prompt that fills the matrixzoom inYou are a Business Value Analyst helping prioritize features for an MVP.Review the requirements.md file and create a priorities.md file that includes:1. Business Value Score (1-10) for each requirement2. Implementation Complexity (1-10)3. Risk Assessment — what could go wrong? blast radius if it fails?4. Priority Matrix- High value + low complexity = Phase 1 (do first)- High value + high complexity = Phase 2 (do carefully)- Low value + low complexity = Phase 3 (do if time)- Low value + high complexity = Backlog (maybe never)Save this as priorities.md BENCH · TRY IT ON YOUR AGENT

Where does the AI book recommender go?

The book club app can't run a vote yet. A member is excited about an AI that suggests the next book. Where does it go?

Pick one. Every answer explains itself — wrong ones teach the most.
▶ Now yours: put your three most exciting ideas on the 2×2. How many are actually Phase 1?
YOU ARE HERE · Plan › Value › Bench STAGE 5 · ORDER + PARALLELRoadmapmetaphor: the railwayDependencies decide the order. Batches decide what runs at the same time. The Project Manager agent keeps the timetable. 1Fast waterfallPlan the whole phase, build it inparallel, review the phase. Then do thenext one.Traditional Agile plans one small slice at a time becauseeach slice used to be expensive to build. With agents,building is cheap and unclear requirements are expensive. Sothe course uses "fast waterfall": define a whole phase upfront (quickly), build its pieces in parallel, review thephase, then plan the next. Phase 1 is the MVP, the minimumthat works. Phase 2 is what users expect. Phase 3 is polish.Liz's framing: "build the factory, not the thing." Yourrequirements and prompts are the factory, and the code iswhat it produces.1 of 3YOU ARE HERE · Plan › Roadmap › Phases PHASE 1MVPPHASE 2launchPHASE 3polishBACKLOGlatereach step: plan it all → build in parallel → review ▸ The book club's roadmap.mdzoom inPHASE 1 — MVP (nothing works without these)REQ-001 Member accounts + invite link REQ-002 Host opens/closes a roundREQ-003 Ranked ballot (top 3) REQ-004 Results with tie-breakSuccess: a real club picks a real book with it.PHASE 2 — what members expect [depends on Phase 1]REQ-010 Reminder before the meeting REQ-011 Chapter discussion threadsPHASE 3 — polish [depends on Phase 2]REQ-020 Goodreads shelf import REQ-021 Reading progress barBACKLOGAI book suggestions (see stage 4 bench) 2Dependencies → batchesDraw what blocks what. Everything in abatch can run in parallel.You can't build "reset password" before "login" exists. Markeach requirement's dependencies ([depends on REQ-001]), andthe graph sorts itself into batches. Every requirement in abatch has its dependencies done, so one agent per requirementcan run at the same time. Before you start parallel agents,define the interfaces: API contracts, function signatures,data schemas. Otherwise two agents each guess the other'shalf and the merge fails.2 of 3YOU ARE HERE · Plan › Roadmap › Dependencies BATCH 1REQ-001registerBATCH 2REQ-002verify emailREQ-003loginBATCH 3REQ-004reset pw ▸ Dependencies written down (Workshop 1)zoom inREQ-001: User RegistrationREQ-002: Email Verification [depends on REQ-001]REQ-003: Login [depends on REQ-001]REQ-004: Password Reset [depends on REQ-001, REQ-002]WHY IT MATTERSOnce REQ-001 is in, REQ-002 and REQ-003 can run as two agents at once. REQ-004 waits forboth.INTERFACE FIRST (Mistake 7)Before batch 2 starts, write down the contract both agents share, for example:POST /auth/login {email, password} → 200 {token} | 401 {error}users table: id, email, password_hash, verified_atWithout it, each agent invents its own version and the merge breaks. 3The Project Manager agentPlan → dispatch → track → archive. Yourdiscipline system.The Project Manager agent turns specs into a roadmap ofsingle-PR-sized phases grouped into parallel batches. Ithands each worker agent a dispatch packet: goal, tasks, thefiles it will touch, constraints, and concrete completioncriteria. It updates checkboxes, flags blockers, and spotswork that's newly unblocked. It also moves finished work toan archive so the live roadmap stays short. As the human,watch the roadmap, not every line of code. In Liz's words:"I, as the CTO, mostly just care about the roadmap."3 of 3YOU ARE HERE · Plan › Roadmap › Project Manager PLANDISPATCHTRACKARCHIVEnot startedin progresscompleteblocked ▸ plans/roadmap.md, live (Project Manager format)zoom in## Batch 1: Foundation⚪ REQ-001: Database schema setupTasks: [ ] users table [ ] projects table [ ] migrationsFiles: src/db/schema.sql, migrations/ Effort: SCompletion: All tables created, migrations tested🟡 REQ-002: User model implementation Agent: RoyTasks: [x] Define User class [ ] validation [ ] unit tests## Batch 2: Authentication (Depends: REQ-001, REQ-002)🔴 REQ-004: Password reset flowBlocked by: Email service (external dependency)Sizes are S or M only. Anything bigger gets broken down before it's dispatched. BENCH · TRY IT ON YOUR AGENT

REQ-001 just merged. What can start now?

Graph: 002 and 003 depend on 001. 004 depends on 001 and 002. You have three idle agents.

Pick one. Every answer explains itself — wrong ones teach the most.
▶ Now yours: mark [depends on …] on every requirement in your roadmap. What's in your batch 1?
YOU ARE HERE · Plan › Roadmap › Bench STAGE 6 · WHAT THE AGENT READSSpec = contextmetaphor: the logbookThe conversation gets deleted. The spec stays. Every agent session starts by reading it. 1Why the plan is the contextAgents start blank. Whatever isn't in afile doesn't exist for them."Anytime you have a conversation with Claude, imagine it'sgoing to get deleted. Because it will." Each new session, andeach parallel worker, starts with no memory of your chat. Itknows only what it reads: the repo, CLAUDE.md, the roadmap,the proposal it was given. That's why every step on this mapwrites a file (requirements.md, priorities.md, roadmap.md).The plan is how you hand your intent to an agent that wasn'tin the room.1 of 3YOU ARE HERE · Plan › Spec › Context SPECin the reposession 1session 2worker Bchat evaporates ▸ Dispatch packet: what the REQ-003 worker readszoom inGOALMembers can cast a ranked top-3 ballot in an open round.TASKS[ ] ballots table [ ] POST /rounds/:id/ballot [ ] ballot form [ ] tests per criterionFILESsrc/models/ballot.py, src/api/rounds.py, web/BallotForm.tsx, tests/test_ballot.pyCONSTRAINTSBallot is secret from the host. Don't touch auth (REQ-001 owns it). Contract:openspec/changes/add-book-voting/design.mdDONE WHENEvery scenario in specs/voting/spec.md has a passing test, including: voting twice, closedround, non-member, tie.Everything the inspector found in stage 3 is now in the packet. The worker can't miss it. 2OpenSpec: specs that live in the repospecs/ is the truth. changes/ holdsproposals. Draft → review → implement →archive.OpenSpec is an open-source CLI for spec-driven development,and it works with Claude Code, Cursor and other assistants.openspec/specs/ holds the current truth about the system.openspec/changes/ holds proposals. Each change is a folder:proposal.md (why), tasks.md (the checklist), design.md(technical decisions), and spec deltas marked ADDED /MODIFIED / REMOVED. When it ships, the change is archived andits deltas merge into specs/. Already have a codebase? AskClaude: "Can you onboard this repository into OpenSpec?"2 of 3YOU ARE HERE · Plan › Spec › OpenSpec openspec/└ specs/└ voting/spec.md└ changes/└ add-book-voting/└ proposal.md└ tasks.md└ design.md└ specs/voting/spec.md ΔDRAFTREVIEWIMPLEMENTARCHIVE ▸ Spec delta: changes/add-book-voting/zoom in## ADDED Requirements### Requirement: Ranked ballotEach member SHALL rank up to 3 candidate books while the round is open.#### Scenario: member votes twice- WHEN a member submits a second ballot in an open round- THEN the second ballot replaces the first#### Scenario: round closed- WHEN a member opens a closed round- THEN the vote form is disabled and "voting closed" is shown#### Scenario: tie- WHEN two books have equal points THEN most first-choice votes wins; if still tied, thehost decidesEach Scenario is an acceptance criterion an agent can turn directly into a test. 3What "done" meansDone = every acceptance criterion isverified. Not "the agent said so".Without acceptance criteria, "done" is a matter of opinion,and an agent will happily say "all done!". With them, done ischeckable. Each criterion becomes a test. The tests run inCI. The issue or pull request links back to the requirementnumber. Then a reviewer, human or agent, checks the evidence:test names matching the criteria, a screenshot of the failurecase, not just the happy path. This is the last step ofplanning and the first step of shipping. The other maps pickit up from here.3 of 3YOU ARE HERE · Plan › Spec › Done criteriontestCI greenevidence☑ votes twice → replaces☑ closed round → disabled☑ non-member → refused☐ tie → first-choice rule3 of 4: NOT done ▸ The GitHub issue an agent works fromzoom inTitle: REQ-003 Ranked ballot (top 3) Labels: phase-1, batch-3Spec: openspec/changes/add-book-voting/Acceptance criteria- [ ] Member votes in an open round → ballot saved, confirmation shown- [ ] Second ballot in an open round replaces the first- [ ] Closed round → form disabled, "voting closed"- [ ] Non-member → 403- [ ] Tie → most first-choice votes wins, then host decidesVerified by: one test per box (named after it) + screenshot of the closed-round stateThe PR is mergeable when every box is checked AND has evidence. That's the definition ofdone. BENCH · TRY IT ON YOUR AGENT

The agent says: "REQ-003 is done ✅"

Which evidence would actually let you close the issue?

Pick one. Every answer explains itself — wrong ones teach the most.
▶ Now yours: open one of your issues. Could a stranger tell from it alone when the work is done?
YOU ARE HERE · Plan › Spec › Bench Brain dumpTHE QUARRYRequirementsTHE BLUEPRINTAdversarial reviewTHE INSPECTORValue & priorityTHE SCALESRoadmapTHE RAILWAYSpec = contextTHE LOGBOOK
Course ↗
0 / 0

Explore

Click anything to zoom into it · scroll to zoom · drag to pan
Esc zoom out one level · Home whole atlas
1–4 jump to a quadrant · / search

Tour

→ / space next stop · ← previous
The tour visits every district and framework in teaching order.

Teach

N presenter notes for whatever you're looking at · F fullscreen
Every view has its own link — copy the URL to send someone straight to it.

Reading the map

The whole atlas is one safety case. The top goal is “this agent is fit to deploy”; each quadrant is one leg of the argument; each district is a family of tools for that leg. Small text appears as you zoom in. Some tiles have controls you can click.
Click anything to zoom in · scroll to zoom · Esc to back out · → for the guided tour