Agentic Engineering
AI agent autonomy levels, and how we work
Agents write most of our code. People set the goal, design the checks, and decide. This page shows which level of autonomy we work at, the tools we use today, and how a change gets reviewed.
The autonomy ladder
Six levels describe how much you hand to the AI. Each one answers one question: who approves what? Higher is not better. It means the checks around the AI matter more.
- L5
Dark factory
You set guardrails and agents run on their own. We do not work here.
- L4
Agent team Where we work
Agents run whole flows of work. You audit the results and the checks, not every change.
- L3
Delegated agent Where we work
An agent takes a whole task. You own the change.
- L2
Conversational
You work through a chat with the AI. You approve each change it proposes.
- L1
Assistive
The AI suggests. You decide everything.
- L0
No AI
You do all the work yourself.
We work at L3 or L4, depending on the client.
Why it depends: in Steve Haupt's ladder, teams often reach L3 on their own, while L4 takes decisions beyond the team. Which level fits depends on the client. We never claim L5.
Credit: the level names on this page are adapted from Steve Haupt's AISoLA 2026 talk (opens in a new tab), which builds on ASDLC and Swarmia. The idea of numbered autonomy levels for AI coding goes back to at least 2023 (Sourcegraph (opens in a new tab)), and the dark factory label was popularised by Dan Shapiro (opens in a new tab) in January 2026. Haupt calls his ladder a working tool, not validated. The level descriptions on this page are our own words.
Our setup, as of November 2026
This is what we use today. It changes, so we date it.
- Claude Code writes most of our code.
- By default, a model from another family reviews that code. Today that means Codex on Claude-written work, with GLM 5.3 (run through melious) as the standing second reviewer.
- Some changes are written by Codex. Then a model from another family reviews those too.
- Kimi K3.1 (run through ollama) reviews only when Daniel asks, once per change.
The aim is simple: the model that wrote a change does not grade its own work. See who checks the AI for how a review runs and what it found.
Before we build
We start with a plan, not with code. Building starts after these steps:
- A written plan. What we build, why, how, and how we will test it.
- Architecture decisions, for anything new that connects several parts. When a new piece has to work with a backend, a new sign-in flow and AI access, we decide how the parts fit together before we build. We write each decision down with its reasons, and the plan review challenges it. The fit between parts is usually the costliest thing to change later. A small change inside one part needs no such step.
- A plan review. Reviewers read the plan, round after round, until none of them finds a blocking problem.
- A red team, for risky work. Risky means user data, logins or permissions, money, deletion, a schema change or our servers. One reviewer is told to attack the plan, not check it: how it fails, how it could be misused, how it could lose data, and whether we can roll it back. Example: the plan for a background job that caches user data. The red team found 3 bugs and 1 risk, and we fixed all four before building.
- Requirements, sometimes. When a change is more complicated, we write down what it must do as concrete scenarios: given this, when that happens, then this. Anyone can check a scenario against the product. A small fix does not need them.
- A test plan, with CI and automated testing. We automate tests and run them in CI as far as we can. On real iOS and Android devices we still test by hand.
- Evals, for tasks where an AI agent does the work. We write them before we build: a set of tasks, a way to grade the answers and the result we accept. See how we write evals.
Then building starts.
In plain English
- Red team: a reviewer who plays the attacker and tries to break the plan before anyone builds it.
- CI (continuous integration): a computer automatically runs our automated checks on changes to the code, so a problem shows up early.
- Automated testing: small programs that check the product does what it should, so nobody has to click through everything by hand each time.
- Manual testing on real devices: some problems only show up on a real phone.
- Eval: a repeatable test of what an AI model produces.
Review by risk
How much review a change gets depends on what it can break. We call this risk-tiered review with escalation. These are the defaults:
- A small change that touches only wording, tests, docs or presentation: one reviewer. Example: a README rewrite in our open-source Croftweaver toolkit, pull request #355 (opens in a new tab). Codex alone reviewed it in three rounds. It raised one bug in round 1 and the same bug in round 3. The code answered it both times.
- Ordinary code: two reviewers from different providers. Example: the footer link to the Croftweaver home page on every page. Codex and GLM 5.3 reviewed it in three rounds and found nothing to fix.
- Deployment, security, data or privacy text: a deeper pass. Example: our privacy statement. Three reviewers read it in each of three rounds, and every round found something to fix.
Fallbacks exist. When the second reviewer's service has no balance, Codex alone reviews the change, and the trail says so. That is a thinner review than the default. A tool can fail, so a failed review never counts as a review. The review trails live in our private repository.
In the loop and on the loop
You may have heard "human in the loop". There are two ways to be in it.
- In the loop: a person approves each step.
- On the loop: a person sets the goal and the checks, and steps in by exception.
At L2 you are in the loop. At L3 and L4 you are on it: you own the change or audit the result, and you step in where the risk calls for it.
We are not alone in this split. Anthropic's own Code Review for Claude Code (opens in a new tab) ranks bugs by severity and does not approve pull requests. That stays a human decision.
Three ways to build with AI
Vibe coding, AI-assisted work and agentic engineering are not the same thing. The difference is who drives each step.
- Vibe coding: you describe what you want and accept what the AI produces, with little review of the code.
- AI-assisted: a person drives each step and the AI suggests.
- Agentic engineering: agents take whole tasks, and the engineer sets the goal and checks the result.
| What differs | Vibe coding | AI-assisted | Agentic engineering (how we build) |
|---|---|---|---|
| Who drives each step | You prompt and accept the result. | A person drives each step. | The agent takes a whole task. The engineer sets the goal. |
| What the AI does | Writes the code. | Suggests. | Takes whole tasks inside checks that engineers design. |
| Who checks the result | Often a quick look to see that it runs. | The person, as they go. | Tests and review gates first, then an engineer where the risk calls for it. |
| Where it fits | Prototypes and experiments. | Work where one person wants to approve every change. | Production software with tests, review and clear ownership. |
The three definitions follow Snowman Labs (opens in a new tab). The rows are our own summary. For the full comparison with vibe coding, see agentic engineering.
Frequently asked questions
How do I tell which autonomy level my team works at?
Look at one kind of work at a time. Most teams work at more than one level: a developer may chat with the AI at L2 on a tricky fix and hand a whole task to an agent at L3. So name a level for each kind of work, not one for the team.
Why do you not work at L5?
At L5 no person checks a change before it ships. For software that handles user data, logins or payments, a named person has to answer for each change. We keep that person.
Is code written by AI agents safe to ship?
It is as safe as the checks it passes, like code a person writes. The difference is volume: in our work, agents write more code than we could read line by line. So the plan, the tests and the review gates carry more of the weight.
Related reading
Who checks the AI's work?, our delivery process, and a production-readiness audit if you want an independent look at an AI-built app.