Speed limits, GenAI coding agents and Autobahns - part 2: raising the safe speed

generative AI   genAI development   harness engineering   fast flow   deployment pipeline   design-time coupling   microservice architecture   technical debt   decision making   architecture  

Contact me for information about consulting and training at your company.

The MEAP for Microservices Patterns 2nd edition is now available


Part 1 developed a driving metaphor for GenAI-based development: you are the driver, the coding agent and its harness are the car, and your code and delivery system are the road. And in the same way that the road determines how fast you can drive, the characteristics of the code and the socio-technical architecture around it determine how fast you should let the agent generate code, and how much cognitive debt, if any, is acceptable.

Part 1 also covered the first of the three ways of working with a coding agent: understand the road - what condition the code and the socio-technical architecture around it are in - which tells you the safe speed. This article describes two ways to raise the speed limit. First, you can improve the road: the architecture, the tests, the guardrails and the deployment pipeline. Second, you can improve the car: the model, the prompts, the tools and the workflow that make up the harness.

Improving the road - better architecture, faster automated tests, guardrails, and a better deployment pipeline - and improving the car - a better foundation model, better prompts, better tools and harness, and a better workflow - both lead to greater confidence that changes are correct and safe to ship, which in turn permits a higher safe speed.

Both of these improvements work the same way: they improve the conditions, increasing confidence that the agent’s output will be correct, and confidence is what sets the safe speed. Let’s look at each improvement in turn, starting with the road.

Improve the road: make a stretch safe at higher speed

Unlike a driver, you aren’t stuck with the road as it is. You can improve it: you can decouple the code, tighten the guardrails, limit the damage when something does get through, and speed up the deployment pipeline. What’s more, road improvements are persistent: decouple a module once, and every future change to it is easier.

Let’s look at each way to improve the road in turn.

The road surface: loose design-time coupling

Loose design-time coupling is the road surface. It localizes changes so that both people and agents can work faster, and the agent uses fewer tokens and less context. A tightly coupled - 25 mph - section becomes a faster stretch of road once it’s decoupled.

Guardrails: automated tests and checks

Some improvements catch mistakes and prevent a bad change before it leaves the road: fast automated local tests, type checking, linters, CI, and human review. The more reliably a mistake is caught early, the faster you can safely generate code.

A check that depends on somebody remembering to run it isn’t really a guardrail, so automate it. Pre-commit checks, Git hooks, CI jobs and automated pull request review can gate the change at different points, providing defense in depth.

Run-off areas: canary deployments and fast rollback

A run-off area limits the damage when a mistake does get through. The software equivalents are canary deployments, fast automated rollback and smaller batches. The cheaper a mistake is to recover from, the less it costs to be wrong, and the faster you can safely go.

Extra lanes: microservices with their own deployment pipelines

Just as a road becomes congested when traffic exceeds its capacity, a deployment pipeline becomes a bottleneck when changes arrive faster than it can deploy them. A handful of developers running agents can generate more commits in a day than a much larger team once did. Joe Magerramov’s “The Valley of Calm” describes how at around a hundred commits a day, a pipeline “stops behaving like a pipeline and starts behaving like a traffic jam.” Because batches are cumulative, a defect rejects the whole batch, and the commits that arrive while you fix it make the next batch bigger and more likely to fail again. His simulation shows that beyond a certain point teams end up in a plateau of misery where almost nothing ships.

The remedy for road congestion is more lanes. Similarly, as I describe in GenAI-based software delivery needs a fast flow architecture, the solution for an overloaded deployment pipeline is a microservice architecture. Each service has its own deployment pipeline, which handles fewer commits from a single team and verifies a smaller code base. Collectively, these deployment pipelines can process many more commits than a single shared pipeline.

Improve the car: strengthen the agent and its harness

Now let’s consider the car. Besides its speed, a real car has safety features: high-performance brakes, collision avoidance, seatbelts, and airbags. A coding agent is similar. The raw model sets the top speed, and the harness is what makes it safe to use.

Structurally, a harness is the coding agent sandwich: plain old code orchestrating on top, the model in the middle, and deterministic tools underneath. My own implement agent orchestrator is built that way.

The harness both prevents mistakes and catches them. As Birgitta Böckeler writes in Harness Engineering, a harness consists of guides that shape what the agent does before it acts, and sensors that provide feedback so it can correct course afterward.

Guides: shaping what the agent does before it acts

Guides tell the agent how to work: coding conventions, architecture documents, skills and how-to guides, and the deterministic tooling underneath - e.g. language servers, CLIs, automated refactoring tools - that makes the right thing the easy thing. Keep them in good order so that the agent has what it needs. The better the guides, the more often the agent gets it right the first time, so the less you have to slow down to check its work.

Sensors: providing feedback to the agent

Sensors provide feedback enabling the agent to course-correct: linting, static type checking, dead code detection, test coverage verification, and code health analysis such as CodeScene. I described some of these in a GenAI-based development platform. Those all run against the code, but a sensor can also report from the running system: observability data tells the agent what a change actually did, not just whether the code looks correct.

A check that is a sensor can also be a guardrail, and vice versa. When a check runs in the pipeline, it’s a guardrail that gates the change. And when it runs alongside the agent, it is a sensor that provides feedback so that the agent fixes the problem itself. The better the sensors, the more mistakes the agent catches and fixes before you ever see them, so the more confident you can be in its output, and the faster you can let it go.

In the same way that a better car lets you go faster on most roads without removing the road’s limits, a better harness lets you go faster with a coding agent without removing the limits imposed by the codebase and the team. That’s why it’s important to improve both the road and the car.

Summary

The safe speed isn’t fixed. Improving the road - the architecture, the tests, the guardrails and the deployment pipeline - and improving the car - the harness around the model - both raise it. They increase confidence that the agent’s output will be correct, and confidence is what sets the safe speed.

That’s what fast flow means in practice: moving fast without breaking things. Set the speed limit deliberately, then do the work to raise it.

Need help with modernizing your architecture?

I help organizations modernize their architecture to enable fast flow and GenAI-powered software delivery. If you’re planning or struggling with a modernization effort, I can help.

Learn more about my modernization and architecture advisory work →


generative AI   genAI development   harness engineering   fast flow   deployment pipeline   design-time coupling   microservice architecture   technical debt   decision making   architecture  


Copyright © 2026 Chris Richardson • All rights reserved • Supported by Kong.

About Microservices.io

Microservices.io is created by Chris Richardson, software architect, creator of the original CloudFoundry.com, and author of Microservices Patterns. Chris helps organizations modernize their architecture to enable fast flow and GenAI-powered software delivery.

Need help modernizing your architecture?

Avoid the trap of creating a modern legacy system — a new architecture with the same old problems.
Contact me to discuss your modernization goals.

Get Help

Microservices Patterns, 2nd edition

I am very excited to announce that the MEAP for the second edition of my book, Microservices Patterns is now available!

Learn more

ASK CHRIS

?

Got a question about microservices?

Fill in this form. If I can, I'll write a blog post that answers your question.

NEED HELP?

I help organizations improve agility and competitiveness through better software architecture.

Learn more about my consulting engagements, and training workshops.

LEARN about microservices

Chris offers numerous other resources for learning the microservice architecture.

Get the book: Microservices Patterns

Read Chris Richardson's book:

Example microservices applications

Want to see an example? Check out Chris Richardson's example applications. See code

Virtual bootcamp: Distributed data patterns in a microservice architecture

My virtual bootcamp, distributed data patterns in a microservice architecture, is now open for enrollment!

It covers the key distributed data management patterns including Saga, API Composition, and CQRS.

It consists of video lectures, code labs, and a weekly ask-me-anything video conference repeated in multiple timezones.

The regular price is $395/person but use coupon OFFEFKCW to sign up for $95 (valid until Sept 30th, 2025). There are deeper discounts for buying multiple seats.

Learn more

Learn how to create a service template and microservice chassis

Take a look at my Manning LiveProject that teaches you how to develop a service template and microservice chassis.

Signup for the newsletter


BUILD microservices

Ready to start using the microservice architecture?

Consulting services

Engage Chris to create a microservices adoption roadmap and help you define your microservice architecture,


The Eventuate platform

Use the Eventuate.io platform to tackle distributed data management challenges in your microservices architecture.

Eventuate is Chris's latest startup. It makes it easy to use the Saga pattern to manage transactions and the CQRS pattern to implement queries.


Join the microservices google group