Quality
Why our commits get blocked on purpose
There is exactly one place in a Nanostack sprint where you hit a wall on purpose:
$ git commit -m "stripe checkout + webhook" BLOCKED [PHASE-GATE] artifacts required: review, security, qa
The commit waits until the review, security, and QA phases have each saved their artifact, and until those artifacts verify. This reads as friction. It is the opposite: it is all the friction of the process, collected into one checkpoint, so it does not have to live anywhere else.
Someone has to be the process police. It should not be you.
Every team has the rule: nothing merges without review. And every team knows how the rule actually runs: under deadline, review becomes a glance, QA becomes "it worked on my machine", and the exception becomes the habit. Enforcing process on humans is exhausting. Enforcing it on an agent that genuinely does not mind is free, but only if something enforces it, because the agent under context pressure forgets process the same way people under deadline pressure do.
The gate is that something. It is not a reminder, not a checklist item, not a system prompt line. It is a hook on the commit itself.
The gate reads evidence, not intentions
What the gate checks is narrow and mechanical: does a fresh review artifact exist for this work, does the security artifact exist, does the QA artifact exist, and does each one's SHA-256 integrity hold. An artifact edited by hand fails verification. An artifact from last week's sprint does not count as fresh.
Note what the gate does not do: it does not re-review the code, it does not ask the agent whether it feels confident. The thinking already happened in the phases. The gate only refuses to proceed if the records of that thinking are missing or tampered with.
What it changes in practice
With the gate in place, you stop supervising the process and go back to supervising the product. You do not have to remember whether security ran on this branch. If it had not, the commit would not exist. The PR you eventually read carries its evidence with it: review clean, grade A, four QA checks passed.
Where it hard-blocks, and where it cannot
Honesty section: the hard block requires the host to support hooks. Claude Code does, so the gate physically stops the commit there. On other verified agents the same gate runs as guided instructions, which the agent follows but nothing forces. Each adapter file in the repo states which one you are getting. We would rather you know.
Watch the gate fire in the sprint walk → · More on enforcement →