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.
Key takeaways
- The board shows each feature's ten steps, every state as an icon, a colour and a word, read from files and never written.
- The platform × type matrix shows what nobody has tested and marks inferred cells.
- The Agents tab lists the Claude Code chats and subagents that recently worked on the project, with their task and last action, read from Claude Code's own session files.
- The report's overall verdict is derived from its gate rows, and npm run qa:lint rejects a report that disagrees with them.
- The dev deploy gate waits for a passing report dated after the shipped commit's G8 run, a GO sign-off, or a named human's written waiver.
Contents
FAQ
Where does the Agents tab get its data?
From Claude Code's own session transcripts on your machine, read-only, filtered to the project you have open and to recent activity. It shows each chat and the subagents it spawned.
How does stlc connect to the development pipeline?
The dev bundle writes qa-handoff.md at release and QA starts from it, keeping its requirement ids. QA's report verdict gates the dev deploy step, and escaped production bugs come back through /qa-escape.
Sources
Only you and the owner see your answer and rating. Send private feedback
Enjoyed it? Support fx-blog with a coffee.
Related posts
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.
A QA Pipeline Your AI Agent Can't Fake
Forty green AI-written tests shipped a bug and nobody could say what they proved. Five questions to ask any AI test pipeline, and the route stlc takes from docs to a verdict, where a feature's state is computed from the files each step wrote.
Comments
Oldest firstNo comments yet. Start the conversation.
Part 3 left orders checkout with two red tests, two quarantined cases (one expired), two open defects, and all of it in files that no one can see at a glance. Ask "may it ship?" in a chat and you get a feeling. Open the board on that exact state instead, then follow the verdict to the deploy gate.
This series, in four parts:
The board shows where checkout stands
STLC: Open Board puts the feature, a ring of cases passed and ten steps from knowledge to sign-off in one tab.
For checkout it reads 6 of 12 passed, 2 failing, 2 blocked, 2 not run, with 2 open defects and 2 quarantined cases, one expired. Under it sit a platform × type matrix of what nobody has tested, and an Agents tab listing the Claude Code chats and subagents that recently worked on the project, with their task and last action.
The verdict is computed, not written
Run
/qa-report orderson this state and the report's front matter is what the deploy step reads. The sample below is what the rules produce for checkout; the fixture holds no orders report yet.The agent does not fill in
overall. The Quality gates table has one row per gate with a target, the actual value, a verdict and the evidence.overallisfailif any row fails,not evaluableif any row cannot be judged, andpassonly otherwise.npm run qa:lintrejects a report that disagrees with its rows.For checkout, the Functional row (target: 0 failing P0/P1 cases) fails:
TC-E2E-ORDERS-001(P0) andTC-INT-ORDERS-001(P1) are red. However confident the summary, the row decides.What it takes to ship checkout
The dev bundle's deploy gate, G10, stays blocked until one of three things holds:
overall: passand is dated after the shipped commit's G8 run.GO.Checkout meets none today. The empty-list defect needs a fix and a passing run. The uat seed needs the tax migration. The rounding defect needs its three-line unit case to pass, and then a new report must derive
pass. A waiver carries a name, so someone owns that decision.Checkout ships when a report newer than the G8 run says
overall: pass, and lint makes sure the rows agree.Try it
Read this with your AI