sdlc and stlc: No Passing QA Report, No Deploy
sdlc and stlc meet at one file out and one report back: G9 writes qa-handoff.md with the REQ and AC ids, stlc returns a QA report whose overall verdict is computed from its gate lines, and G10 refuses to deploy without a passing report dated after the shipped commit's G8 run.
Key takeaways
- A release that ships on the developer's word has no proof of what QA checked, against which requirement ids.
- Ask any dev and QA flow four questions: does QA start from the developer's ids, is the handoff one file, is the verdict computed, and what stops a deploy without one.
- G9 writes qa-handoff.md with the REQ table, acceptance criteria and shipped commit; stlc keeps the REQ ids verbatim and writes a report with shipped_sha and overall.
- stlc computes overall from the report's gate lines; G10 refuses to deploy without a passing QA report dated after the shipped commit's G8 run, a GO sign-off, or a named human's written waiver.
- Install with npx agentic-fx@latest install, pick dev and qa, and start one small feature with /sdlc-intake.
Contents
FAQ
What is the difference between sdlc and stlc?
sdlc is the development bundle: it takes a change from a problem statement to production through 12 gates. stlc is the testing bundle: it takes a feature from docs to a QA report and sign-off. They meet at one handoff file and one report verdict.
What does G10 need from stlc before it deploys?
The latest QA report for the slug, dated after the shipped commit's G8 run, with every gate line passing. A release sign-off that says GO, or a named human's written waiver, also unblocks it.
Do sdlc and stlc work with tools other than Claude Code?
No. Both bundles run inside Claude Code only. The files they write are plain Markdown and JSON, so you keep them if you leave, but the commands and reviewers need Claude Code.
Sources
Only you and the owner see your answer and rating. Send private feedback
Enjoyed it? Support fx-blog with a coffee.
Related posts
The QA Board and the Release Gate
"May it ship?" should not be answered in a chat. The stlc board on orders checkout, and a QA release gate: a report verdict derived from its gate rows, rejected by lint if it disagrees, which the dev deploy step reads before checkout ships.
When a Test Goes Red: Triage, the Heal Guard and Quarantine
The cheapest fix for a red AI test is to hide it. On checkout a red test is labelled, not fixed: four triage labels, a heal guard that diffs every fix, quarantine that expires in 30 days, and a defect that closes only on a newer passing run.
Your First stlc Run: Checkout From Docs to Scripts
You cannot tell whether AI-written tests cover the spec. The first stlc run on orders checkout: requirement ids, a traceability table created with zero rows where each column has one writing step, a case review, and ten scripts.
Comments
Oldest firstNo comments yet. Start the conversation.
On Friday the developer's agent says case-search is done. QA's tests sit somewhere else, written against requirements someone retyped. On Monday it deploys, and nobody can say which test proved which requirement.
Two bundles, two files between them
sdlc is the development bundle and stlc the testing bundle. Each takes its own input and writes a named file at every step. They touch at exactly two files: a packet going out, a report coming back.
Four questions to ask of any dev and QA flow
The handoff, step by step
/sdlc-release) writesrelease/case-search/qa-handoff.md: the REQ table (REQ-001, REQ-002, REQ-101), the acceptance criteria, the contract path and the shipped commit. Stops: retyped requirements./qa-analyze case-search release/case-search/qa-handoff.md. It keeps every REQ id verbatim and takes the criteria only a running product can prove, here AC-101 (p95 under 300 ms at 50 requests a second), as its scope./qa-reportwritesreports/case-search/YYYY-MM-DD-report.mdwithshipped_sha, one pass or fail line per quality gate, each with its evidence, andoverall, derived from those lines.qa:linterrors if they disagree. Stops: a typed "pass"./sdlc-deploy) reads the latest report: dated after the shipped commit's G8 run, every gate line passing. Or a sign-off says GO, or a named human waives QA in writing. Stops: a deploy on the developer's word.I carried the commit from stlc's test plan into the report as
shipped_sha, so the report says what QA judged. G10 itself checks a date: the report has to be newer than the shipped commit's G8 run.One run, and where it stops
Say case-search reaches G10 and nobody has run
/qa-report./sdlc-deploy case-searchstops withBLOCKED: "QA has not passed this release; run/qa-analyze case-search release/case-search/qa-handoff.mdthrough/qa-report".A report that exists but fails blocks the same way. In stlc's own fixture, one failing P1 case makes the Functional row
fail, so the report saysoverall: fail.The two series use different sample apps, so each board below is its own.
Try it
Pick dev and qa, fill
DEV-PROFILE.mdandPROJECT-PROFILE.md, and start one small feature with/sdlc-intake. Know the limits:changeorfix, unless it carries a migration or a flag, so the deploy gate is built for larger work.Read this with your AI