Working means it does the right thing today. Hardened means it keeps doing the right thing after the next change. The development protocol, the QA plan, unit tests versus the full suite versus a human pass, and a senior code review before anything emails a customer.
You built a complete system in a day. Before it starts emailing people on its own, you make it hard to break. Working means it does the right thing when you click it today. Hardened means it keeps doing the right thing after the next change, the next person, and the next thousand leads. The difference is a process, not more code.
AI will test the code is one of the most over-claimed promises in the current hype cycle. AI can test some things very well, cannot test other things at all, and lying to yourself about the difference will ship a bug your customers find before you do. This protocol draws the line and puts a process around it.
Working means it does the right thing when you click it today. Hardened means it keeps doing the right thing after the next change, the next person, and the next thousand leads. The difference is a process, not more code.
"AI will test the code" is one of the most over-claimed promises in the current hype cycle. AI can test some things very well, cannot test other things at all, and lying to yourself about the difference will ship a bug your customers find before you do. The rest of this protocol is the process that puts an honest line around that.
Every change, whether you make it or an agent does, follows the same six moves. Write it into docs/plans/qa-plan.md and point CLAUDE.md at it, and every future build follows it without you asking.
Most testing thinking confuses these three. Once you separate them, every test you ever write fits cleanly into one bucket, and the QA plan is just deciding which bucket each journey goes in.
One document, docs/plans/qa-plan.md, under two pages. It ranks the journeys that must never break by business risk (a lead lands and shows up in People, you log in, you move a contact through the pipeline, an order is recorded, the dashboard matches the database). For each journey it says what a unit test covers, what the suite covers, and what needs a human. It sets the cadence and the test-data rule: tests use synthetic rows only, and clean up after themselves.
CLAUDE.md gets a Testing section that points to it. From then on every agent reads the plan before it builds, and the QA agent tests against it after.
A senior engineer reads every file you shipped. You do not have one on staff, so you name one. The persona is not a gimmick; it tells the model which standards to hold and which to ignore.
You need a system you built and shipped (the CRM from Protocols 07 and 14 is ideal) with QA reviews in docs/qa. You will write the QA plan, get two reviews, and fix the top items on a branch.
Tell the QA agent: "Act as a senior QA lead. Read the product plan and every review in docs/qa. Write docs/plans/qa-plan.md: critical journeys ranked by risk, unit versus end-to-end versus human for each, the development protocol, the cadence, and the synthetic-only test-data rule. Add a Testing section to CLAUDE.md that points to it. Do not write tests yet."
"Act as Andrej Karpathy doing a code review of this repository. Write docs/qa/code-review.md: the five most important problems ranked, dead code, security, web and mobile at 375px and 1440px, speed. Change nothing yet." Read the top five.
"Act as James Bach. Testing is not checking. Walk every critical journey in docs/plans/qa-plan.md on the live site at phone and desktop width, try what a real customer would do wrong, and write docs/qa/qa-review.md." Read what the suite would never have found.
Keep security, mobile breaks, and anything on a critical journey; move the rest to Later. "Fix the kept items on a branch named harden, most important first. Push, open the Vercel preview, follow the QA plan on the preview at both widths, print PASS or FAIL with evidence, fix the FAILs, then merge."
Production URL, your own phone. Submit the form, log in, scroll the dashboard. Nothing sideways, nothing too small to tap. Mark each review item fixed with one line on what changed.
A QA plan every future build follows, two reviews worked through on a branch and merged through the protocol, and a site that works on your phone. Your system now has a way of staying right.
You write the QA plan for your CRM, get a review from Karpathy and a QA pass from Bach, fix the top five on a branch, and open the production URL on your phone. Nothing sideways, nothing too small to tap.