The gates have both deterministic and stochastic (LLM as a judge) components. The blend depends on the artifact: prose leans heavily on LLMs, where code has a lot of tests.
I work by having a discussion with claude code about what I'm trying to do and how it might be built. I ask it how its proposal fits into the existing bounded contexts and if it is reusing the existing patterns and libraries. Once it can give me an approach I like, I have it create a plan. This uses a skill and it has guidance on the structure and contents of the plan.
It is mostly prose, so the deterministic checks just look for the sections in the correct order. The LLM reviewer is a different model entirely to avoid bias and it is agentic, so it can (and does) explore the code and is prompted to verify the plan is correct both in the abstract and in the context of the code.
Once approved, it moves to breaking the plan into one or "releases" which are batches of tasks. Another gate, then to coding, which is where it fans out to multiple implementing agents. Another gate.
As I said, very standard SDLC. I get asked this question a lot, so I wrote it up with a guide on how to do it on the second to last page. https://michael.roth.rocks/research/543-hours
I'm less concerned about the syntax of the code these days and focus more on the overall architecture.
i.e. going on a walk with voice mode and saying "lets walk through all of the tests one-by-one, for each lets review what it does, why we need it, and how it covers something that could actually happen in the real world.