← all talks

← → move · D light/dark · . blank

A talk about implementing AI in an engineering org

Everybody Wants the Agent

Somebody has to build the floor.


Tjakoen Stolk · development manager, technical lead

The thing we all actually want

An agent that opens pull requests while you sleep.

I want it too. It is the most interesting thing to happen to this job in my career.

And now the part nobody puts on a slide

Almost nobody wants to build the thing underneath it.

Unglamorous. Takes a quarter. Mostly consists of making a codebase legible to a machine that has never met you.

DORA, roughly five thousand technology professionals

AI amplifies whatever an organization already is.

Strong engineering organizations get faster. Weak ones fail faster.

Faros AI · two years, 22,000 developers, 4,000 teams

Generation is elastic. Review is not.

What high AI adoption bought, and what it cost the gains Epics per developer +66% Task throughput +34% the bill Bugs per developer +54% Incidents per pull request +243% Median time in review +442% Code churn rose 861%, which is off this scale entirely.

So here is the thing I would name

The substrate gap

The distance between what your tools can do and what your codebase can absorb.


The models are the same for everyone. This part is not.

There is a word for the thing you build

A harness.

The scaffolding that decides what a model sees, what it may touch, and who checks the result.

Not the editor you work in. That one you buy. This one you build, and it is the one that decides your outcome.

The reference everybody points at

A thousand pull requests a week, no human-written code.

Running on standardized environments, dense internal docs and large test suites, built for humans, over years, before agents existed.

Five stages. Eighteen months.

Five stages over eighteen months. Instrument and make one repository legible, months 0 to 2. Extract skills and run them by hand, 1 to 5. Daily use with scored outcomes, 3 to 9. The same skills fired by triggers, 6 to 12. Chained unattended loops, 10 to 18. Each stage opens on scored runs behind it rather than on the date.

The spine of the whole roadmap

A skill is written once, and then promoted.

You never build a second system. There is never a migration project.

And here is the whole thing that artifact belongs to

Three layers. All of them files.

One. What it knows before it starts Cross-tool: the same rules at the repository root, read by every other agent too. Two. What it knows how to do Three. What it can reach, and what stops it Rules Context Skills Subagents MCP Hooks Code graph All of it is files, committed and reviewed like code. in context every session the stack and the conventions short, and a router loaded when it is relevant architecture, API contracts pulled by rule or by a skill one line always in context the body loads when it runs invoked by you or by the agent their own context window delegated to by a skill parallel, to cut wall clock the tracker the spec pages the forge fire on edit, commit format, lint, block never the model's choice where a symbol is what calls what one query, not a grep

One epic, walked twice, the same model doing the typing

Repair after. Or specification before.

One epic walked twice, five stops each time, the same model doing the typing. Without a layer, two stops are cut by hand up front and two come back as repairs after the code exists. With one, the same two stops are cut by a skill, the gate runs before the pull request, and the only thing left for a person is one spot-check.

And here is where almost everybody goes wrong

Everybody builds the coder first.

It is the one you are least equipped to supervise on day one.

So build them in this order instead

Supervision first. Coder last.

Five skills in build order. Plan turns a ticket into a testable spec. Code review checks a diff against house standards. Docs catch drift on merge. QA writes tests to house convention. The coder comes last, and only once the four above can catch it being wrong.

Read the order downwards and it is one sentence

Each of the first four builds a piece of the supervision the fifth one needs.

Get those four good enough to defend in a code review, and the coder becomes an ordinary engineering problem.

Weeks, not months. No procurement conversation.

Mark every agent-authored change. This week.

It is the join key for every comparison worth making, and it cannot be backfilled.

Six months in, the question you can finally answer

Is agent-authored change failure rate worse than human-authored?

Six months of marked changes is what makes that computable. Nothing else you report will land as hard.

A year in

Two or three loops, running on the most boring work you have.

Notice that none of them demo well. That is the selection criterion, not an apology.

This is the stage everybody skips, because it has no demo

A skill nobody scored cannot be promoted.

Three skills against three different bars. Release notes graduate on a handful of scored runs because a wrong one is embarrassing. Review comments need more, because a wrong one wastes an engineer an hour. A skill that opens pull requests against production needs far more again, because a wrong one is an incident. The bars are illustrative; that they differ, and that all three are agreed before the runs start, is not.

One distinction, if I could only teach you one

An instruction is a request. A hook is enforcement.

They feel identical when you write them. They are not remotely the same object.

Ten sessions, one written rule

An instruction is a request.

Six sessions honoured the rule. Four did not, and nothing said so. Under a hook the same four never land the write at all.

Before an agent takes a task unattended

Do not ask the model whether it can do it.

Models are badly calibrated about their own capability. They will say yes.

Two boxes cost tokens.

A trigger fires, a disposable sandbox is provisioned, a model implements the change, then plain code lints and tests it. On a failure a model gets a capped number of attempts and returns to the tests. On success a pull request is opened and a human reviews it, which is never skipped. Only the implement and fix nodes call a model.

The rule that decides whether any of this is safe

Contain at the environment boundary, not the action boundary.

Approval-prompt safety is neither safe nor fast. It trains people to click yes without reading.

Now the part I am most qualified to talk about

A broken check and a clean input produce identical output.

Silence.

I have shipped several of these. A column index off by one. A pipeline signal that never arrived. A regex that never matched anything.

And it is not one failure mode, it is six wearing one coat

Six failures. Six identical reports.

Six systems failing six different ways in one week. Every one produced a report that read as a pass: the check said nothing was found, the architecture said every layer was verified, the query said zero results, the rule said verified, the flag said documented, the doc said read this first. Not one of them could be caught by reading the thing it produced.

So the design rule

Every automated check must distinguish “I ran and found nothing” from “I did not run.”

Make each run emit what executed and what was skipped. A silent pass is not a pass.

And the one that cost me the most

It has never completed a single run.

Every layer above it is correct, and useless.

One number, if you only instrument one

Change failure rate, split agent against human.

Individual-level metrics never feed a performance review. Say it once in writing, then honour it.

Anthropic, on their own harness

Every component encodes an assumption about what the model can't do on its own.

They deleted their own sprint mechanism a model generation later. It was load-bearing, then it was dead weight.

If you take one slide away, take this one

Five things. None of them need a budget line.

  1. Mark every agent-authored change. Today. It cannot be backfilled.
  2. Publish ninety days of delivery history before anything changes.
  3. Make one repository legible. Your busiest, with a senior in the room.
  4. Extract two skills from people who do the work. Manual only.
  5. Start the outcome log on the very first run.

If you can only do one this week, do the marker. Everything else can start in month three and still work.

And here is why the dullest item on it is the urgent one

Four of these wait. One is a door closing.

Five ways to start, and what waiting costs each one. Publishing the delivery history, making a repository legible and extracting two skills cost the same whether you begin this week or in month six. The outcome log costs a little more each month, because early runs cannot be reconstructed. The marker decays fastest: it cannot be applied to work already merged, so every month of delay is a month of changes nobody will ever attribute.

So, to close

The agents are already better than the codebases they are pointed at.

Everybody wants the agent. I would rather be the one who builds the floor.


The whole thing in writing, with the sources and the parts that broke.

tjakoen.github.io/notes/build-the-floor

The judgment is human. The typing, by design, is not.

1 / 26 00:00

    Next

    Arrows here drive the main window · T resets the clock · the clock turns accent past 20 minutes